查看: 17253|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( {$ ^0 |: _3 k' @- |# l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig8 @6 E* W8 R  a2 b) q/ H, x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& u3 K# l9 o% Y2 [7 k+ g& K3 }( Q+ Rusage: himr <address> <value>. sample: himr 0x80040000 0x0
$ P  e) k* A- K  i/ G. z  p2 P4 p9 J' t- N9 u' z6 @# t/ k
  m/ ^; y- h( c, [% h4 C4 O% U# l
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
9 S" r0 x! A* X; i/ s
" N# z4 h; P; _1 Q补充内容 (2012-3-8 09:42):
) a; N' G' P# C1 I( uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数/ Y/ Z6 r% ^# C% C* B; H' O
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
, S6 {5 \2 H9 X; R" O8 @6 M3 M  U) u" y# {
himr <address> <value>. sample: himr 0x80040000 0x09 [  n& x& M. u3 F5 ~
+ x. L6 I: Q* l$ f. F
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' U4 I) ]+ j! ]+ E3 S+ Ehimr 0x80040000 0x00
+ O0 t! _% `& M! A/ U4 Z, n! nhimr 0x80040001 0x11
4 z0 |! M6 _; s. B( Mhimr 0x80040002 0x22
7 s1 ?3 A% i( Dhimr 0x80040003 0x33
/ A( ?7 H: _3 T7 {/ O) Ahimr 0x80040004 0x44" i0 q7 j8 u7 V
himr 0x80040005 0x55, _0 p6 U7 k: k
( _# ?8 L, q$ o
SN也是类似。( H7 D/ \; Z# W8 [+ I

& s, x5 D( N6 z9 I# ^: l( b现在主要是,谁告诉我们MAC和SN的地址?
( O' a  v& a5 \0 I! z2 a
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 d6 [7 O, H9 Z6 X
一直想找到运程修改MAC和SN的办法,苦于无解啊
9 K% `5 ]7 M* \' ^
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ P7 Z' l6 A- z% E3 i8 Y. x4 @' s5 O) |+ b# P
修改的代码早有了。到今天不会编译。
" ]: e) [! r) \需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / }9 D3 o2 ^' t" j
  2. #include <malloc.h>
    " _. @2 Q+ h5 G; l& I  K% e9 j
  3. #include <sys/types.h>8 b( `; g& K. k* w
  4. #include <sys/stat.h>
    ( V. _% q2 h$ m' m  }; I
  5. #include <sys/ioctl.h>
    - `! N) ]" s& Y* q
  6. #include <stdio.h>7 p- C4 T7 ?5 A
  7. #include <string.h>, r# g0 W; O2 k6 l4 t9 c4 P- G" a

  8. 1 i* J$ X/ W& [& l, Z1 p
  9. typedef struct {
    ' F  o  s* M0 R" a  o% W
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 |* y: K( K. X% r! y6 w0 C
  11.         unsigned int        sub_addr_count;- }0 O2 B" a6 [3 G& y# h7 w
  12.         unsigned char*        e2prom_cmd_data;
    ' P0 S4 j( x: J& I5 x
  13.         unsigned int        data_count;" b: h2 e" T6 _* _# q; i$ A; _: Y
  14. } e2prom_s_cmd;% p7 s4 ~/ f1 U  X9 K

  15. $ n1 v" g, r0 k# n
  16. #define E2PROM_CMD_READ 1
    9 G; w' D: S# P3 s+ K# N
  17. #define E2PROM_CMD_WRITE 26 {, C2 d; V3 L4 N1 ^4 x, {( c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 F3 d+ `) D8 [. B

  19. # ?# N9 `9 d5 ]# s% @4 ?" J1 @, R1 m( ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 U) `4 X) l/ @3 j
  21. {2 X; b/ D6 _1 p4 v" O7 |
  22.         int fd, ret;
    " T; f, w1 Z; Y8 z3 ?6 W
  23.         e2prom_s_cmd arg;
    * j) L3 v* p* y! l' C
  24.         unsigned char buf[0x18];
    ; b5 u: P1 X9 {# j: k
  25. * g" j( x! q; [: N5 q3 @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 ~( O) }6 m, T7 j! h0 j7 J' W
  27.         if (fd  < 0) {3 F# W; m/ c3 P! W# M' H, `# ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  p& c# r; ]2 B  k9 v9 }3 X
  29.                 return -1;- f7 C# @# A, \# W6 a
  30.         }
    ' T  m1 k/ M* w9 u* V
  31.         arg.sub_addr_count      = 2;% }+ L  c/ @" K3 k7 ~
  32.         arg.data_count          = 0x18;
    1 `' M* L1 W" ^" [& w  Y- a
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) R1 g4 y' v% m+ f& J7 R" R- C
  34.         arg.e2prom_cmd_data     = buf;
    ( R: }( v, e0 z3 F3 C2 y/ \& q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , c& i0 D( d$ V2 u
  36.         if (ret != 0) {; p& d& G2 L: S' R+ u; W
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - b3 ^3 k# s* q0 d2 s# s
  38.                 return -1;( `3 ~* u) g! E/ A3 L; y3 S
  39.         }) q, U! F: [6 s6 }  a
  40.         memcpy(mac, buf, 6);. p+ ~( e9 x2 _: N7 I
  41.         memcpy(stbid, &buf[6], 18);
    " f% C$ n: s- B( y
  42.         stbid[18] = '\0';
    % x* M) {: P* C3 k
  43. 2 E& L4 u, Y; E. A: r: k
  44.         return 0;
      P1 `, N6 j7 r5 y, d0 X
  45. }  Y5 f( f' S4 J" [( w8 H; Y  W# F. ^
  46. 4 r+ }9 t# {6 Q/ o$ d' D' Y" y, T  e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): P/ y6 _  C% ]
  48. {
    4 _" C  k5 O$ Y0 R- [
  49.         int fd, ret;
    ' R, j8 D% b) o7 b
  50.         e2prom_s_cmd arg;% b3 z8 [, U' I! t% v! D
  51.         unsigned char buf[0x18];0 Z, r1 G/ o6 |" e6 m4 H
  52. " A! W+ {# s8 ^/ M: l: z# ]
  53.         memcpy(buf, mac, 6);
    6 m' K  P. S, i9 R! q( w" m
  54.         memcpy(&buf[6], stbid, 18);5 B( k$ l& G2 m1 k) t# l
  55.         fd = open(E2PROM_DEVICE, O_RDWR);* v/ A! u; ^5 O3 E4 p( N3 i
  56.         if (fd  < 0) {
    - f& V# p# c# V+ \+ J& Y1 _4 ]
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 |- j  |2 M$ N4 e  Y
  58.                 return -1;
    . ?, j- J: t: z/ h2 }- W0 m$ A
  59.         }( B# ]+ O4 r. s+ u
  60.         arg.sub_addr_count      = 2;
    0 @5 c. S) \* K6 F0 y( Q) {
  61.         arg.data_count          = 0x18;
    % C) _+ B5 D# G  G- t! H
  62.         arg.e2prom_cmd_sub_addr = 0x290;2 _( Z/ m' d4 r6 E
  63.         arg.e2prom_cmd_data     = buf;
    ' P( X/ \; O4 A) V- v# g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ' R6 J, z3 ]) a4 O2 [
  65.         if (ret != 0) {8 r! a8 x6 H5 s2 t  E" N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( @: n# s/ v9 O9 e
  67.                 return -1;
    ! b& i# S  `2 [, }: c. A
  68.         }5 ^# j- y* M! f* \% T
  69. 5 B4 v$ o. p2 Z* Y! S5 x
  70.         return 0;  P% N+ E7 u6 v! l
  71. }% k9 q% j& a& V3 b& P+ i; B/ z
  72. ' D. ?# D5 [+ ]9 I3 ?4 o
  73. int main()
    4 w$ h" i/ j. ~2 K/ C: @( W+ {
  74. {% ?9 k# X; H" d) D* j
  75.         char c;
    0 t; f- J$ Z" S( w, {+ m% ]6 e* ?
  76.         int i, macs[6];
    & I+ R2 m% ?0 m
  77.         unsigned char mac[6];: Z3 _* D8 x5 Q6 X
  78.         unsigned char stbid[256];
    3 _. q3 v8 l' O

  79. + a/ t9 G1 k  J. S4 |  z7 p7 R0 B
  80.         if (readparam(mac, stbid) < 0), G# W3 m! D& P5 c
  81.                 return 1;3 {- L$ h( c: s2 Z

  82. $ O  N: b1 `& n! @8 L3 J
  83.         printf("Current parameters: \n");/ m; @( H7 [1 x5 }* \# u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , C+ j' \$ H( X$ Q8 J2 q; j! |- M
  85.         printf("  STBID: %s\n", stbid);/ h7 `( D( {+ ]4 @. J4 `1 ^4 ]5 @
  86.        
    # f4 a. I. `/ K% a  {- V4 f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 v' z8 ^. f! f% _& [2 s- C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 z7 N8 {. w% o) I5 R/ `
  89.                 printf("Input MAC error\n");
    3 F4 {0 F  r. r
  90.                 return 1;
    2 N* i% B" }( a/ e
  91.         }9 K' f/ Y8 r& Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];; p) L. @; e* L& B! b  [' o
  93.         printf("\nPlease input new STBID: ");
    : _2 {) j/ L4 ]! y) c$ e' X& Q
  94.         scanf("%s", stbid);
      G2 \! x. Z, j9 e( Q
  95.         if (strlen(stbid) != 18) {
    ( g1 R8 h, n+ r4 i! W' W7 `1 W/ n' X
  96.                 printf("Invalid stbid\n");. d( b+ k& K9 H$ e
  97.                 return 1;; M- ^5 R* |2 \1 K( J/ e  ]
  98.         }! O) H, j9 a* C+ ]+ R
  99.         printf("\nNew parameters: \n");: |; c; e2 }. S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 G$ `, A6 l% R: b9 r5 X
  101.         printf("  STBID: %s\n", stbid);
    8 u7 U' T( a; Z; H
  102. ; j" j7 |" f' Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 ?8 M3 Z8 O2 `3 K
  104.         for (;;) {$ A( q$ |, |& i5 D  N" l8 B
  105.                 c = getchar();
    9 D) v6 [. [3 t: |
  106.                 if (c == 'y' || c == 'Y')! N2 c3 e& ?' z. c, E" \1 u
  107.                         break;
    2 o' r( |- d1 F7 O* h- c4 [
  108.                 if (c == 'n' || c == 'N') {
    " [' a' U( z4 r2 u6 @
  109.                         printf("\nAborted.\n");+ T  r+ ^9 m/ C  o+ ?  J! y
  110.                         return 1;( I& k) z- Y( [$ P# d' f
  111.                 }/ t+ b7 _! B1 j
  112.         }
    " {, l9 a. f5 C
  113.         if (writeparam(mac, stbid) == 0) 5 G7 y' @8 W8 N
  114.                 printf("Parameters changed.\n");5 ?$ |- ^3 o! X% E

  115. 5 }* v7 {6 Z, |% o0 b3 m0 \. @
  116.         return 0;
    & g+ d5 \. Q. j2 z6 V
  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 5 T/ Y) g0 C+ ?5 C4 e  _) E
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ ?+ Z: k) `  k- y% Q4 x; k/ b
你用的编译命令行格式是什么?2 I4 ^9 u, ~* P* @2 [( @2 b
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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