查看: 16641|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ P' Y6 [+ ^1 ]+ h, p/ Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - ^7 o( D( ~) t8 L# e0 B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" d3 @% B+ P, z' ]- l( o: J
usage: himr <address> <value>. sample: himr 0x80040000 0x02 Z/ A/ O7 `% h+ c
! j2 d7 @) ]* ?5 g" u
0 k6 @+ Z: [& i5 H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
0 Z+ Q' T7 ?! D* l) J2 X5 _- z4 g2 q$ \( L, [5 x
补充内容 (2012-3-8 09:42):' p& `* F) E( U" F+ i) k1 G9 M
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 \' c; D' U+ _- q2 I' m这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。. X- N) i- r& Y/ L0 T
  H3 l( t3 R& C" J
himr <address> <value>. sample: himr 0x80040000 0x09 j/ E2 j- n% ]( R2 ^  @
* W- ?: F9 \" r1 V( n
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, d/ z9 Y7 B) U4 @/ V+ Ihimr 0x80040000 0x00
: p! O% Z- z, uhimr 0x80040001 0x11
0 p5 A  q& ^( u. t6 q% {' t& [3 D- Hhimr 0x80040002 0x228 b; h6 Q$ ~8 ]0 D6 u" @1 d
himr 0x80040003 0x33' F1 }7 @" U  Z: R. F
himr 0x80040004 0x44
, n" `& x5 j& i# @( _: {himr 0x80040005 0x55, l6 J# J, Q4 }5 ^$ R) l  I. F4 H1 Q

. ^1 H* h* @2 @1 r5 E- B, p5 O) USN也是类似。
$ |0 P# u. t8 f+ z8 p6 }0 E7 v* k
) `6 e- V# f* C5 X: U9 b  U! p  m现在主要是,谁告诉我们MAC和SN的地址?1 ~' r0 v6 M+ E! x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 Y( {% v, [6 ?- H+ {一直想找到运程修改MAC和SN的办法,苦于无解啊
, ?, g$ L* N0 w& t( ]4 A5 ?- D
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 _! n1 |* Q3 a2 e0 o) u
" h% P4 e3 a2 a( V, ^* ~修改的代码早有了。到今天不会编译。
& C) ]% ~& j$ B, |) T$ s需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* c5 U5 {% g9 V
  2. #include <malloc.h>9 n# X; ?2 F, A2 {
  3. #include <sys/types.h>8 D- j* |2 L4 b& ~8 e8 J1 ~
  4. #include <sys/stat.h>
    & F: g5 _. J$ l* ?, C) l
  5. #include <sys/ioctl.h>% Q! w$ x; T3 n. R
  6. #include <stdio.h>/ {; r* c2 \- A3 R/ t
  7. #include <string.h>( r3 Q# Z/ e1 F% B
  8. 6 L6 m& x) h# O: ?" k$ k* m
  9. typedef struct {. ]6 n8 r( B% K5 ?/ j% T$ W, `9 G
  10.         unsigned int        e2prom_cmd_sub_addr;7 W' d  Z8 S& v1 O# [$ V- P/ p' e
  11.         unsigned int        sub_addr_count;! a* H5 J5 L* C
  12.         unsigned char*        e2prom_cmd_data;
    7 w1 ]; O2 s/ j; C: T) i
  13.         unsigned int        data_count;
    0 X  c. W" [6 T. C) I7 v3 {' l
  14. } e2prom_s_cmd;/ O& y* v' ~" B% y# P

  15. , _% Q2 U: m+ X2 i4 _7 p
  16. #define E2PROM_CMD_READ 1
    $ c. O) S! k+ ^  z, H
  17. #define E2PROM_CMD_WRITE 2
    7 V/ U5 E8 K6 R. g) M# w7 {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". e+ h) b% z# F, H+ }/ Z( o2 X8 g% n

  19. - j1 c4 c; O9 z! x: d8 H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / ~) ?6 X$ x0 u
  21. {2 w  O+ @, n% |' t
  22.         int fd, ret;
    & p5 U$ U# E5 h8 c
  23.         e2prom_s_cmd arg;
    / N* A  Q- M; ?$ M
  24.         unsigned char buf[0x18];
    6 Q  G3 x" j9 ]
  25. / l+ g" h, k% u' }* y9 L9 N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / P9 I3 v  R2 J( o1 J2 c/ e+ a
  27.         if (fd  < 0) {$ N$ H: r8 i! b/ o) S6 `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  N) H% _3 R0 V5 z* G
  29.                 return -1;
    2 q5 f; X( z9 R' x, k% h5 ?1 E
  30.         }
    * C5 E$ E& N* d* |# I
  31.         arg.sub_addr_count      = 2;3 I# W& N( Z' Q8 S( j
  32.         arg.data_count          = 0x18;" z- u' R" b5 X* e8 \
  33.         arg.e2prom_cmd_sub_addr = 0x290;" Z$ R1 v3 C- x! j
  34.         arg.e2prom_cmd_data     = buf;7 j5 z6 ]/ ~: U4 \/ z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # ^9 t1 \# B; A5 T
  36.         if (ret != 0) {
    * _/ p, L0 x8 i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 w0 S# n% ~. t( q% S4 F
  38.                 return -1;7 D( t9 {& T% |, g
  39.         }# @, v5 }; y7 A% j
  40.         memcpy(mac, buf, 6);
    ; k5 t% Y/ H2 d8 p3 z  g7 D* J
  41.         memcpy(stbid, &buf[6], 18);
    & i; D& z3 F% ^7 {
  42.         stbid[18] = '\0';
    # z6 G8 o$ g9 E
  43. " l- V/ D4 g$ h- l
  44.         return 0;+ `5 B) @. l0 J
  45. }
    7 u1 G9 h( _: [+ P6 C) r

  46. : i1 j. Q4 r# V9 h5 P5 J
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  }. g! o2 B# I& O
  48. {
    7 O$ C( ^2 I6 ]5 F9 V( ]- M9 o  n( d
  49.         int fd, ret;
    7 a8 B, B1 J7 W- L; S
  50.         e2prom_s_cmd arg;
    8 l) C* G* ^+ K7 u* T, O. w( k; ]
  51.         unsigned char buf[0x18];
    ' _9 f  {, }" B) D6 ~

  52. $ _0 G: }# B! B7 x
  53.         memcpy(buf, mac, 6);
    " x0 j- h  [7 J# _+ U8 ?# c, V9 \
  54.         memcpy(&buf[6], stbid, 18);
    5 ?7 ^% w3 ^& ]) y' J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . I* \5 _2 ~0 S/ g
  56.         if (fd  < 0) {
    $ K* ~% Z1 F* z3 }. B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 d5 R8 T- s' @& c4 _0 B; g
  58.                 return -1;0 R& [: M) j# G% L1 X7 j
  59.         }
    4 |( E& v4 _% g% }$ X, Z
  60.         arg.sub_addr_count      = 2;
    5 e3 S  K, M: d
  61.         arg.data_count          = 0x18;
    / I1 a* w2 |' O- h
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 x! R# C) `2 f8 s6 {: x! K
  63.         arg.e2prom_cmd_data     = buf;
    " I3 o9 @- }4 L; i0 X" I
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' ~8 W8 V7 n9 n6 M7 _, ~  i& Q
  65.         if (ret != 0) {
    ( l, p1 X! \* N, h( V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ D6 H0 A" h$ U3 Y, `
  67.                 return -1;" P0 I  J2 ]- A. u, q: H7 a
  68.         }8 S' Y; j/ K8 @- N% b. i; S' W! R% r
  69. 2 _9 B2 n9 q% D3 n3 r  V
  70.         return 0;
    ! m' c& R' j1 v4 L5 Q
  71. }+ o( u9 \) r% X  z+ H& s

  72. & R: L/ u) u  o& \/ Q* z
  73. int main()9 r5 q9 l% i/ E7 P3 _" J, z- U
  74. {
    ; N/ O1 c0 N  g& w! k" |; p( `
  75.         char c;
    ) C" K# O0 K4 f3 |8 P5 I
  76.         int i, macs[6];+ ?8 m# S6 N- c3 C! h
  77.         unsigned char mac[6];
    % x9 w0 U% z/ s, A! b- g
  78.         unsigned char stbid[256];! k* v2 p; F: T) U* P

  79. : V6 q. M; \* m! k' }; T3 \
  80.         if (readparam(mac, stbid) < 0); C) D8 D2 _1 a1 ^! u9 a" d5 z
  81.                 return 1;
    - n6 @' j) X6 g2 Z& M- I
  82. 6 T3 D: c0 A/ h
  83.         printf("Current parameters: \n");" |! t9 T. }- b0 `4 L$ i6 p& x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( r; H* y( E" c2 X# b, H( e
  85.         printf("  STBID: %s\n", stbid);9 K+ _/ A4 A/ t% G# |
  86.        
    8 E" x9 @. l2 H6 Y0 H. K
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( c) X5 r4 Z5 {" m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 {; f9 O! D$ a3 c4 t+ Z
  89.                 printf("Input MAC error\n");
    * Z" |* x) [/ h/ ?0 r
  90.                 return 1;
    ' a2 R( T0 Z" w" B7 G; x3 E
  91.         }3 m0 y$ p0 n9 x
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 `8 `' w) u- ?; I" z5 `
  93.         printf("\nPlease input new STBID: ");* I$ _. s& S" S  g
  94.         scanf("%s", stbid);
    # M% S% \9 e  ~1 M5 z
  95.         if (strlen(stbid) != 18) {3 H- R9 m  q. V$ n$ J& J. S6 S; W& [
  96.                 printf("Invalid stbid\n");
    7 q7 Z: c2 t, E4 s  }: j* s* R' M
  97.                 return 1;
    : R& W2 f. N4 s
  98.         }
    8 ]: z- O4 D0 z5 l( I) f5 ~% ?
  99.         printf("\nNew parameters: \n");
    * b  v3 O8 L1 s& F5 z! j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : A' Z( ]+ U3 k2 L% |4 V  N
  101.         printf("  STBID: %s\n", stbid);
    9 s9 y- v( N- x

  102. 4 K8 y9 g  w! f, j" f5 f
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # l- z: E+ T( A/ O4 s
  104.         for (;;) {
    5 @$ }' p3 L9 F1 F7 @( Z$ U
  105.                 c = getchar();$ c) ]4 d; e0 R
  106.                 if (c == 'y' || c == 'Y')7 W  E' @! X  {5 e! z1 e* g' G
  107.                         break;8 Q6 R! O' ~% Z5 y
  108.                 if (c == 'n' || c == 'N') {, F# _9 D2 r/ b; D
  109.                         printf("\nAborted.\n");& l" g7 x& K/ n/ d2 ~5 C3 R% ~9 \
  110.                         return 1;
    ( p0 ?; h1 u5 Z. g
  111.                 }
    1 R* z1 z  z+ D; t, b' U- }) T
  112.         }
    ( Y. B& [8 d7 [9 [. `! V
  113.         if (writeparam(mac, stbid) == 0)
    0 B" y. o; p" E/ Q9 H( J, \/ R& W
  114.                 printf("Parameters changed.\n");
    ! x/ t& o7 N# E( W0 y* ]5 l

  115. 9 `6 ]7 ?. j- Z" ]  L) Y
  116.         return 0;; t0 K8 I$ s% k; U+ t/ \) Y
  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
+ y7 S' F7 s. }) v/ F# p在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
2 |8 u! j8 Q3 d) B1 r2 h. }
你用的编译命令行格式是什么?
5 |, e) l/ X0 K* o4 G
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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