查看: 17903|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ d9 p/ C/ m# K/ c' u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig. j6 F- A2 P+ g8 X% L8 X  L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 N! m/ n# X- H) R0 r; F
usage: himr <address> <value>. sample: himr 0x80040000 0x0
1 v$ _$ Q+ O  Q" G0 a; F
7 [& O+ l1 T0 D7 D& Y( W6 N0 P" |, q! X: P7 ?/ b9 M0 L
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( a) l) L, L/ r! h6 r! f4 E9 b, Q0 J

# r! i; [# X) O' k& i- r3 g+ W8 G补充内容 (2012-3-8 09:42):3 F; s5 }( M- B0 h
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数4 r+ L3 l# r6 j+ e+ o: m' W
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。5 {4 l, G# Z5 @  w  Q9 q6 [1 p

3 |# r6 H/ J) ^$ i# |( ^* ]himr <address> <value>. sample: himr 0x80040000 0x0
1 g) {" D+ s/ G4 Z
2 P7 W. i) s, _0 }例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 ]2 z3 }" r% o2 J7 t! @
himr 0x80040000 0x00
) F' Z8 n% }  S+ Ehimr 0x80040001 0x11
- L. C  ?9 w- w& n- n/ Dhimr 0x80040002 0x22. X) C6 t2 z% k6 C: H# D
himr 0x80040003 0x33! g' S0 B9 j$ P! L! a
himr 0x80040004 0x44
- U0 M/ y0 `2 e1 W" u( phimr 0x80040005 0x55" o+ v+ K7 d3 _$ ]% a, t) R4 h

6 f5 G% a0 @2 ^$ ^) j8 nSN也是类似。
: b9 s5 M7 P. }" {. j+ ~; B+ I" h7 \4 h& V- _' e
现在主要是,谁告诉我们MAC和SN的地址?
6 ]1 q% ^# w, }% v2 Z& T% o7 a
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  |  r7 Q% e# p1 a. f% X) _一直想找到运程修改MAC和SN的办法,苦于无解啊
+ C' q7 J; K0 ]2 R, Z) K8 w! u
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 Z1 u: _2 N; f/ ], }
! a9 i4 c; x9 {修改的代码早有了。到今天不会编译。7 L" ]7 W" V9 m2 o' [! S
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + h( R+ g6 |: A) ~$ U; |
  2. #include <malloc.h>. X4 K! O( b1 H+ G
  3. #include <sys/types.h>
    ( N# \2 W5 E( u$ \1 C- j/ a' E# K
  4. #include <sys/stat.h>" L$ m% ?- B5 n/ I8 w' x3 |& c
  5. #include <sys/ioctl.h>
    ( L3 n9 i! s; H' o7 L6 X
  6. #include <stdio.h>
    8 L7 D+ b4 ^+ W; ^+ ~% _
  7. #include <string.h>
    + a2 @' S3 _$ A7 r6 d, C  Q3 J7 G( }
  8. 6 M1 g( q9 b; z+ X) F
  9. typedef struct {! M6 G/ K& |- r
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 ~0 @# ~% Z( N
  11.         unsigned int        sub_addr_count;! Z  T1 E% w5 E1 w/ B
  12.         unsigned char*        e2prom_cmd_data;
    ! T6 v) j/ h  a2 @6 D4 p  Y# e% w: r
  13.         unsigned int        data_count;1 [4 w$ U3 L0 v, Q/ O
  14. } e2prom_s_cmd;! G" h6 ]/ v' r
  15. ; q: T( f+ j7 o% r
  16. #define E2PROM_CMD_READ 15 l# I* U* ^* p5 y) C6 X' g4 F' H
  17. #define E2PROM_CMD_WRITE 2
    - W' \: E" d6 k$ S. _0 s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / E: h" g" F* K, T

  19. - _' ^2 {% `+ h4 a0 z  Z, ^& O$ N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" f/ z2 A1 D/ V, x. X3 ^
  21. {% Y$ L2 a, M6 r
  22.         int fd, ret;
    ! V  A. D- \& {! b: t4 E
  23.         e2prom_s_cmd arg;
    : d/ y" @) C1 F8 `3 j9 T3 `! K$ E
  24.         unsigned char buf[0x18];! E" f6 }4 ?- j: X% e3 \/ ^

  25. , _  @# M6 V6 X9 H/ B. E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 K1 v4 O* M' W: s. l2 X% r+ t
  27.         if (fd  < 0) {
    4 @) }" `5 y+ A
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' G, E% ?. Q" U! Q% E3 S
  29.                 return -1;
    5 F8 ?  X9 Z5 U' b" I+ Q# e
  30.         }
    1 U0 t8 b3 W7 j0 W
  31.         arg.sub_addr_count      = 2;4 g7 X2 c$ H: s. `0 q' O
  32.         arg.data_count          = 0x18;/ r+ o& e0 p7 s' k9 C! h# v
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 C7 z$ I8 C: [5 I% P
  34.         arg.e2prom_cmd_data     = buf;  g, Y8 ]( z/ b& i! L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * n* G' b% F! _; d  v- [" G
  36.         if (ret != 0) {
    ! w4 m" T6 ^1 h2 m2 |
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 O0 @' D( f5 j
  38.                 return -1;
    # Z3 B: x9 z& W8 k, `! d$ A: t
  39.         }
    ! ]% t" {  h  C2 S1 r) Y, Z. T
  40.         memcpy(mac, buf, 6);
    $ _! x/ T, r& z& u3 `7 O
  41.         memcpy(stbid, &buf[6], 18);
    & i' U" f' x; s# l6 s8 u3 ]
  42.         stbid[18] = '\0';+ B0 ?( G$ A5 N- ?  q# @8 A2 }- H
  43. / A5 }5 }8 K; D( p  l  }
  44.         return 0;
    6 R/ y- [0 B2 F
  45. }
    9 z# D& O' h5 ^8 ?1 O6 z0 H' t
  46. # Y" h6 Q1 u$ n3 ?: ?0 p3 r! d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ f8 t1 ~: N) E9 u
  48. {  F8 {, i6 r8 r( o
  49.         int fd, ret;/ ~$ k7 P) d$ t3 O
  50.         e2prom_s_cmd arg;' z9 r: Z9 {2 u1 k2 k
  51.         unsigned char buf[0x18];9 ~! C3 m, y( W
  52. $ U6 X1 U/ `- w# ~
  53.         memcpy(buf, mac, 6);
    ' F3 J% f: J, ]& O  B
  54.         memcpy(&buf[6], stbid, 18);) G, i% K2 }( ?* E5 u% A( f: D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( L8 t* E& S" y# I. f  m
  56.         if (fd  < 0) {, }# I1 J, v! @- ~% j) L" I
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! K$ Z: M$ R1 ~3 W+ }, G2 O' X
  58.                 return -1;5 b, I! t! ~7 y$ T
  59.         }5 Q2 w$ m/ ^/ ^. V) ?" Y
  60.         arg.sub_addr_count      = 2;& j  [% i/ F2 U
  61.         arg.data_count          = 0x18;: W% @. q% B! V5 Z- ]* u+ @
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 g6 [) A* i  x1 k
  63.         arg.e2prom_cmd_data     = buf;3 }+ W4 `- ]* _5 o+ n2 W9 E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  K8 L0 D3 \) U. Y! b4 Y
  65.         if (ret != 0) {$ x9 n& \7 e6 W$ l/ Q  H: t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 y; Q6 M/ V1 a6 y# @- ]
  67.                 return -1;
    ( B, m* `& w$ {* `. [6 I
  68.         }
    % l* U- c" a  \7 {1 d0 a, A2 Q
  69. 0 E4 U! F6 u0 i) V* j
  70.         return 0;
    4 P! @8 G$ t2 G8 N
  71. }/ \& p, n$ p$ ?& y

  72. 2 ~  e: O9 v+ m% D0 C" G7 k
  73. int main()
    ' F, l/ }" E. S  ?; v3 R. u6 e
  74. {
    7 k/ _3 S" A+ s" O3 p6 }9 E
  75.         char c;& F: |; }1 c$ Y5 M' h: [5 K
  76.         int i, macs[6];
    8 F7 i# ]2 ~) \' P; l5 o
  77.         unsigned char mac[6];
    & n+ q4 C/ e' y/ U( M
  78.         unsigned char stbid[256];
    8 i) T7 C, g; v- M3 m. e
  79. 0 s- N/ [2 U% j& o+ Y* K
  80.         if (readparam(mac, stbid) < 0)' |0 o, f  Q2 h! t
  81.                 return 1;
    , u: F, l6 k9 `4 ~: R
  82. ! l; }8 k- L, l6 k- |1 ]$ U2 U
  83.         printf("Current parameters: \n");+ t9 _' W- ^* b. `  W; _9 v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / i6 f8 r3 d3 m; C, U
  85.         printf("  STBID: %s\n", stbid);# H- e) ?. W' K* n$ Y
  86.         0 g7 k9 C3 j. @; a; q5 L2 q7 j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; V) J( w& ]" y( M  ]. w3 e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% {" K) W8 R1 ]0 c* D' B% f4 Z/ T4 p
  89.                 printf("Input MAC error\n");4 ^' b  [" I- |/ O; l
  90.                 return 1;
    * E, Z" S: t4 n) c4 q: S' x0 a" u
  91.         }
    : B7 m& r8 r$ k6 [0 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 k  j) ?9 B- Z
  93.         printf("\nPlease input new STBID: ");0 T8 ?0 a5 v8 q
  94.         scanf("%s", stbid);, H2 O, m+ `1 l8 @6 X/ p
  95.         if (strlen(stbid) != 18) {8 V2 ^0 \9 k# \! X1 G1 i
  96.                 printf("Invalid stbid\n");( W2 K6 E1 Q6 ^5 T: R6 F8 j
  97.                 return 1;- p2 x  h( P+ p. [" E
  98.         }" G4 q+ I6 H1 M: S
  99.         printf("\nNew parameters: \n");/ g0 d1 {$ ^: W9 }7 O4 [4 [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! n1 V. C) L+ K
  101.         printf("  STBID: %s\n", stbid);
    8 c+ {1 E+ L/ H* }5 s8 M
  102. 5 J8 l  a. I% L! a% c
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 t, h5 J' I. ]# F+ i' o
  104.         for (;;) {' }6 ]0 A  d5 J* t
  105.                 c = getchar();
    5 @9 F& S4 L: ^$ A
  106.                 if (c == 'y' || c == 'Y')
    ' X/ C8 o6 t$ l2 g
  107.                         break;
    6 o: y2 c. Z$ H% ]
  108.                 if (c == 'n' || c == 'N') {
    ' ~1 `# R) E- i: K0 w
  109.                         printf("\nAborted.\n");
    7 ^$ t! @! _3 @! v9 C  i
  110.                         return 1;: w# f" b8 Y6 F4 c- D$ n- d
  111.                 }
    8 p7 n. H: j9 i' r- X: }9 y$ a
  112.         }
    : S% Q$ r6 S  w
  113.         if (writeparam(mac, stbid) == 0) 3 h- v3 f5 r) u
  114.                 printf("Parameters changed.\n");
      s1 o! W* c1 {+ A/ g. ~$ c  b, h0 |$ F9 h
  115. 3 e" u( A$ a. e% L/ n) T
  116.         return 0;: m0 J5 M7 Y' t9 a/ s
  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   V3 d# \/ E& X4 P& N; g+ c
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 O: y# X" D/ W& F9 J你用的编译命令行格式是什么?3 G; t9 A* G  E9 ^7 o; F# y
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部