查看: 16694|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; @4 N/ a+ l+ `$ p! ?: y4 l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig( y% T# w4 p* D3 m  R7 L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 t) w5 g  P5 Y  ?
usage: himr <address> <value>. sample: himr 0x80040000 0x08 X" R$ G1 Z% Y  T

- @0 [$ C: C' s  S+ g  ^; r' \8 X$ v0 c$ ~9 S) e0 Y( S" |' B
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
9 }7 O+ |+ _9 Y  t2 [5 [: L! ?1 ~& p' Y8 k4 R+ l& g
补充内容 (2012-3-8 09:42):
, S% S8 y% F- e" {http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  h3 i& P3 l' k6 O! ?* w
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
! ]" N$ A- K# U( h# W* C6 W
9 s8 J1 O' l4 g3 _2 H5 \himr <address> <value>. sample: himr 0x80040000 0x0# Z3 R; Y( Q$ |  R+ c- @

' L! h; w# u- l1 W7 k- b例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 q9 K' O1 x3 u7 ]: U, q3 H& Fhimr 0x80040000 0x00
) N0 I% H; }8 ]9 ohimr 0x80040001 0x11) j! T2 ^# M: e0 U9 w4 S+ M
himr 0x80040002 0x22  P+ [9 }4 h* i. o" |
himr 0x80040003 0x33, U, _9 o/ f! @4 ]
himr 0x80040004 0x44
# X( f4 g2 i& k- f% W5 p3 Zhimr 0x80040005 0x55
  I  W  o& U( F0 r: e4 V% `( m5 P) z% V+ J
SN也是类似。
6 u# K1 M1 _! l9 U/ ^1 P8 ?9 N8 m$ y, P' {1 l8 b4 c
现在主要是,谁告诉我们MAC和SN的地址?
$ k, X) f" h  i0 A2 O, ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ j* O+ f/ w; j1 O一直想找到运程修改MAC和SN的办法,苦于无解啊

" q: T8 ?" B% `. |& O% W源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
" a% F( c( @" @% [! X& X. X- A" a; c( a) T. `
修改的代码早有了。到今天不会编译。
  H! V7 |( U8 }8 p) h需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % `* e( x& X6 X4 x4 }, s2 m6 ?. Q5 @  d
  2. #include <malloc.h>
    - E' u- o. z& x' m
  3. #include <sys/types.h>) u6 t; E9 U* M2 Y8 s
  4. #include <sys/stat.h>
    2 w$ N& Z$ m8 K
  5. #include <sys/ioctl.h>6 X8 A' F, m! \& ^4 c% b5 H% }1 Y+ [
  6. #include <stdio.h>7 n- Z9 U/ ]4 o; W* r
  7. #include <string.h>
    ( u; V( X. A# C
  8. ( A2 R: E+ f: y7 W2 |% V
  9. typedef struct {
    ) r' y/ y* G+ M, z3 j
  10.         unsigned int        e2prom_cmd_sub_addr;# V/ V% V+ T6 {7 ?2 J6 ~; h
  11.         unsigned int        sub_addr_count;
      |! Y# R+ b4 M" x
  12.         unsigned char*        e2prom_cmd_data;1 K' A0 h& r' w) n
  13.         unsigned int        data_count;2 A  U0 @, {$ x% G" ~
  14. } e2prom_s_cmd;
    % v2 d* \5 P/ ^- `
  15. ' |! _/ b. B6 n* s& x0 H* G" b0 y
  16. #define E2PROM_CMD_READ 1  J% g: m4 ?' W3 m
  17. #define E2PROM_CMD_WRITE 2
    6 L( P4 E- c* c- K& ~' B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 V; k5 l) F6 e
  19. # O/ e0 B$ O0 H  c, i5 r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * C1 P: A, \* r/ A' r' t
  21. {
    3 |  O2 K1 q3 I- n
  22.         int fd, ret;
    7 a+ Y1 K5 ]8 d0 z
  23.         e2prom_s_cmd arg;& C0 `! {/ o, ^4 T2 u7 Y" f1 _2 j( @
  24.         unsigned char buf[0x18];: |$ X: j3 U( \& E
  25. & ~0 B8 O! r5 m4 }2 g3 }9 B' I4 T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 j0 o9 h+ R. o1 g& t9 Z$ t5 x
  27.         if (fd  < 0) {0 A+ i3 ~* ]" O* ]4 [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& }* J( ]6 [7 ~9 S
  29.                 return -1;3 _; c/ R/ W9 Z7 z$ @! r$ a! V
  30.         }
    ( `: a' n' I! U$ K- V; x
  31.         arg.sub_addr_count      = 2;" j$ D+ g+ e, s) x
  32.         arg.data_count          = 0x18;
    ' ?% F0 \; o+ R* {% C, ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;5 b- d& s& @" k6 ]( z5 G( f
  34.         arg.e2prom_cmd_data     = buf;0 E0 J0 z  h: D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    4 z% G' z- [  x( S/ _5 Z3 X0 w. g
  36.         if (ret != 0) {
    + U' k' q7 h# p; p4 K( Q% |# i% J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + H0 V) N' x/ A% U
  38.                 return -1;1 w, {5 ?) M! G% [1 f$ C0 E9 r4 Z
  39.         }7 |1 v9 I8 h. p# Z
  40.         memcpy(mac, buf, 6);" r$ A0 z& k1 K! h; n
  41.         memcpy(stbid, &buf[6], 18);
    ! v% \8 [3 K' _$ p( l; M
  42.         stbid[18] = '\0';. R$ D& n6 @$ d" t/ \

  43. 8 o  L( j* @7 A. j' ]
  44.         return 0;
    % i. S2 N7 B) F4 M
  45. }
    3 @! V7 {7 I0 W7 B( x

  46. 9 y3 `. E$ |7 D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# x$ a+ }/ b8 U  P
  48. {
    + V1 Y3 Y% j, X' j! B
  49.         int fd, ret;
    % e1 i! e7 f3 V  f3 r- D
  50.         e2prom_s_cmd arg;
    $ w$ K% V: O, b; }; n; |# H
  51.         unsigned char buf[0x18];
    6 L5 S& I$ ]$ Z  j$ C% _

  52. $ {" D& H: N+ k: U8 q0 `7 e
  53.         memcpy(buf, mac, 6);
    " P2 k! Y: ]2 }& j, L- g
  54.         memcpy(&buf[6], stbid, 18);
    ( B) g, D' {5 ?. \# a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    - `4 A/ S* t5 P; d3 G
  56.         if (fd  < 0) {( e2 k/ O0 m3 _5 P$ H# e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% r; E" B1 C6 W5 n; |0 L6 l
  58.                 return -1;8 e& [, f6 ^  y' D. H" A
  59.         }
    8 |, |( O/ }" ?! g8 J
  60.         arg.sub_addr_count      = 2;) S( F) y# I. ]  Q" c9 f0 J
  61.         arg.data_count          = 0x18;
    8 n8 L# i/ Z( c3 X
  62.         arg.e2prom_cmd_sub_addr = 0x290;) v0 x, ?+ e& Z
  63.         arg.e2prom_cmd_data     = buf;
    2 w9 q8 y  v; U9 ~! K  }9 N3 A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# y% C5 S+ t& F+ m) Q0 u( \
  65.         if (ret != 0) {/ X9 |/ f9 S% {3 {9 h8 p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 D! ~2 A3 M! G% @8 w
  67.                 return -1;% `6 N2 ^& y0 t$ S4 H
  68.         }
    9 _' E! A. e) X! a4 C  x

  69. 1 p( M& w* v$ W) T" m* U% o9 V0 q
  70.         return 0;
    2 k9 U& @: n. N  f, L: N. t
  71. }1 r2 x5 O8 b  X& n. i- v* S' N/ }

  72. ! {' }+ f4 T7 {( f, g& C5 e5 ]
  73. int main()2 k3 X# l8 ]% t- q& j5 o) d" D
  74. {/ Z) M% a, U( _7 J% Q; `
  75.         char c;
    2 C' h. e' u+ S. V* }
  76.         int i, macs[6];/ A7 G4 p; P3 a' e: y8 A0 s+ J$ L
  77.         unsigned char mac[6];, x$ _; Z. P5 u8 z3 S
  78.         unsigned char stbid[256];) X) E( _& z4 W. }; e
  79. / d7 @) l1 m7 x2 d* N
  80.         if (readparam(mac, stbid) < 0)
    % ?; J9 d, O9 K" d& G" {
  81.                 return 1;
    7 ^6 x' X% G* s7 y4 D- H3 A

  82. 7 c  W: U. A6 u8 F6 C  _, C, p
  83.         printf("Current parameters: \n");' t9 j& U. k2 J9 n( S4 r0 F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , Z& a& w, |2 C& ~0 A  R9 H
  85.         printf("  STBID: %s\n", stbid);1 f' k% c% i8 b5 h' j
  86.         , A- V- e. z4 z( ^& m( r' N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 i) Q6 R  {2 g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " f/ q! m6 a9 n/ \2 Y2 V' i
  89.                 printf("Input MAC error\n");
    $ `% n, W; n/ ~- q4 h
  90.                 return 1;
    $ x" V, u  _$ J: _7 `5 t. K6 \, k$ _
  91.         }: c. @% _: \" ^9 ^2 ]4 q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 F: k6 V* x7 X8 k
  93.         printf("\nPlease input new STBID: ");
    + n# C+ D* o$ Z7 g- v
  94.         scanf("%s", stbid);  t9 M1 H0 I$ {2 v! A" w% W: _
  95.         if (strlen(stbid) != 18) {6 }1 F3 ?4 O2 n+ P% H& i
  96.                 printf("Invalid stbid\n");. e3 b! y2 b0 @& |; @) u- O
  97.                 return 1;8 [0 S# n7 [7 J% F  P/ h; x
  98.         }
    ( r+ l9 ]3 @$ q; }! p# ?% p
  99.         printf("\nNew parameters: \n");
    6 v6 D5 m1 k% ^9 w$ i: N+ o
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 i) b& I  r# S! ?+ Y- D
  101.         printf("  STBID: %s\n", stbid);& K. ?# q0 l; f& E6 g- W
  102. 5 Q5 ]7 L% @7 Y% Y5 `
  103.         printf("\nDo you want to change paramemters? (y/N) ");  z0 v9 ]: C8 D7 ~! c
  104.         for (;;) {
    0 @3 Q9 z3 g. @' |  U
  105.                 c = getchar();
    * n* j6 ?% Z* p0 h
  106.                 if (c == 'y' || c == 'Y')% @' B8 n6 j1 F3 d( a3 T8 x
  107.                         break;
    4 d5 Y2 w# u1 i; e) G% ?8 m
  108.                 if (c == 'n' || c == 'N') {
    ( c, O0 R0 x. [0 s3 M4 Q* x
  109.                         printf("\nAborted.\n");( C: t+ u) j) p2 s, u
  110.                         return 1;3 x" c1 ^+ Z9 L1 F  s
  111.                 }
    ! k0 }, g+ \' ?: ~2 T
  112.         }- {0 v; A9 a0 v1 |1 y
  113.         if (writeparam(mac, stbid) == 0)
    - U& p+ c7 s4 j3 |" ~9 O. k1 b
  114.                 printf("Parameters changed.\n");2 N' B. [. m7 v( `, Y5 d( X

  115. ! g+ O' F2 Q& d' k6 T
  116.         return 0;
    ) C. V2 C# Z! w& L9 _6 V- T
  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 " p) _  [; z, ?9 i7 F
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 e6 G9 e' Z2 Z* x你用的编译命令行格式是什么?
# R1 f; G* H3 w" U1 E- _$ H, n
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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