查看: 16466|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( e7 @& r! A' b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* W& Y; k8 ^4 V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 I# W( W3 Y/ k! L$ f( lusage: himr <address> <value>. sample: himr 0x80040000 0x07 x/ z5 R6 q- d" ]0 I- R

3 u% X0 E- V' P. `( o/ ^
  }8 w  h  v2 g6 w/ }' _不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: v( f% t; \; B: `( I5 @) o% u
- s* h  W4 U. J补充内容 (2012-3-8 09:42):% T- j% z" [8 p/ q4 b" g( F: O! X: l  s- W
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% B: |) E; l2 x/ m
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
/ |7 O( r# N9 ^: Q' H" j
+ b6 r+ B1 d4 @! |himr <address> <value>. sample: himr 0x80040000 0x0: |+ A* S; L, G/ L9 Z

* k1 t3 [( Y6 T4 Q+ v, ~" y例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( y* F8 I* t4 g; o
himr 0x80040000 0x00
6 Y# i0 D5 u8 G! B& X4 ahimr 0x80040001 0x112 o7 W; K; F+ r' \( ^8 p
himr 0x80040002 0x22
: X0 y  M) J# D- y9 R7 H( Yhimr 0x80040003 0x33  S) |. R* Z8 k  |& E4 n- C
himr 0x80040004 0x444 s9 R3 Y2 t# T5 P
himr 0x80040005 0x55/ n4 ^# Y9 C9 _) l' |& d# S

. S9 ?& ]7 k5 e( h9 JSN也是类似。
7 t2 `/ X: l7 k& ?7 d8 q( A7 p
# O6 ^; q1 i3 p; W& U: w7 v0 b现在主要是,谁告诉我们MAC和SN的地址?
6 J( o) l, y, u+ N' e
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 @# t* t* C) m7 C6 B一直想找到运程修改MAC和SN的办法,苦于无解啊
3 B3 m% u+ z! c/ q, r/ l
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : N+ C' a) p; N4 J9 ?0 i9 ^* P
4 \: ?" @* q3 u2 q
修改的代码早有了。到今天不会编译。
+ o$ W# b: I  e6 X需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 C: _# e; q- P! }
  2. #include <malloc.h>
    ) {& N+ a) m0 T
  3. #include <sys/types.h>
      A' I5 d9 S( B/ m- g8 d/ c0 s1 R
  4. #include <sys/stat.h>
    6 v7 F) M& a, z7 K0 `
  5. #include <sys/ioctl.h>
    $ O2 D& Q( @- U. V5 |4 [$ o1 k" d
  6. #include <stdio.h>
    ) T# p' M/ I- e
  7. #include <string.h>; S  u& r. ?4 U. c/ ?- o

  8. 1 v  c* U2 x1 h% w& S" p$ x' Z. m
  9. typedef struct {( ?+ [& p" }4 J2 x
  10.         unsigned int        e2prom_cmd_sub_addr;# R9 H5 j' L8 ?. A' a$ C
  11.         unsigned int        sub_addr_count;
    * H( K0 M) O0 k7 m$ s7 J
  12.         unsigned char*        e2prom_cmd_data;
    # |. K1 Z: J8 n, |- k/ |, j
  13.         unsigned int        data_count;
      ]4 y& _9 V  w$ M) j
  14. } e2prom_s_cmd;+ H! ~+ h! z. e
  15. - N, k+ M# W) n+ `3 Z  o
  16. #define E2PROM_CMD_READ 1
    $ G6 w8 _: T* o4 e8 p
  17. #define E2PROM_CMD_WRITE 2
    % f8 k. y; ~8 X. M
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 I; U5 [7 r# @( y# D

  19. * K0 t/ c* @) [! q$ Y7 m# \; e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 t! _2 _' x$ B+ z$ g7 L
  21. {) L( _- d* V, R$ a
  22.         int fd, ret;: ]' @) U0 V1 `3 |! f# T
  23.         e2prom_s_cmd arg;
    6 |9 N& V9 z( k
  24.         unsigned char buf[0x18];* M/ q% J1 G" Z- K

  25. . k2 P: o8 o7 Q5 J' d
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 ^3 \) I) U& \: M
  27.         if (fd  < 0) {
    1 O7 b1 z" r& _1 o+ f/ M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);" A- q4 ]9 k3 o5 W2 P3 {
  29.                 return -1;( b/ x. V6 v; k' `3 h
  30.         }
    $ F& X9 o& z7 R  \* S6 a; y
  31.         arg.sub_addr_count      = 2;
    $ ]( Y9 l3 H0 H$ P
  32.         arg.data_count          = 0x18;$ l0 q+ K% A4 t4 T7 h+ o9 D
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " m) k- m% F5 l
  34.         arg.e2prom_cmd_data     = buf;- G% ]! j$ L  J! {0 u/ x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# T1 E. ^5 v- Y7 R  \, A
  36.         if (ret != 0) {
    ) t4 d. N% j; Q/ c
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 Q4 \% i  s0 g9 n+ h
  38.                 return -1;
    6 _6 o! ^5 W1 `
  39.         }
    " F  |2 w7 D: B# \
  40.         memcpy(mac, buf, 6);
    4 ]- f) P" Q* d
  41.         memcpy(stbid, &buf[6], 18);
    3 f( W! Z# W0 P( K! W
  42.         stbid[18] = '\0';$ z5 n5 |2 A  g  S9 A1 B- L

  43. 4 F! u7 V) i6 Z+ F  b
  44.         return 0;
    - u3 v8 T8 r; C4 f! a3 b+ n
  45. }/ e' B4 _( v. n1 Y4 v: a
  46. + ?4 X4 {3 g9 q) Z% y% K4 B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ ]7 Y2 i9 ^. ?  M& S) b3 h3 r
  48. {  r8 f+ V1 e9 D! d9 K" R% S
  49.         int fd, ret;
    3 o1 p  t0 W8 Y4 @
  50.         e2prom_s_cmd arg;
    ) L" ], c) e' z* [
  51.         unsigned char buf[0x18];
    1 a( G- I- [; R. a

  52. 9 N' r9 u% d+ p5 P( r
  53.         memcpy(buf, mac, 6);8 Q: ?. [) P, a. E  D: D
  54.         memcpy(&buf[6], stbid, 18);
    & h2 h  R; O7 ^8 @0 V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 _; ~( }7 v' P3 S4 |5 s
  56.         if (fd  < 0) {% S' w  C5 T% T1 i4 x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 H) \7 x4 H: ~8 y, |0 z" S
  58.                 return -1;
    1 H  S' j5 Q  q, k" w4 B9 b
  59.         }7 J! l6 e% [; v" K
  60.         arg.sub_addr_count      = 2;0 m- E" p/ v1 V) g
  61.         arg.data_count          = 0x18;9 q) n% f: G5 ^# ]5 U
  62.         arg.e2prom_cmd_sub_addr = 0x290;& ^/ |  |# L2 A; [
  63.         arg.e2prom_cmd_data     = buf;
    5 R; K* `) k& H7 F  `6 \
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ D) e. f* i* v
  65.         if (ret != 0) {! t$ D. j$ |% Q, h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 s3 e1 E7 W6 b1 }5 o; ~! m; t8 |* a
  67.                 return -1;# L" |& E( q0 ?. u8 b' F/ r/ @
  68.         }
    $ S# a- H$ c3 ^% V; a7 S: C
  69. 2 [- q0 W4 Q. c5 e( M
  70.         return 0;
    7 z- t' P$ j" H4 R' a5 D
  71. }6 M/ g$ i9 ~2 Y+ A* N, N

  72. ' l; h: e0 G4 M/ s" y4 q3 M& J5 P
  73. int main()+ E0 V5 Q2 B( M& {4 |# q
  74. {
    + X" |% ^0 \8 \( u! K
  75.         char c;2 c; P: @' {# y( j& {: c# y5 z) y: v
  76.         int i, macs[6];7 D2 ?# W% n: r8 E
  77.         unsigned char mac[6];
    : z' Y5 q- N+ z+ e8 r6 I( K
  78.         unsigned char stbid[256];0 Z9 |: P# S" V2 F6 b1 N0 r# N

  79. 7 [( B+ ]6 ?- k5 ], f. D
  80.         if (readparam(mac, stbid) < 0)
    9 `0 z6 t  b4 L% d
  81.                 return 1;' R  c8 {7 U1 N

  82. 3 n/ }- y* n- e% _+ ]6 d* C+ K+ {
  83.         printf("Current parameters: \n");
    / l% j7 G8 f. ~: j# G
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) j2 i8 t: D* q* y. n/ B& q! x
  85.         printf("  STBID: %s\n", stbid);
    2 ~# b8 @% ~" ~3 S
  86.         2 e  E% h: j' @- t5 D
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! j- y' K9 Y5 d* ]+ d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 b1 a: i4 k5 L, i9 j6 N
  89.                 printf("Input MAC error\n");
    1 }! H$ T# i. _( H4 Y6 d7 z$ ?+ w
  90.                 return 1;& i- t$ }+ D" d% G% c3 W& P
  91.         }' X) R8 u! l8 z# P
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 N( |3 \! i* }. ?' f5 u/ O. `
  93.         printf("\nPlease input new STBID: ");
    - `% h. y9 C+ w; H! ^8 c! f6 r
  94.         scanf("%s", stbid);
    . s0 z* n, k- X$ w( _1 g# N
  95.         if (strlen(stbid) != 18) {
    8 v% w# z4 R0 F0 y% z2 w2 `
  96.                 printf("Invalid stbid\n");& l: \2 g9 d: n: s$ Z
  97.                 return 1;
    : S& M* i$ @- B: m# |
  98.         }
    + W( l% f4 O2 E0 j8 E
  99.         printf("\nNew parameters: \n");
    5 r* }- G# ]# t7 l4 i8 |+ ]
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : ]5 `+ ~" t0 ]+ j" b3 g; y4 q
  101.         printf("  STBID: %s\n", stbid);; L( U3 G/ u9 \% X2 R9 v

  102. ' o1 w9 w2 X* O; ?3 y! g
  103.         printf("\nDo you want to change paramemters? (y/N) ");- W0 S" i. U; p1 y& j' M$ {8 o
  104.         for (;;) {
      {  I" I9 g6 ~0 F7 T9 O
  105.                 c = getchar();
    5 f1 M2 h/ S, M9 p6 g
  106.                 if (c == 'y' || c == 'Y')
    ) k7 G" w/ l- W  s7 N. L0 V
  107.                         break;
    ; x( Z3 |/ f: J( A- s/ s) Z- n
  108.                 if (c == 'n' || c == 'N') {
    3 {+ [0 ^5 u; Q6 X7 W! f
  109.                         printf("\nAborted.\n");6 y8 S: V0 R' k  t# B6 W% P0 I
  110.                         return 1;
    / x6 O+ m5 P. O* S
  111.                 }
    - g  }4 {3 C- ?5 L! g; t  ?
  112.         }
    4 m! f* j) R+ z
  113.         if (writeparam(mac, stbid) == 0)
    , s+ P. z$ m( a" J8 }+ A
  114.                 printf("Parameters changed.\n");2 y4 Y0 n' q- Y' J0 D# o6 ^
  115. 9 ~7 A( |) t; D
  116.         return 0;* M" _% F( R) f/ }4 d
  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 ; Y" x/ M5 V& W5 F
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: J7 {& Q# _! p! m9 N你用的编译命令行格式是什么?
% }- ~# F0 c% S  R- o3 y
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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