查看: 16056|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 ?! Z. U* d7 y/ R0 x4 L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( W. Z. M2 I6 \2 G& P, J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! H% R3 D) ?! Q5 [6 j5 D5 o& Lusage: himr <address> <value>. sample: himr 0x80040000 0x0
5 b# ]% ^7 ]: p( x  E; q( d$ Z/ |5 ?' }9 y9 H+ k5 j. Y

) E# N9 m8 r2 n# T6 c/ a( \不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: O( u; \9 Q/ E  Y9 ?3 L, N

- F0 {( n- v2 {* D  P' d+ d% m/ D补充内容 (2012-3-8 09:42):
0 T# f8 Z+ Y5 s- H$ C- hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 Q# M- I5 o' C6 I7 Y$ f
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
/ [" {' E& _  d" l, C0 P7 X
1 {+ A) }& }( x5 y1 q( [+ Chimr <address> <value>. sample: himr 0x80040000 0x0" b" I: C% @1 i+ k* U- {
9 v( y) {/ e9 V5 t
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。: n. U- F' H5 J7 t+ g
himr 0x80040000 0x008 E( O7 |1 E) G( q* ~
himr 0x80040001 0x11
4 R' s0 k# ~+ u: j1 Shimr 0x80040002 0x22
0 A* |) \. l: ]' @; i" [himr 0x80040003 0x33
- `2 p" [6 j3 T/ o2 Thimr 0x80040004 0x44, [$ s0 G& t( {& m$ j% [! e
himr 0x80040005 0x55
% E& T7 @/ d1 {( C* T6 N* m3 L0 _# m5 |% O- F1 f
SN也是类似。
& J. k$ j4 C  w) q8 U
- b2 w1 K3 g0 Y5 W3 B现在主要是,谁告诉我们MAC和SN的地址?
/ [: b  g8 |  [8 U% k
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 H; U- N# l% O9 c一直想找到运程修改MAC和SN的办法,苦于无解啊

# W( q5 s, Z' @源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: y# v7 _- R( J* c: E# T: p* K. W7 ~, P; F7 c: ]$ k6 H4 }5 ^
修改的代码早有了。到今天不会编译。
+ [0 W& Z( W. r1 O需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>. b/ w+ l5 T/ s, C
  2. #include <malloc.h>9 j+ m; Q$ C& [. Z/ W
  3. #include <sys/types.h>
    " h+ ?/ I( X/ \  t5 I, |8 W
  4. #include <sys/stat.h>6 `2 b+ |" X+ S' C* X
  5. #include <sys/ioctl.h>% Q8 D9 u9 @* ^4 _# o$ }) }) B& s1 V
  6. #include <stdio.h>
    , Q$ M1 j% N+ o0 I9 Q
  7. #include <string.h>
    # \5 y9 O4 S: \! \/ v9 C, E

  8. $ ]! X" K: ?' j" v
  9. typedef struct {9 E! v+ N8 l1 Q: T
  10.         unsigned int        e2prom_cmd_sub_addr;: l' \0 a* t6 C( O6 _( d' Y4 b( I( e
  11.         unsigned int        sub_addr_count;
    & o! `- j. `* E* n9 ]
  12.         unsigned char*        e2prom_cmd_data;
    # d9 r6 e" `2 n" B
  13.         unsigned int        data_count;3 n0 r; A/ T! s: @3 q: O9 }) B
  14. } e2prom_s_cmd;
    * k5 O/ X5 j- O2 r- }4 w, O' }
  15. 8 U3 ~: b  b1 P
  16. #define E2PROM_CMD_READ 1
    4 @* p2 T5 g: z) i5 D$ Y
  17. #define E2PROM_CMD_WRITE 2
    ; M+ A. V. P  P$ k! C6 s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 @% u' c* |# D7 y4 o
  19. 2 _$ e  |" C7 k* {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ [/ [1 S4 ]; x: `% O& t5 {% d
  21. {) h' i; f% g& t) z, m# Q* z
  22.         int fd, ret;2 X1 R9 D" M) g; }+ Q
  23.         e2prom_s_cmd arg;
    5 _1 P! e! H& F
  24.         unsigned char buf[0x18];
    . D2 V( `  A' |- I

  25. / v4 a" n4 z7 |. F' d5 F( X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 ~; R* f) r& O" n. s
  27.         if (fd  < 0) {
    6 J$ \' G  s0 b' a$ J7 i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ o! F, p0 o) P$ u6 f
  29.                 return -1;2 N" p% M+ v2 g- t. G- d* n
  30.         }
    , s, r, N* h7 u& G* l3 I$ K
  31.         arg.sub_addr_count      = 2;& G  _& C# T9 q, o  \8 Q- n0 `6 w
  32.         arg.data_count          = 0x18;
    - g) q' g: s4 n- m: i* x2 u
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ _( f% e! z' L9 z- q
  34.         arg.e2prom_cmd_data     = buf;1 q& Z! I% R6 O3 W' v# s' J! Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 t& E( R) k, e2 p
  36.         if (ret != 0) {* q1 l3 [0 X0 y& i+ y! t5 K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 g0 x* h% T1 d: z0 ], }4 b
  38.                 return -1;: |0 v0 R# k  M; a8 ^. c
  39.         }
    / V& G9 K/ G% d: u! n5 R
  40.         memcpy(mac, buf, 6);
    , k6 J* g" I) L7 p7 x& V, a, a$ u
  41.         memcpy(stbid, &buf[6], 18);
    3 o) |5 H- a+ S( m& _
  42.         stbid[18] = '\0';" V3 U3 E. e' N0 \$ ]" `5 o
  43. * U2 m* L* M+ O9 i6 i" D' g) j: ^
  44.         return 0;
    + g) f9 ~7 D" [% H
  45. }8 r% v0 s& ]0 Y: _* q. @% \: J
  46. 9 T6 E8 x% a& T+ a; {0 c* d( d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ q& E3 ~# y: \5 w6 q9 W
  48. {# r$ S4 ~7 \( M# c9 {) N+ T: N* J
  49.         int fd, ret;
    - A$ i; O; u  U0 S8 z) y
  50.         e2prom_s_cmd arg;. f$ r: @8 Q$ u7 Q( H/ x. l* w  S
  51.         unsigned char buf[0x18];/ _  C3 `$ F7 l. X) a1 o

  52. 1 d- Z5 `, V5 x- n3 K
  53.         memcpy(buf, mac, 6);
    3 V# h; ?0 Y! t$ J# ^) c7 Q
  54.         memcpy(&buf[6], stbid, 18);
    4 x! \0 K: S% i/ J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  V7 n  v7 g. I" i) w8 G
  56.         if (fd  < 0) {
    7 ?) x# K' z3 r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 }* b0 ?1 X/ o5 K+ G- ^
  58.                 return -1;& o4 x! t8 l1 V9 ^7 t$ A
  59.         }
    8 z5 E: Z" f* {! Y+ d% M9 Y  J
  60.         arg.sub_addr_count      = 2;
    7 U( ?5 i2 o4 c  {$ |9 Q8 x4 C) [( b9 u
  61.         arg.data_count          = 0x18;
    ' M" r$ I3 i1 e* o$ L1 n6 b5 Z' d
  62.         arg.e2prom_cmd_sub_addr = 0x290;; x$ C+ w3 X- J, ]: u" b8 c/ t
  63.         arg.e2prom_cmd_data     = buf;  u( k% t7 @" D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);! t6 d1 v$ U* {+ Q& `
  65.         if (ret != 0) {5 i3 @% m" N, J; Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! ~7 _: v* P3 _
  67.                 return -1;( k, C  i! M. w8 }5 S" I$ o3 \
  68.         }
    6 j& C6 f) p* }1 u+ R+ Q

  69. 5 n% U$ Y" j0 l$ `, R0 c* J
  70.         return 0;
    2 `- ^' ^0 i8 n! B, ?
  71. }
    3 e7 m6 \# c9 l

  72. , N% w: x1 A" @, x
  73. int main()
    6 _6 U5 z0 _2 d6 K9 Q
  74. {
    0 p$ y9 J. e7 T5 j( p
  75.         char c;
    " z+ F9 {9 O0 [: A
  76.         int i, macs[6];* h- J5 S# ~9 U& v
  77.         unsigned char mac[6];/ o1 E" V( q% }# k
  78.         unsigned char stbid[256];1 c/ b3 I1 T) l2 ]3 \' x
  79. - B/ K8 E* a6 L2 L  m* E
  80.         if (readparam(mac, stbid) < 0)9 F% r% H+ m& c
  81.                 return 1;1 }/ h& }4 y" s7 d2 e: A! ?: B7 a) x
  82. 5 h  ]) ^2 t$ N' s
  83.         printf("Current parameters: \n");
    8 C, J+ y5 F2 B/ @# x; \
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' \8 s% J# U3 b+ a5 k9 B
  85.         printf("  STBID: %s\n", stbid);' S4 Q+ J  l: z9 M8 v1 B* h& l
  86.        
    3 G3 `9 F$ L( G/ y3 J0 m* a; \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 s* k- |* S, ~/ s  b# l% X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: i# o0 Y& V* g: M" j% W' L
  89.                 printf("Input MAC error\n");
    & c/ Z& N  E& D$ _; m' ^( m. y/ j: I
  90.                 return 1;
    3 S" b7 h7 B/ W, P) ?9 f+ H7 R
  91.         }
    7 U2 h! ~2 w# l" k' ~2 T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ c% U9 h( z% w7 n6 ]
  93.         printf("\nPlease input new STBID: ");$ d7 i7 \4 m. t- ]- y
  94.         scanf("%s", stbid);1 g3 a2 [; K/ o( @: ]
  95.         if (strlen(stbid) != 18) {1 a/ d5 s. I* Q" i4 \* q/ |
  96.                 printf("Invalid stbid\n");
    ( S/ u$ i! `% X& B( C# l* D
  97.                 return 1;* F: [% w; p' H1 V5 X4 L1 Y
  98.         }
    0 ]/ t" ], L* c3 s
  99.         printf("\nNew parameters: \n");
    & C* k# Z; s: ?7 }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! u) p% m$ H2 k5 h2 M1 O9 w3 Z5 s
  101.         printf("  STBID: %s\n", stbid);. z1 B2 P) H# _/ H. g

  102. * a: H& g6 a% V  D
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 L5 W" V. U; J  X, c  I% @
  104.         for (;;) {
    ; {# O1 A  L% o- |  [5 p
  105.                 c = getchar();
    & N1 K5 O  h% q! v1 t1 u
  106.                 if (c == 'y' || c == 'Y')
    / q9 V1 j  Q7 t5 a5 A6 i2 ]
  107.                         break;
    8 ^( H$ F8 U# L( `4 a
  108.                 if (c == 'n' || c == 'N') {
    2 y2 y0 P' w$ ^; T
  109.                         printf("\nAborted.\n");$ F5 q. b6 r7 D" d! G
  110.                         return 1;+ D, J/ X% [' E5 G. ~: V( O
  111.                 }
    7 i; V) L1 d; p  {8 v
  112.         }
    2 q& f4 a) \: U/ G6 j
  113.         if (writeparam(mac, stbid) == 0)
    9 `4 ^( X/ D$ z  Q" x  E$ M
  114.                 printf("Parameters changed.\n");, J6 X) Q1 |- q/ }

  115. ( h7 `9 J2 W5 V4 F0 B
  116.         return 0;. S/ a; ~9 L: U' ?: P. J" H1 z9 y6 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 9 i8 Z( e) |0 n
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 v% p& I; F) j你用的编译命令行格式是什么?3 K! m3 Q( }7 E" P3 Q, M
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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