查看: 16722|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # s. j" H* F. b& `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 L3 H, q5 X* E/ [7 m. p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 r/ p" @/ m8 p# f' l: wusage: himr <address> <value>. sample: himr 0x80040000 0x0' B" {3 X# u7 o. x. A

0 A; {9 R. l5 U3 E! p7 t$ q: Y* j% x- J
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& e1 X6 r% C! d. C1 A2 Y* F- e

  o1 C0 L" h4 Z- d, P补充内容 (2012-3-8 09:42):4 O3 @5 u! _5 ^* K
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 j; e. e: v: d$ A7 Y, x& |
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。" S: k5 N4 l, b' ]

6 E7 H' d. ^6 o7 khimr <address> <value>. sample: himr 0x80040000 0x04 z1 ]5 G8 [3 g+ G

! r$ S, @+ d& f例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" {# F' S$ S9 ?4 k  b& ]2 ^5 G
himr 0x80040000 0x002 _; q" d5 h* ?! d
himr 0x80040001 0x11
! B6 c+ [1 M9 _8 Y; J. h" ]0 h" Hhimr 0x80040002 0x227 R1 x& W- B/ D4 ?8 [* H
himr 0x80040003 0x33
, Z" D* D( i# e* K/ M" Qhimr 0x80040004 0x44
4 U# \6 K& L/ s: Xhimr 0x80040005 0x55, M" o  z: U& v% W$ O$ \

' x  J- D8 f) b" s) u0 U) z& l- ZSN也是类似。
3 [4 N! ^* Z) M& B; ]7 e) g0 a6 Y; f$ |$ k7 r0 a
现在主要是,谁告诉我们MAC和SN的地址?5 S9 m: }" H4 X
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % V( u2 Z4 U8 P7 `7 ^' L
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 y9 x0 I6 ^( K7 Q$ H; O) O
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ j) O: h" [. {5 T$ h! u3 Y) i; ]) k+ Y6 o/ D3 N8 G
修改的代码早有了。到今天不会编译。
+ {, i! R4 J" G9 D/ }* q$ l需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; E- {- a. Z- R1 \. G$ s
  2. #include <malloc.h>/ Y8 C4 r9 X+ y' k% `, d
  3. #include <sys/types.h>' y% l0 \' C4 V8 g7 m- y5 Z
  4. #include <sys/stat.h>) d3 O; i5 h% a# v: E2 B0 r
  5. #include <sys/ioctl.h>5 ?' i0 x: I  x5 Q
  6. #include <stdio.h>
    & V" ^) ?; C, Z
  7. #include <string.h>
    1 {. q1 d) l2 \" x2 r3 t9 g) e

  8. 4 Z% q& \) H: H
  9. typedef struct {
    6 H- ^. K" D3 D3 A* F% k
  10.         unsigned int        e2prom_cmd_sub_addr;; Y) n. \; h( K7 Z5 B
  11.         unsigned int        sub_addr_count;0 @8 |" Z/ Z0 k4 q/ m" ]8 V
  12.         unsigned char*        e2prom_cmd_data;
    # C8 A6 X4 b; X' n# ?0 H
  13.         unsigned int        data_count;
    7 M0 n1 S3 p3 ^$ g9 V& D
  14. } e2prom_s_cmd;: g" H1 S; x8 b
  15. # E- ~5 O9 Y9 T- V, \
  16. #define E2PROM_CMD_READ 17 \/ K8 B5 f' z) {* z( s! H: }
  17. #define E2PROM_CMD_WRITE 29 ~0 v2 a9 i) ?0 `+ G. v; t' q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + X: U7 i1 m3 @5 s' e

  19. % d- b5 S) v) t+ q! e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)/ B+ `; L; M4 a) v
  21. {# k+ ?4 U* i. l- }( T# k5 h
  22.         int fd, ret;% u  s/ h" O9 s
  23.         e2prom_s_cmd arg;& V9 `% N& [/ r6 p* p1 _4 E+ r2 O
  24.         unsigned char buf[0x18];
    2 Z) y5 |9 p# E& x

  25. $ t4 ~. t3 O8 n0 j$ V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 r- L2 E3 y: b  U
  27.         if (fd  < 0) {
      x$ N3 h& }5 [' B% d
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  T* L2 U1 _3 i$ s  X1 o
  29.                 return -1;# M! M/ w4 J1 e* Y' q; t& s/ k
  30.         }* S6 N2 l& }- e" y: r& ^
  31.         arg.sub_addr_count      = 2;. `+ ^4 R4 ^0 E' |8 ~
  32.         arg.data_count          = 0x18;
    8 V2 A4 u6 i2 C$ b# b
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ }, A( e% h3 X) F* l
  34.         arg.e2prom_cmd_data     = buf;9 h$ S. R1 ^( o9 s) G8 G5 N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 H* Q8 N, F. R4 ?' k! _& D
  36.         if (ret != 0) {+ j$ |/ a" E. \* h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( y9 w$ C. t6 M  ?
  38.                 return -1;
    7 B9 b+ C8 }  q8 A; [& t  h
  39.         }
    0 f+ R! J7 P  O) H0 u
  40.         memcpy(mac, buf, 6);
    9 o0 n0 G5 ~3 k+ o7 D% N- l$ J
  41.         memcpy(stbid, &buf[6], 18);
    7 X$ R8 G* W: I6 ~1 L- Q
  42.         stbid[18] = '\0';
    4 |5 C8 \2 e: d8 P$ i1 V( D6 |" u
  43. % L" x7 ^% j) {7 o
  44.         return 0;
    , G3 i, [' Y  |& N
  45. }
    2 V8 b1 |4 c+ i6 I( d4 A+ J- s
  46. - @* ]3 F# R# v7 d- H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - M) W3 f& R& X2 `6 s) Y8 N5 y3 D( ?
  48. {
    5 ?$ [- C4 p6 C, G7 j
  49.         int fd, ret;
    3 z7 Y! H3 _- ~
  50.         e2prom_s_cmd arg;' X6 J4 n) V" w# E; A8 D  ?& ^& S
  51.         unsigned char buf[0x18];
    : L( x9 K# G( E6 m

  52. - T% b. H$ V0 E7 t3 Y+ L
  53.         memcpy(buf, mac, 6);
    ! W+ ^$ e* g5 Y+ j0 R7 ^4 @
  54.         memcpy(&buf[6], stbid, 18);
    3 E  b8 C5 A6 U  e; c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  |$ I& Q* s( A2 m/ h8 k  ?
  56.         if (fd  < 0) {
    3 u. [( M$ e2 W. P% i5 N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 Q& S  P1 t3 Z% r! C
  58.                 return -1;
    4 y4 t8 \8 M. b9 V9 E% r$ ^8 G
  59.         }
    6 X$ X- P! I: n/ c* v/ }/ m* d
  60.         arg.sub_addr_count      = 2;
    ; K7 G3 x$ Q2 C0 d
  61.         arg.data_count          = 0x18;
    ) d% Y+ u* {7 {
  62.         arg.e2prom_cmd_sub_addr = 0x290;: t3 J- T' [- w$ t1 m; U
  63.         arg.e2prom_cmd_data     = buf;
    ' ~4 G1 l& S( @( f( F
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / o' D: T  F3 R5 l
  65.         if (ret != 0) {, t+ X) }0 Y% k- T" ]" n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ s4 Z, Y' b1 |5 w
  67.                 return -1;
    ( B* Q" ~/ ]' \$ \* I
  68.         }
    7 P7 f- P# g+ f4 \7 |

  69. - J: M1 s7 M" F3 z2 t. Y! ?9 J
  70.         return 0;8 L7 V* o: F( N- F6 l5 k
  71. }
    , T2 @: a0 t+ \7 r1 B' j3 D" Y

  72. ) s5 _2 W4 ?5 `
  73. int main()
    5 h: L2 @! C  G# I% r& ^. V+ b
  74. {
    + |  z: C4 t: I0 T  H
  75.         char c;- _0 y& K" J" w0 M+ v$ L
  76.         int i, macs[6];# q7 a0 \, G* g( n4 o
  77.         unsigned char mac[6];
    # S/ Y3 ~. Q2 U1 E) H+ l
  78.         unsigned char stbid[256];
    7 f* A0 M, k  X+ x
  79. 5 q" Q0 O0 x4 K; g. b
  80.         if (readparam(mac, stbid) < 0)& W* e5 f7 I* B
  81.                 return 1;2 G: ?# f! d. @8 d0 l! t
  82. ! d" ?# L  [# G0 h5 p/ i
  83.         printf("Current parameters: \n");. E6 V* c. G# v( ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 a* i6 J- [. n; X1 ~
  85.         printf("  STBID: %s\n", stbid);
    ( m$ |! m8 _- M. H) m$ k. j& z
  86.        
    8 H2 F5 @$ {5 u( o7 Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 F$ h$ x" T* P2 I5 [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  ]- V3 D& a, f' b% l
  89.                 printf("Input MAC error\n");  y2 O9 I, N* Y9 N; b8 O6 o
  90.                 return 1;
    ! S9 i' q+ ^2 t, d- m4 A' ?; V9 E# e
  91.         }7 e# m6 h0 o' \9 S) H2 n. C( b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 e' @% m9 H: f# T/ d
  93.         printf("\nPlease input new STBID: ");; w  v% f( g7 P% W+ r/ P% v
  94.         scanf("%s", stbid);
      p5 O$ T$ i. x5 s( Y5 @2 e5 V% N
  95.         if (strlen(stbid) != 18) {
    2 d7 x8 f$ m7 s) K4 r
  96.                 printf("Invalid stbid\n");
    & m5 h' M  R' j
  97.                 return 1;0 P, u8 G& d2 C8 h- E& i* }
  98.         }  t" \! M  s( c# ]; d
  99.         printf("\nNew parameters: \n");2 H, G; q" d& x8 k/ k% H8 |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 X! P% D6 H2 E0 |' w% \. H
  101.         printf("  STBID: %s\n", stbid);% Q* \% w' q1 [$ I9 T- l
  102. 4 i) P5 b# e9 \
  103.         printf("\nDo you want to change paramemters? (y/N) ");( {% C) g" A& Q3 s) Y: {7 ?* A- P
  104.         for (;;) {
    1 T' z4 o/ t( B
  105.                 c = getchar();/ y8 P' J- \, U6 \- Y& K
  106.                 if (c == 'y' || c == 'Y')- U: H0 j; W) R$ J+ N/ S' V7 [+ \
  107.                         break;
      N" h9 e$ X6 D/ j- J+ e
  108.                 if (c == 'n' || c == 'N') {
    + P1 s! H, T/ ^% F" X2 H% N8 d
  109.                         printf("\nAborted.\n");# m0 `/ z3 F4 a
  110.                         return 1;
    / g7 ]8 ]' o2 w, ?
  111.                 }
    9 U3 G, {* @) E7 S: N
  112.         }$ l! S9 ?* ]1 y7 ]. U, ]
  113.         if (writeparam(mac, stbid) == 0) ) S6 h# g! J* L6 C" y9 W
  114.                 printf("Parameters changed.\n");9 m/ \" j3 Y( E' F
  115. 1 i* P4 _, _5 D  Y( u* [0 m
  116.         return 0;
    * o/ J, Q, w6 \3 z
  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 S% K( e7 G, n
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: @" M5 h+ Z* A& h' [, I你用的编译命令行格式是什么?
! G0 ~, Q) O0 F( p
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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