查看: 16541|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( R1 a$ e2 q7 H( S! D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% U, A8 O9 t1 Q, i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
7 E2 b1 f% W  J) i9 G2 x" a. dusage: himr <address> <value>. sample: himr 0x80040000 0x0
- Z; y* o- e. B& g  h6 s0 h; a" Y9 Z; c# N1 u

# F/ }2 X3 O7 \) w& b$ }不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 X) i7 p3 D% I7 p; H: R
( ]# v( }% @: s$ _5 ]1 D
补充内容 (2012-3-8 09:42):
8 R# \8 |' ~; E5 |4 Q1 uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 [& W# h; Q: e8 E; l
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
( u: f: o% A/ c6 E1 I$ r
. ?  q& d9 q+ z7 H1 chimr <address> <value>. sample: himr 0x80040000 0x0
, g' P; r3 ^- i9 ?' s: I; t  E' m8 q+ U3 S( r3 H' ?
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# B: p9 A/ B( K0 [
himr 0x80040000 0x008 }& o" _- e; J1 M5 Z* h
himr 0x80040001 0x11% l$ J8 j; n9 H" u& b
himr 0x80040002 0x22. R9 v9 Z' l2 v; u3 K5 O- E! k
himr 0x80040003 0x332 {. h; s( m. [: e6 l; y$ Z
himr 0x80040004 0x44
2 m( ?+ a1 K' h6 D" Xhimr 0x80040005 0x55
9 X' {) q% f: A4 l+ G7 `& b
% b  c+ t: c, E3 MSN也是类似。
5 i# v% A1 ^. d6 f$ `
3 `! T; ~9 _" R: p" D( u现在主要是,谁告诉我们MAC和SN的地址?- B% w$ n! R6 L5 @* X; D
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% O2 B6 \- }; {$ N! n, N" ?一直想找到运程修改MAC和SN的办法,苦于无解啊

  o8 R$ o7 H, {3 E6 [% X源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 0 G+ U2 Y/ B  K: Q, W

; Q; i2 i% V. Q% W  j  I修改的代码早有了。到今天不会编译。# ~8 W4 @6 ~. U( T5 ~3 P$ l2 s% S1 f7 U
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 ~' l! x, E* I0 c* v$ n$ ^4 I, d# N6 h
  2. #include <malloc.h>
    ; L, [; U/ f+ ?+ A3 x
  3. #include <sys/types.h>
    + ?& E" d, C8 z+ ~$ D0 w: X
  4. #include <sys/stat.h>
    - e$ ^4 j7 u1 G4 r3 p( j- H8 `5 y
  5. #include <sys/ioctl.h>" U. K$ z+ i3 C/ S
  6. #include <stdio.h>7 k4 N- D  v# Q  [7 L' L# Y3 ^6 ?
  7. #include <string.h>. N/ Y& z6 y$ {( ]& z

  8. 8 q8 i5 C0 d, R: B$ M
  9. typedef struct {
    ; b+ f. c' v8 M
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) @/ M" |- V/ e, p2 Z- J, \
  11.         unsigned int        sub_addr_count;0 L0 ]% Z( \- }* `# f0 E: Y9 S
  12.         unsigned char*        e2prom_cmd_data;
    + B& x6 O" p, e0 Q) z& x
  13.         unsigned int        data_count;
    6 c+ ]" r, w, X7 K6 q
  14. } e2prom_s_cmd;) a- q# i, i, ]% P6 k& H

  15. # h1 t/ I+ b0 U6 A" r9 r
  16. #define E2PROM_CMD_READ 1
    ( P' H+ P# b, p: @
  17. #define E2PROM_CMD_WRITE 2+ D5 o1 V7 G6 p0 z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! v5 u1 m  j8 c: ^5 x* m) u
  19. ( R& m6 E6 T: j5 g
  20. static int readparam(unsigned char *mac, unsigned char *stbid), {3 A/ B7 B7 |" P1 y
  21. {
    , b( c8 o! b$ }7 }
  22.         int fd, ret;
    ! q$ T$ n) B# Y6 l" G- n; s7 f% y
  23.         e2prom_s_cmd arg;
    . Y' k0 g! J7 @9 [) a
  24.         unsigned char buf[0x18];
    & _  u& u, j1 W8 y# F% P
  25. 4 C% P/ f) t0 @4 j) H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 E+ V+ g1 o- h' |# ?
  27.         if (fd  < 0) {
    ; w( X# P) R2 p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) ?: o* I8 E/ u( l* t* x: I- l, A
  29.                 return -1;
    & n2 B0 R! }8 E( v" ^0 ~2 y0 o
  30.         }
    & I6 H$ t  V2 s, Z* @1 Y- t3 Y
  31.         arg.sub_addr_count      = 2;
    : n4 z" _6 H) Y% c
  32.         arg.data_count          = 0x18;0 ?! T+ L3 f9 D7 ~. a6 t
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) I& }- u! ?  g* {
  34.         arg.e2prom_cmd_data     = buf;
    - t/ f* x8 E( G3 C9 O  V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( v5 j& Q  \+ d2 z
  36.         if (ret != 0) {4 E6 ~, G& M* \* T/ {- d' l! A
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ( {, R! W* N) z; a/ O' g$ L
  38.                 return -1;. B6 P+ E% B1 n7 g3 S
  39.         }
    + ]. k- [8 c+ B! e" S
  40.         memcpy(mac, buf, 6);( ?% r4 f6 u/ N3 d+ u$ u9 P: Q0 n. n
  41.         memcpy(stbid, &buf[6], 18);
    & g- \" B9 C3 t4 {/ G
  42.         stbid[18] = '\0';
    4 E) C1 H' J/ U/ y

  43. . g$ w4 `7 G7 P$ W) I. j9 L
  44.         return 0;$ }  k; s1 k: ?' l
  45. }
    # E+ j! `; J1 n$ a' c$ w9 t
  46. 3 ^5 S+ z, M$ X8 m' s4 h# v) c& Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / e" W. b3 ~. `% R! [8 u8 a3 x
  48. {
    2 n) x% d: t$ k3 T8 |/ }
  49.         int fd, ret;; U+ S: H1 T' B
  50.         e2prom_s_cmd arg;
      H6 h9 W" i# Y; C( b# f
  51.         unsigned char buf[0x18];
    9 [8 E7 G; a# ]0 `0 o

  52. ) a7 o/ h; F4 h' S+ V! m6 t
  53.         memcpy(buf, mac, 6);
    & t0 A6 r$ {% m% X7 |
  54.         memcpy(&buf[6], stbid, 18);, C3 B( e* F7 Z) i* Z; \8 L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 i% a* \# J% T9 L
  56.         if (fd  < 0) {0 v/ p% |( W, g, I2 H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 |; G0 `0 r4 L- t
  58.                 return -1;
    / C9 J4 h- E; d
  59.         }
    : ^7 N% b- F4 t% A# A* n, \
  60.         arg.sub_addr_count      = 2;
    : h1 I' z, I5 n
  61.         arg.data_count          = 0x18;% v& K: y5 k1 R8 O
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ U; c. e' l9 V; c0 J; x6 @; q4 O
  63.         arg.e2prom_cmd_data     = buf;+ D1 n1 C# ^1 Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 X2 b0 `% {% u4 {: k
  65.         if (ret != 0) {( B, H! z# w$ i) S  S$ G
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ [. n( \) u, ]+ u
  67.                 return -1;& i& u3 g9 o7 N; }$ ?
  68.         }
    * f. C9 K5 T7 J+ x$ c- [
  69. / X. _2 W, G3 B) r& Z
  70.         return 0;
    ( Z; ]  U8 i+ Y1 m
  71. }  t9 j% V1 L) J3 e% }' }) W( m
  72. 8 C/ I; D  G1 u9 g, D/ Y5 g3 e
  73. int main(). R  o1 N! W5 c5 ]
  74. {, `) d8 k9 Z/ h' L
  75.         char c;9 ~( _( k% y- ^: d) ~. l0 u! x# c
  76.         int i, macs[6];
    * i: H" f7 B, O
  77.         unsigned char mac[6];9 v6 b3 b1 T4 l& A
  78.         unsigned char stbid[256];
    # {/ s* z; X& i2 K9 f

  79. 0 n& Z1 G) ]/ b, W; r: \+ K$ D0 g2 ]
  80.         if (readparam(mac, stbid) < 0)
    - ?  M+ K1 {& @; ?5 ]
  81.                 return 1;
    ; J  G7 {8 z  V. w7 x! t1 q5 P

  82. ) }" E0 `5 ], E9 w
  83.         printf("Current parameters: \n");! Q# d; p. s# t0 o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 @$ a2 a! R2 B3 n: {( N- l
  85.         printf("  STBID: %s\n", stbid);) e9 d5 Q! a: \# B* h! O6 b+ B
  86.        
    6 D5 G% f5 r8 d2 }0 o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! i2 w$ Z# D' V# U% x4 `2 X5 V, ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  L3 k9 Z- h1 \* D3 g+ b
  89.                 printf("Input MAC error\n");
    / `+ B* R1 A9 H: _
  90.                 return 1;' }, e- k2 s8 \5 H+ N. X
  91.         }
    ) V/ ?- L2 w( }( D7 z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , l$ K2 q  w/ ^% D/ P# X
  93.         printf("\nPlease input new STBID: ");6 y% v! j. M- D% |0 }
  94.         scanf("%s", stbid);4 r- A/ f0 k/ j# K6 T
  95.         if (strlen(stbid) != 18) {
    9 N$ p5 \  ?# J% h5 t
  96.                 printf("Invalid stbid\n");7 C, i9 o$ T; a/ P
  97.                 return 1;# n. o6 d! _% A( e0 O
  98.         }
    * q$ w! t7 w6 i* @3 ?3 T
  99.         printf("\nNew parameters: \n");
      R) Q5 Q7 G; V( e5 @: v
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" `1 ?: F( U2 K7 m
  101.         printf("  STBID: %s\n", stbid);
    8 h/ `& M1 e3 j) I: y) ?& G4 \2 Z) U
  102. 7 _3 X" i  \. J! k7 H& r+ H
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ Q* z1 E) s) b
  104.         for (;;) {
    4 E/ _% o+ X2 ]
  105.                 c = getchar();
      R2 k- u, s/ G0 ?
  106.                 if (c == 'y' || c == 'Y')" O$ P/ E, I& O% H5 E' a
  107.                         break;
    ' Y; i9 r2 L( d2 R* ?9 p5 Y
  108.                 if (c == 'n' || c == 'N') {1 u, C& \0 Q* w4 C( O& I1 S
  109.                         printf("\nAborted.\n");
    $ l3 ^* Z6 l- y) n
  110.                         return 1;
    . y3 b' x! l% O0 c
  111.                 }5 Z4 O4 i- L. H5 w& H
  112.         }
    2 Q5 \2 k. t# N) t1 N) W& b( W
  113.         if (writeparam(mac, stbid) == 0) 5 [+ W1 Y  }5 p5 T
  114.                 printf("Parameters changed.\n");1 w1 q5 H5 S; e

  115. 8 `9 N, ]- k- E* }
  116.         return 0;
    & e5 c2 l7 H% G
  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
0 E, s8 E" g" F! q) |/ |! f; H. r在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 }& b/ B8 f) ?! j( _你用的编译命令行格式是什么?% j; y2 r/ D: j8 Y. W* o2 G
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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