查看: 16266|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 n% K( U8 }* B4 L6 j
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig: Y, A# I* I  d1 M/ ]( }: t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
9 R+ s: z% x7 O1 j9 U; Fusage: himr <address> <value>. sample: himr 0x80040000 0x0% p2 |6 a6 {. u! y8 V2 u

) t! I' h/ n, F3 i1 k
' W8 z- \) N* ^: `) K3 R0 S不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
6 W! A" H6 K5 x7 a
# w1 S1 g6 f' A5 ?# W补充内容 (2012-3-8 09:42):+ m# U) h! L$ X/ M. Q7 C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, |9 d) F$ T3 p) S+ Y# C. q, X
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。" R( B* ~+ s$ u% o8 C3 N  \
* A5 Z( b7 X1 Q  e, b; m
himr <address> <value>. sample: himr 0x80040000 0x0  I: Q1 f4 |# h+ Z) o9 i

" L3 n3 N0 f8 b4 J  D- h+ v, c' X例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* r$ |5 y1 ]( x* f) D2 Y2 G, Ahimr 0x80040000 0x008 B; M7 j3 a! m5 M
himr 0x80040001 0x11* X! j+ y* e- O' a0 D, k
himr 0x80040002 0x22
$ Q2 E! ]" K. I: W$ K. g# S2 m. hhimr 0x80040003 0x33: d7 B1 t3 m# V! N5 k$ i* `* F5 @- Z
himr 0x80040004 0x440 X3 x; l; \$ G* B
himr 0x80040005 0x550 s- _& Q2 Y- L/ O6 Z( b

1 ]( _1 K2 u+ p2 A& VSN也是类似。
- I/ ?" X9 T0 r" w$ i' B. G" w& H7 Z$ ?
现在主要是,谁告诉我们MAC和SN的地址?! d1 F- C9 q9 ~0 X/ W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 5 @+ L2 ]# N) h1 M
一直想找到运程修改MAC和SN的办法,苦于无解啊
5 N4 n  C& o5 O1 S! Z$ J: \
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% h0 g: m: |9 E0 r" M& V" M2 Y- u2 P1 {
/ E4 @5 [1 a) t6 Q# ]/ o- o- D修改的代码早有了。到今天不会编译。2 i0 g6 C( Q9 I5 u6 g/ e
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ Q# o1 _& y* a" G
  2. #include <malloc.h>
    1 {+ n. L1 `& s0 d4 a/ Z! J  f
  3. #include <sys/types.h>
    " Y3 D# a- I. f: z
  4. #include <sys/stat.h>6 Q3 w4 P2 I3 F
  5. #include <sys/ioctl.h>9 k' ^) h4 C3 F% i: r/ v
  6. #include <stdio.h>
    1 h' n, d, M9 D9 v: r
  7. #include <string.h>' b; ^% p( \4 ]- [, n
  8. 5 p% a, r$ \  B  V0 D
  9. typedef struct {
    1 Z0 F0 C7 P& d+ Q& f
  10.         unsigned int        e2prom_cmd_sub_addr;
    . J* N9 D) y  H8 J( c9 N4 x1 ^. P1 n3 q
  11.         unsigned int        sub_addr_count;
    6 k) _, P3 v! Q' @/ j
  12.         unsigned char*        e2prom_cmd_data;
    . f# i4 e/ V: M+ z( ]. X( \
  13.         unsigned int        data_count;9 f$ G- _4 q8 j% D
  14. } e2prom_s_cmd;
    / C1 g( z  ^, L. ^2 C; j/ b
  15.   _$ u# f- x. S4 B) K" M0 w
  16. #define E2PROM_CMD_READ 1
    ' G) V) ]1 _& h& I1 r8 f
  17. #define E2PROM_CMD_WRITE 21 ^  n. r9 L; G4 A* D& h/ O& Z  n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( j9 q* M+ V. x

  19. $ U% @1 B* i  H# B' P! W1 f
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 D9 G* ~! _' u. T# `( w
  21. {
    3 [* [! y% S6 F9 i2 S2 z
  22.         int fd, ret;
    + H; I4 e( z! @( y
  23.         e2prom_s_cmd arg;
    ! }7 W- m8 Z  o1 x$ S2 t' ]
  24.         unsigned char buf[0x18];
    - x2 G" f% @( h* K+ U, u
  25. 4 ~+ r- i! i! ]/ f, x) C- F' ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / B0 g0 L9 J6 @8 {
  27.         if (fd  < 0) {5 W* S5 K  v3 L8 y9 C
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # O% e/ {* r0 ~; S+ k+ j
  29.                 return -1;0 T+ V% m& ^( E# @4 U
  30.         }
    7 j) ~3 M$ _. o% z+ X: {  D
  31.         arg.sub_addr_count      = 2;
    : N" q: X" J" u- Z9 ^: T
  32.         arg.data_count          = 0x18;' Q+ |4 @% V0 {( u1 K) F+ w# O
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ O5 }1 Y* p% j3 _$ _
  34.         arg.e2prom_cmd_data     = buf;- c: r6 B9 V5 w, X4 m9 {
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);" [0 Z3 R( q0 W0 c: b  F% A
  36.         if (ret != 0) {
    2 A& ]' p* }/ j: y4 X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - v& C% O' C+ _( o
  38.                 return -1;! s1 J/ ^+ I. ?9 N8 t$ Q
  39.         }" U2 V( i3 f! {6 d) K$ x
  40.         memcpy(mac, buf, 6);
    ! R8 y( K! ]8 N: \5 _, M  @
  41.         memcpy(stbid, &buf[6], 18);
    ) n; x5 k: `% L! p  q4 W
  42.         stbid[18] = '\0';' f) ^7 x1 L, i- x6 t- O
  43. 6 W7 W" |, V3 C" ^# k
  44.         return 0;- \" D# X. p0 [: ^
  45. }
    ; `( J1 E4 u. G' E5 l. o
  46. 3 F; v% E! a. k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! k: D0 P# q% q
  48. {
    5 P- K; Y! c; Z; v
  49.         int fd, ret;
    , S, f$ [! ]0 ~* S0 x9 y0 X
  50.         e2prom_s_cmd arg;
    $ I; R9 p' l2 s3 A' V4 B
  51.         unsigned char buf[0x18];
    - L2 Q- j$ L8 h) k

  52.   M; u3 s& Y" j, t0 n6 n7 M5 A6 S0 h
  53.         memcpy(buf, mac, 6);
    1 a* U2 S+ ]- x; ?( I, T
  54.         memcpy(&buf[6], stbid, 18);* ~8 `5 o$ E) P; v$ m+ }* a; {" q8 o$ j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ U- U9 p! E! @) q* L
  56.         if (fd  < 0) {$ ^* r( k& l& g, K* Z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / g' l" P2 V$ v" ^5 e
  58.                 return -1;2 c8 R8 |, L& Q
  59.         }, C- ~. |/ b' K& D5 N& H5 h) D
  60.         arg.sub_addr_count      = 2;
    , y& m: Y# c8 d" h
  61.         arg.data_count          = 0x18;
    9 Z) ?# G8 ^/ U
  62.         arg.e2prom_cmd_sub_addr = 0x290;' T4 Z( h+ ]9 L
  63.         arg.e2prom_cmd_data     = buf;
    - W, U* U+ ?5 ~) S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ T% x1 W. ]& h
  65.         if (ret != 0) {, A/ u" b/ X( H5 ]: ?  O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: i' G" V/ S0 }. Y* b7 R  A
  67.                 return -1;4 P+ L% J9 m; _( S
  68.         }
    ) ?7 {; @" w+ j. Y6 `1 Y" V

  69. / u2 H$ ^" ]4 h# m2 n5 U
  70.         return 0;" s  l, Q. U- B. U$ |: H
  71. }
    % x0 `$ C  q6 d2 i: e. C
  72. ' f2 v8 N5 S  S' X4 {* G
  73. int main()9 _4 M# i- @) y/ p, O
  74. {5 d+ r, j! {3 Q6 Y! X+ C
  75.         char c;3 Q4 D7 m' g5 n2 `' \- e, c
  76.         int i, macs[6];
    6 R3 n& _0 K. J: l, f' v7 o
  77.         unsigned char mac[6];- q: {) q$ i& _6 B, [0 K
  78.         unsigned char stbid[256];+ u6 K" H( d' |5 I
  79. ! S; z: b  b. T
  80.         if (readparam(mac, stbid) < 0), n! S" ?; O; ^3 U- C; Y
  81.                 return 1;, [6 x. K  A8 R" }, y
  82. ' {. q( P0 o& R  c: m
  83.         printf("Current parameters: \n");
    9 F1 k% U7 V3 V# _+ _, a
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! E$ B% @! |* L2 i9 |5 o5 _! |' m9 j
  85.         printf("  STBID: %s\n", stbid);, l& K) }: h3 M3 h
  86.        
    / q$ I$ t2 U* d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & d: {0 T& o5 F6 O5 ]; j) Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % }. |5 h8 J' R# a, \# S
  89.                 printf("Input MAC error\n");
    3 L5 [! s9 T* G3 w2 d
  90.                 return 1;
    7 W9 M* o5 E% \; k, }
  91.         }
    $ r* Y& ~- f* C  m! u: I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' b; Y, t" I' z  M& k( @
  93.         printf("\nPlease input new STBID: ");2 v9 {3 s" A* `% B+ }
  94.         scanf("%s", stbid);
    ' m( D& Z! p- t9 f4 |
  95.         if (strlen(stbid) != 18) {5 q, w* k( b& {# ~" H
  96.                 printf("Invalid stbid\n");: Z# F9 r8 L. r# d) x; b
  97.                 return 1;
    - E" X" S% U* H: ^* U$ _
  98.         }1 Q# t: G! H! o1 n) ?
  99.         printf("\nNew parameters: \n");
    7 D0 f. ]( h% ^9 y4 R1 \4 D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! G! S% g0 `, M
  101.         printf("  STBID: %s\n", stbid);  y" I' A+ L% t3 H1 t/ K7 c

  102. ! i3 L, m, p( }
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; ?3 g, N& ~8 @5 e! ]# u- h) q7 A" [5 q
  104.         for (;;) {, C; b/ W# z7 h% n( M; \
  105.                 c = getchar();; |; T& K% C% F4 y
  106.                 if (c == 'y' || c == 'Y')
    ! s- |! \$ ~) B6 ~8 d$ c
  107.                         break;- |- Q# C" P+ f* Q; y  z1 B
  108.                 if (c == 'n' || c == 'N') {( ~, Y- \9 ~0 t4 e
  109.                         printf("\nAborted.\n");
    $ V; A# Q# O8 P7 u+ Y
  110.                         return 1;
    4 N" A5 H: i' W5 F
  111.                 }" w+ k0 U; f+ g
  112.         }/ v! e$ M  O0 o& I% B1 j( c7 e
  113.         if (writeparam(mac, stbid) == 0) 6 I; x* h% Y9 F
  114.                 printf("Parameters changed.\n");
    7 E, n' I9 r: P! \
  115. " [9 ~! ^4 C$ r6 o3 C2 d; l
  116.         return 0;
    2 q1 A0 X% y3 X4 a+ \" m9 \! k) k
  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
5 `! ?2 u6 z  W' [# |' E在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 O! c7 ?7 W/ A( L* A, N- D
你用的编译命令行格式是什么?5 s# G$ r4 X* b3 n( F$ B4 ?1 q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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