查看: 16357|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' r- B7 l  ^( n
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig: I8 J3 ?) o: x$ _. t9 g8 s8 {1 h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
3 H1 w" `& f$ Fusage: himr <address> <value>. sample: himr 0x80040000 0x04 U- {5 U; T8 {, c  \- z" O9 }

0 ?+ I9 a+ e; S2 y' H6 d% Z% d' j5 k! b
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( \- P# g/ _4 p, Y; i
  z6 P8 P3 d% V2 O4 K  i
补充内容 (2012-3-8 09:42):5 P) H5 R1 z9 W3 ?6 {
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ ]# o; D; v. q( Q. p8 G这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。5 `& |  v( o, a

3 C( S7 p5 [. T& g" S: c7 Y! \/ qhimr <address> <value>. sample: himr 0x80040000 0x0
6 H  T: e; D& B- N
) F  V2 O: l, u" S  z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( V% g+ R. g/ a: Xhimr 0x80040000 0x00* p4 n* d0 {7 x% M( ?; u5 _
himr 0x80040001 0x11
9 |5 U+ ^" v2 ]# H( Q, |+ yhimr 0x80040002 0x22
( T& Z0 e+ O' q0 t, xhimr 0x80040003 0x33
; V* R" v1 Y* v* h3 O2 {himr 0x80040004 0x44
: Y4 K0 S& k- Z% Y$ p/ Uhimr 0x80040005 0x55
( D0 O$ V# R2 u: i- I" J
) u3 n" _* E; F4 ^6 iSN也是类似。3 _. i! `, C$ I5 W/ {. o
+ Z7 u3 I$ T- @1 c, Z& i) e  p! ?- H
现在主要是,谁告诉我们MAC和SN的地址?
$ h# i2 _$ S. W" ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& c. w1 [5 s; Z一直想找到运程修改MAC和SN的办法,苦于无解啊
2 \- Z$ L$ m* ~; D( x
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 $ Z& b/ C5 @' o( W

' X) Z* L0 R  H/ I& I修改的代码早有了。到今天不会编译。
) r! g" V- [/ g  O3 X" y. D; f; B% e需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" `2 g2 x( a* `1 K2 F
  2. #include <malloc.h>
    - X$ {, M  [" U' u5 \
  3. #include <sys/types.h>$ M, ^; p) y8 k& J
  4. #include <sys/stat.h>
    " O  O  [% o! q$ Y, c
  5. #include <sys/ioctl.h>
    " c* H! q0 z% w) n- }
  6. #include <stdio.h>1 S8 B( v0 ]7 u6 h+ b8 v! c. _
  7. #include <string.h>
    * J( V9 I- l% r3 J$ ^

  8. + @+ q. C/ _! P4 W$ R
  9. typedef struct {
    9 I; l, R& @/ X$ m
  10.         unsigned int        e2prom_cmd_sub_addr;! t( i5 G0 W5 }  C3 o* s6 q
  11.         unsigned int        sub_addr_count;( A8 u5 w% E: ]2 _
  12.         unsigned char*        e2prom_cmd_data;
    * k1 L, C! {) W5 C$ l
  13.         unsigned int        data_count;  d' \+ \0 R( E. l8 i1 n) M
  14. } e2prom_s_cmd;
    0 A7 a5 C- }8 U% V9 }* E
  15. " v/ D' ^7 D# w8 @- Q
  16. #define E2PROM_CMD_READ 1" ]5 U  j# U  w* b5 j" B
  17. #define E2PROM_CMD_WRITE 2& A* ]" p4 `5 d7 S- x" s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ) e1 @0 ~: f( r! Z: L9 ^
  19. 8 m( [4 P( \% A( T2 t; d
  20. static int readparam(unsigned char *mac, unsigned char *stbid)/ @9 [+ @8 p: n: p
  21. {' s! t/ O: E% t, Y
  22.         int fd, ret;' t; q. H6 T9 _2 |
  23.         e2prom_s_cmd arg;
    2 j" a* z& K5 v  O. o2 B
  24.         unsigned char buf[0x18];" Y* t  D7 u6 x& ~

  25. 0 J* B: i. L6 C: h& _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. l  [! D5 i0 @$ f
  27.         if (fd  < 0) {* W; k' y' B  [  ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);; u0 Q; Q& L# b3 ~; g# ?0 y# ^
  29.                 return -1;
    : ]5 @+ }8 R$ Y$ f! V  U1 f& Q5 R
  30.         }
    1 U& \$ g9 [7 I+ L4 H
  31.         arg.sub_addr_count      = 2;6 `/ t" W; V6 s1 b4 L
  32.         arg.data_count          = 0x18;* b5 t( I$ T1 f. O. q- J, Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;
      Y" s! d, ?$ Z  ]: T( m/ _, o! K5 [& y
  34.         arg.e2prom_cmd_data     = buf;
    : m7 M6 ]) R9 h* N5 S4 d- X( V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 O5 |0 Q+ D5 ]; J! C
  36.         if (ret != 0) {$ h6 A7 w) N, E7 I' X& F" q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 U. e+ o  F: a& P
  38.                 return -1;2 W# E* C  u+ x9 G
  39.         }3 W7 j* |: |& T0 c9 X! W
  40.         memcpy(mac, buf, 6);
    4 b$ P' c# f* g8 y
  41.         memcpy(stbid, &buf[6], 18);2 p' D( `7 \' L* Q, j
  42.         stbid[18] = '\0';
    ' x) \' z2 l" x6 w) q8 h5 y$ \

  43. ; [$ ^5 U$ Q, H/ c0 z4 e) k
  44.         return 0;
    ) R4 n5 E+ D& l+ R
  45. }. O" w* w/ x1 Q9 J7 |" L/ [
  46. 0 |# Z: v5 Y- c$ G5 V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 i6 t; X: S& P% k
  48. {# i$ B9 w2 \9 j' m. f. E3 |( |
  49.         int fd, ret;4 I8 r. V2 t' J1 r' F: |& y9 `  L
  50.         e2prom_s_cmd arg;
    # \+ t  d; m4 v( y) }; n- }6 W
  51.         unsigned char buf[0x18];5 c- N6 t, |6 r) n2 |

  52. & K# [' n' Z2 Z2 r! j0 E
  53.         memcpy(buf, mac, 6);
    6 J0 c7 l* G( o" ^
  54.         memcpy(&buf[6], stbid, 18);6 q6 W- L7 W( {0 j/ {- {& n
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; w' _$ N4 T9 g$ l$ J
  56.         if (fd  < 0) {
    ! B1 @' V( G. a: |& v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 L2 O, j) K; B- w8 H
  58.                 return -1;
    " \* a, `2 F) T% k, |4 ?6 T
  59.         }. g8 C) r7 C" y6 r0 s1 T
  60.         arg.sub_addr_count      = 2;
    * p6 A" j8 Z9 o( e, x1 M  E1 z7 Q- W
  61.         arg.data_count          = 0x18;! k4 x6 S) k2 I7 c# R
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 ^. e) Z* D: ?. V, V$ N. o
  63.         arg.e2prom_cmd_data     = buf;8 N$ J% w4 O; x* {9 f, {( A+ y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 C: K% ~' c$ r
  65.         if (ret != 0) {1 V$ F) Y! v  Q9 M) U! h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - Y, D/ b# G. N- `2 T3 d
  67.                 return -1;$ R6 a: y1 J$ V+ \1 x# r$ r
  68.         }
    " }' y* f: D7 L; `

  69. ) E. Y0 P, l% v1 }2 G7 Y
  70.         return 0;
    - Q, R; L$ \5 ?' Z+ h
  71. }* p: i0 a" D' O0 R# a* T

  72. $ M8 E3 v/ o# E
  73. int main()
    5 l0 D+ y& a/ h
  74. {
    ' i' t  m! q* a8 W
  75.         char c;
    $ U2 S  P0 C, Y& I: L) K
  76.         int i, macs[6];5 u1 M3 b+ L, P6 W$ d
  77.         unsigned char mac[6];
    ' s$ }7 H0 z- O5 [, M: b$ ?% b
  78.         unsigned char stbid[256];
    . `& r3 z: m5 X) f3 u

  79. 1 T4 S6 O& Z2 P3 D4 J, W4 q& c
  80.         if (readparam(mac, stbid) < 0)
    # v: i" p7 }+ a
  81.                 return 1;
    * q% q5 m2 V3 Q' A# J& F9 \

  82. 1 p$ A: Z$ G" ]1 r: D) {
  83.         printf("Current parameters: \n");
    * _& p( _# Q4 m. U- z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 d2 o, n6 I0 K3 F5 b( {
  85.         printf("  STBID: %s\n", stbid);
    : v" x1 B' }& M0 u1 c
  86.         $ H. S4 l' P0 x, L( U' b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( i. |) R/ p% Z4 e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! e/ @5 I' }$ k* z: Q
  89.                 printf("Input MAC error\n");
    ; r! R: z$ y# R' V8 d! b
  90.                 return 1;" K& `, G2 p" q6 D
  91.         }
    / w/ `  ^* w9 H* O" l% v8 I( Z( F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" M2 b* A+ ]/ ]! ], M! Z
  93.         printf("\nPlease input new STBID: ");( }# S3 j2 ]  Q' L: T' |
  94.         scanf("%s", stbid);
    ' q# ?% Y' ~, u, E: f/ C7 m! n
  95.         if (strlen(stbid) != 18) {
    1 Z0 L: W1 v) Z$ j; H
  96.                 printf("Invalid stbid\n");
    7 O, l' ?) q: z5 J% Y, y; V$ n
  97.                 return 1;" V1 _) ~9 J" s; s
  98.         }0 K2 A+ b/ }9 g6 a" q
  99.         printf("\nNew parameters: \n");
    + E  z3 O; @# I. F
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 Z, ?' h- m4 {- f
  101.         printf("  STBID: %s\n", stbid);% _3 ?  `4 X! k1 T6 Z" U9 s* \
  102. 3 K( U7 h; v' j0 Q' a" t
  103.         printf("\nDo you want to change paramemters? (y/N) ");. p# V- C; H9 J5 H$ o
  104.         for (;;) {
    : ]3 p) Y/ C7 k' l
  105.                 c = getchar();( W% O- B0 [3 E1 t% U- g
  106.                 if (c == 'y' || c == 'Y')6 |2 v5 w* o2 V* q! F
  107.                         break;4 ^2 [5 W) R  Q' @  p
  108.                 if (c == 'n' || c == 'N') {
    0 F# @! T) s/ u1 c4 q* q
  109.                         printf("\nAborted.\n");
    " y7 |6 N3 |8 w: g8 [+ n
  110.                         return 1;! n1 c' j- w. w6 n9 w) b4 G
  111.                 }5 B  B: p3 ?2 H( }4 e3 A& [+ T' \
  112.         }
    & V: M: {3 G* r! x3 ?; b
  113.         if (writeparam(mac, stbid) == 0) " I6 E" D: H% m! o5 k
  114.                 printf("Parameters changed.\n");  Y. H% H) p( C+ Z! ~( p
  115. : G7 L. q/ ?" y/ G
  116.         return 0;
    7 ]# e  J6 g: D  f7 K- A4 O
  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 6 r, b% j' e* W/ W5 p) L6 A
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 s: B' p( @3 d你用的编译命令行格式是什么?
4 S9 x1 @8 i8 O. |
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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