查看: 16906|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: m4 x! |$ s( W! U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- g6 {" d$ Q8 x$ ?$ s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 ?! {  u" }1 M' A6 Iusage: himr <address> <value>. sample: himr 0x80040000 0x0& R- ^% m+ ]% h& t/ u

2 A( i+ c5 N- M- F2 n& i; e
. D, D' C/ F7 J不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 u: h) S# u# x

. ^- x7 U; u9 C0 h/ h# o补充内容 (2012-3-8 09:42):% S8 L, ?  Q6 b
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
4 y; ]4 X/ E( g1 Z3 V这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
5 j" E9 n( W7 k' u1 f) ?
  Z$ }6 y3 o/ n3 h6 }" _himr <address> <value>. sample: himr 0x80040000 0x0( {4 I5 u3 l5 G5 S5 [

( @) M& {; y: A例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' ^( a8 X8 t$ U
himr 0x80040000 0x00
$ T0 A: O5 O1 n6 h. ]himr 0x80040001 0x11
; @: t6 P5 K+ G3 A0 m+ fhimr 0x80040002 0x227 s# `3 R* i# ~- p% D( o4 b
himr 0x80040003 0x33/ @$ v, ]; C6 S7 Z7 K; P5 U
himr 0x80040004 0x44
) G9 n. C, e+ I- k( ehimr 0x80040005 0x55
& c, C2 P- y' a/ ?2 F3 q8 j1 k& B- D1 z6 j
SN也是类似。+ w9 u3 F! g& s. O
4 i' [8 ~# C/ j5 s3 [
现在主要是,谁告诉我们MAC和SN的地址?
; N) l/ o0 q+ ~% V9 x! K  v1 P
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! @- b3 P1 v9 K9 Q+ z- N6 v一直想找到运程修改MAC和SN的办法,苦于无解啊

9 T5 a5 J3 R  B" L6 }源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 h5 ?, d& q/ E/ N
  P3 b! b& n% o
修改的代码早有了。到今天不会编译。, N* S9 t5 m9 d( ~2 R
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    . k1 \  ^* Z1 n8 z: h+ G
  2. #include <malloc.h>
    / @& c2 u- S/ D. e
  3. #include <sys/types.h>$ S2 L1 B. f. N
  4. #include <sys/stat.h>
    4 I& F! t. g, G) N
  5. #include <sys/ioctl.h>6 o3 A9 a" r- v0 H$ L) A3 [& x
  6. #include <stdio.h>7 e) Y* |9 X# V9 V9 p8 X4 r
  7. #include <string.h>; V- U+ t4 l, g- p3 Z, L

  8. 1 i- G4 S7 f8 T3 O
  9. typedef struct {/ D" l& E, T! e3 ]: Z
  10.         unsigned int        e2prom_cmd_sub_addr;+ M$ s+ n: u1 r1 g" d. K5 [
  11.         unsigned int        sub_addr_count;8 C+ C8 P# ^7 d/ [8 K, A
  12.         unsigned char*        e2prom_cmd_data;3 `: O9 Z2 c+ ?, [3 E
  13.         unsigned int        data_count;: n; V1 E6 Y. u, D( ^3 ?- _& W2 p
  14. } e2prom_s_cmd;
    # Z" C' k3 k% M; P' ~8 o
  15. 8 f5 `& N  p+ \
  16. #define E2PROM_CMD_READ 1
    6 u, g  s6 x" u& w
  17. #define E2PROM_CMD_WRITE 20 `# p7 V' s, H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - p& t5 P. D8 Y

  19. ) `3 T4 c) B; }: d) p: T2 `- z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + A. o( O6 |, {) |* j) a3 m
  21. {" i" ?9 s8 E) g
  22.         int fd, ret;
    ( m! R* Q9 }  F: q: a; S) p' j4 C
  23.         e2prom_s_cmd arg;/ p' y! P3 S. m1 T
  24.         unsigned char buf[0x18];
    2 ^, d0 j8 z  ]5 {% u; m4 M

  25. ! B6 f  R( V" a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 a4 p% ~+ C: ^( [, A
  27.         if (fd  < 0) {
    ) b8 G; ^* W! M2 t
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);; o4 a# ^* r8 o2 `0 ^) p/ t0 Q
  29.                 return -1;9 o" H% N! a' O& W* M2 H2 }
  30.         }
    % C0 l7 _( z, W8 P  v& f
  31.         arg.sub_addr_count      = 2;0 J) v" h2 ~; j$ |, P7 `3 ?1 S
  32.         arg.data_count          = 0x18;
    + q! Y% f' ?  L  A2 w4 ~( e5 N
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) I+ @% x4 {$ ~5 d
  34.         arg.e2prom_cmd_data     = buf;
    3 X: P. S' [& H" l( Z( K$ e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ H) p, A4 @  @% x6 g) v
  36.         if (ret != 0) {' |3 B+ W1 B; v1 r. c% P- u# }- b$ R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  K* Y( b: e  w+ \3 ~7 I
  38.                 return -1;
    : t' N: I3 B4 H. W& E! e
  39.         }
    + M4 D2 ^* P6 y7 S; M
  40.         memcpy(mac, buf, 6);
    1 u+ z) X' ?% l7 V
  41.         memcpy(stbid, &buf[6], 18);. {7 \2 n1 R; K; w9 J7 f! S
  42.         stbid[18] = '\0';
    ! I& s* W) v% j- ^
  43.   B! ~! z" c0 [1 I
  44.         return 0;( v" d& k( j2 ?/ s
  45. }" ^- S: g0 Y8 K! d/ G$ X

  46. 8 K+ U  x9 k# V6 L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( j/ C1 w7 T  ~) W; k$ @/ l4 n
  48. {1 t3 i: t6 S2 w7 Z( N; m& P" t  R' C
  49.         int fd, ret;% [2 F- a+ Y4 y2 u1 m) H4 t% i3 S; N
  50.         e2prom_s_cmd arg;
    ' n2 A% p$ c" p, N6 }& r
  51.         unsigned char buf[0x18];
    + |# n$ W5 D& f6 d. j6 p0 Q

  52. ' Y: {6 c1 a! P  |% D( i2 g
  53.         memcpy(buf, mac, 6);
    $ o$ |  A% _/ v4 x& a9 Q& k
  54.         memcpy(&buf[6], stbid, 18);9 T1 E9 _7 V+ e, j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 ~4 f0 J8 E) W* h8 J0 w1 M
  56.         if (fd  < 0) {
    3 w, D6 @* i% {" t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % A% A9 `3 Y/ T
  58.                 return -1;
    4 j7 |# S' U' w3 [$ A
  59.         }
    3 o6 L: L# Z9 X. b/ }0 ]
  60.         arg.sub_addr_count      = 2;
      P+ k: Q; ^! F
  61.         arg.data_count          = 0x18;! f6 Z  N, X9 y+ \! ]( ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;' q; L3 u: p! [7 {, h) a; A& e! s) e
  63.         arg.e2prom_cmd_data     = buf;$ Z# \8 s5 o2 z' k  _1 _+ v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! p0 Y0 j' v$ }, K4 u
  65.         if (ret != 0) {0 g; t! U; W2 I( e4 ?
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! h. d- |/ r1 V
  67.                 return -1;2 G* {1 L, {+ P) f$ G
  68.         }
    0 i1 Q/ }# ^' i

  69. 2 k' k- H" s, g4 @# Q* z
  70.         return 0;
    ( y" B5 t, t: E) N! f
  71. }
    ' T6 d; D5 |) ?% x) u' T
  72. % A* i' |7 A, N/ |; ^' b# j
  73. int main()
    3 x! O! q8 J0 k: a0 V/ [0 \
  74. {
    8 V+ M$ R$ F4 E/ Z( l" \
  75.         char c;
    ' E& s2 k( ?4 o) }/ C0 w
  76.         int i, macs[6];" o  T+ [3 x+ }/ L' @2 z0 h
  77.         unsigned char mac[6];
    7 {% r8 @* Y3 e/ x' I
  78.         unsigned char stbid[256];( q4 Z& ~# u8 b

  79. : `0 |) c! B6 O) w/ K
  80.         if (readparam(mac, stbid) < 0)" _- G' E* _; N0 D* C2 P3 N
  81.                 return 1;
    5 g; B8 o! Q" L7 |6 e

  82. * t; M, F4 ~% `# A
  83.         printf("Current parameters: \n");
    - E4 A% D$ L! B, E# R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- ]5 G: e. J" R7 x+ Q9 N
  85.         printf("  STBID: %s\n", stbid);( @' j4 G0 h  ~3 ?7 J. p8 I" B
  86.        
    # d% y- I, a) C; P' B" _' h9 j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 A- M3 s, K1 i" g) B+ R
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . \( R. g( A8 l" x) i3 h
  89.                 printf("Input MAC error\n");
    ! u& t) [" a7 J7 X4 X
  90.                 return 1;# L, A# @8 q8 @" N
  91.         }4 Y: s; y/ E$ K) F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) V4 Y+ L) v4 v$ |
  93.         printf("\nPlease input new STBID: ");. @. l: y( G$ n$ Z* X: M+ u
  94.         scanf("%s", stbid);* W" F' @7 ^  l+ Z% M. \+ B0 d
  95.         if (strlen(stbid) != 18) {
    ! u1 o8 p: Y5 _8 E5 X! j; B$ M8 [
  96.                 printf("Invalid stbid\n");
    + d: z. U# y6 ]+ b9 D# D
  97.                 return 1;  _  Z5 G# B' S7 K
  98.         }
    # l* D, ]! l1 @
  99.         printf("\nNew parameters: \n");
    8 I0 L$ S* f' f4 R& M& ^: k" q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ p2 i+ d& c+ I7 B- j
  101.         printf("  STBID: %s\n", stbid);
    / B) U+ D, r5 Z5 C

  102. / |/ \$ ]6 Q+ z
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( N# w) b  X- J) k
  104.         for (;;) {6 \- |- z, x9 ]* _3 G
  105.                 c = getchar();8 o1 |+ p% h) R/ \( b
  106.                 if (c == 'y' || c == 'Y')/ f) K% Y& _/ ~  h+ V5 A
  107.                         break;1 m1 g% v. ~9 V; P  }% P
  108.                 if (c == 'n' || c == 'N') {
    3 z: o* Y) n8 {( W0 O) W8 Z
  109.                         printf("\nAborted.\n");
    9 C1 d* o2 C5 K( `; B2 V
  110.                         return 1;
    ( ~4 E: I, \0 w& w" L3 I7 J
  111.                 }
    $ E( N  J5 F/ y" u9 |- L: D/ R
  112.         }
    % s% D7 [" I4 h) i: c
  113.         if (writeparam(mac, stbid) == 0)
    & r# X0 X; @- Q
  114.                 printf("Parameters changed.\n");0 w0 f  |; [: m& f6 N2 [
  115. 8 y  V! ?% v4 P' o+ E0 W# r
  116.         return 0;: ]8 C; |6 u+ R6 |% x2 u6 ^$ W
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24
7 G1 D& O: u) E3 w' f在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: R& G5 |$ P. x. R0 q你用的编译命令行格式是什么?9 R5 G: G% z$ h$ Y& @
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部