查看: 16226|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, a7 `. V5 _( i/ U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig( E0 M5 n5 K( s6 j7 Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 z3 v% |2 F% L4 z% }3 k! Musage: himr <address> <value>. sample: himr 0x80040000 0x0
+ |- e3 y( H" U( B. Y& d% \2 X- C2 ?7 `$ z3 `- R+ L9 @" m- S
; p2 O, @- Z) |: w* @
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ ]  Y4 }7 `3 u$ o2 O3 K
: s5 \5 J3 G2 p- f1 D9 W, Y$ g
补充内容 (2012-3-8 09:42):: @# E: Y; p! `  u9 J9 e
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ L5 R3 }5 R# S& D: F, \& V这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。' Z! R. n5 Q* {) Q: I: w- v6 z

5 D( s5 D$ g5 b6 w0 Rhimr <address> <value>. sample: himr 0x80040000 0x07 g: T' M. b/ W5 R  e% G3 k

4 V2 W3 S7 _( d例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  n# |7 ~8 v: I' ~* v) k  l, Y! Hhimr 0x80040000 0x007 c' G' q" K# N1 E
himr 0x80040001 0x11) O$ N9 {2 p% P+ D: R, J
himr 0x80040002 0x227 e1 X% @5 m4 `9 S
himr 0x80040003 0x33% e8 U; ]3 R9 S& e
himr 0x80040004 0x445 u  ~/ S$ C; ?3 v  Z
himr 0x80040005 0x55
- r  M( [6 s% ^  q  g
  y% W* d9 A4 k7 o1 h" L, rSN也是类似。* i, [* |, X$ l/ _) m5 ~
' b5 D! U( _' T% Y5 k
现在主要是,谁告诉我们MAC和SN的地址?! |( l5 c! M. d
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' d& B. A6 e3 Z6 s7 C* j
一直想找到运程修改MAC和SN的办法,苦于无解啊

( B% B8 O7 q6 E. ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 V$ h! n- p3 l1 ?; k) Z8 y
8 a, }" ^3 S1 L8 R6 J- S2 f
修改的代码早有了。到今天不会编译。
# o% w0 G) h! w1 J' @1 C  i. I需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 f3 f% C* V8 @3 A8 j+ G' ^" k9 r! N* h
  2. #include <malloc.h>
    : E1 _0 _% |, c" n" N
  3. #include <sys/types.h>
    / P5 E7 ~/ Z2 p+ G3 B/ O
  4. #include <sys/stat.h>& t  k8 X+ c, \0 L( |# J( w
  5. #include <sys/ioctl.h>/ P6 f7 Q1 @$ H! K
  6. #include <stdio.h>
    3 k% \" {$ B! k" p2 N; y
  7. #include <string.h>4 z. _* L( }+ W* X3 t
  8. ; _- @/ \& [: T  U4 Y
  9. typedef struct {" z! \, c1 I  ^+ @  D# N
  10.         unsigned int        e2prom_cmd_sub_addr;
    / n8 H/ T, g8 }" L
  11.         unsigned int        sub_addr_count;
    0 g( O$ \+ N6 s
  12.         unsigned char*        e2prom_cmd_data;
    & |; ^* [1 G/ @0 a( }/ N; T$ c8 U
  13.         unsigned int        data_count;
    $ l4 T. d: l8 \) b. t% }8 ~
  14. } e2prom_s_cmd;
    . N4 a7 \+ U& c
  15. 5 K+ j" K5 l2 j' Q& p) [; i
  16. #define E2PROM_CMD_READ 1! B" h6 w7 m. L- L0 K- u& H
  17. #define E2PROM_CMD_WRITE 2
    4 Y- U) E6 H7 J# @( Q" D9 T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # h# P  B( w9 r/ F, q& _$ N$ S
  19. 7 |$ {8 e0 O2 m$ u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 h( o. |$ ~. B+ ~( [( U; O
  21. {
    . \6 ~& i7 k; ~
  22.         int fd, ret;3 j, V( _: n5 ~2 x- K
  23.         e2prom_s_cmd arg;' M+ e# `" E# a
  24.         unsigned char buf[0x18];
    ; M8 x( S1 x& ]0 L9 g2 F# A) a
  25. $ @9 E, k, P( ]* {5 t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . m  ^% ~+ y2 D; m
  27.         if (fd  < 0) {6 \. l9 M9 f9 B: g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' t3 l9 k4 s; J( R
  29.                 return -1;
    - j' H, o# a" D) d: d, v& o
  30.         }7 S, m3 p5 {, P& s1 o% p  T
  31.         arg.sub_addr_count      = 2;3 ~1 Q8 Y9 ^1 y0 l' X8 W# ?
  32.         arg.data_count          = 0x18;: v6 U+ Q& g& K+ y( Z
  33.         arg.e2prom_cmd_sub_addr = 0x290;& {9 c4 P0 ?- n- |9 L; H# o
  34.         arg.e2prom_cmd_data     = buf;
    : f& n, b1 l: O, t6 G: z6 g* ~3 A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: K" o4 A1 x' w) U9 h
  36.         if (ret != 0) {
    5 H8 r* K9 W8 D+ ~# Z4 l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; `5 j+ x. q% K8 r) I- j8 s
  38.                 return -1;" }8 ]4 ]2 a0 x# L
  39.         }
    $ j4 g0 w6 x8 ]' y
  40.         memcpy(mac, buf, 6);! C  t) i! N6 U
  41.         memcpy(stbid, &buf[6], 18);
    , }* h! x: Z: \, m! U
  42.         stbid[18] = '\0';
    , M! W3 E. E- `) Y( V

  43. 3 q4 t7 s, }  E, j& }4 d5 L; Q
  44.         return 0;6 k* Z" f2 y2 g. y; u
  45. }
    9 `6 z: V3 q3 R6 p

  46. ; n/ G. l6 j+ M# d# l
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% u4 c% \( m  q$ A/ Q" t$ q# _
  48. {
    3 H/ Q2 y* Z" Q
  49.         int fd, ret;( e6 C9 b; Y2 K  ?8 }
  50.         e2prom_s_cmd arg;; R. V5 M6 f: _* U% E
  51.         unsigned char buf[0x18];. Z1 U; y3 |% V$ r- Q* M0 D

  52. 3 m5 X9 l8 B# V+ r0 R
  53.         memcpy(buf, mac, 6);6 f8 ?, ^6 s$ ?, T: P) s' j
  54.         memcpy(&buf[6], stbid, 18);
    ; r7 a- X; x9 {4 `' s6 j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : Y, S7 D$ Q& u* C# Y
  56.         if (fd  < 0) {
    3 L9 O& {* F0 v6 n3 \4 |1 z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* g: Z2 ^7 o- P% X: |. c
  58.                 return -1;) j9 J/ F$ ~8 ~4 k; X
  59.         }
    1 \. {& z8 L# i+ K
  60.         arg.sub_addr_count      = 2;* X3 o' ]( s9 s) x+ u& W& i7 v
  61.         arg.data_count          = 0x18;" p3 T. |1 b, g- Y( O$ S+ a. d: l
  62.         arg.e2prom_cmd_sub_addr = 0x290;- n5 M& A# l7 S& J2 C& c' M3 o# t
  63.         arg.e2prom_cmd_data     = buf;
    $ o, n' g8 P; ?) V( u9 Y1 A( J, j3 I
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + Z% v4 ?0 A6 G% w7 g
  65.         if (ret != 0) {
      F! e! p) D# C; E  h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * ^9 o1 V2 D0 V5 h8 o
  67.                 return -1;
    9 z( K- J- N, u) v# A" ?
  68.         }, r- d7 q  h2 u2 ^. t% o& A2 _

  69. 7 X" \/ x3 h& B" n4 t) h
  70.         return 0;/ \+ P) B) ~2 z* E8 c6 p( q9 ?
  71. }2 U! T' ~  v! v9 E1 x
  72. / O9 }- ^+ N! q0 m
  73. int main()
    : D1 E, K1 o& n3 d' ]/ R
  74. {
    5 A- @( C3 C% C, ^. W& x* }2 U
  75.         char c;
    4 o# j- g7 A5 s" O2 u
  76.         int i, macs[6];2 c, v, k# O* J3 X/ R
  77.         unsigned char mac[6];
    6 y# e0 o! v  n
  78.         unsigned char stbid[256];
    - [% e7 {% O$ Q) d" s5 U

  79. % B5 A- j$ J) j! K  ~$ N
  80.         if (readparam(mac, stbid) < 0)0 s: X$ R2 @) K# i
  81.                 return 1;
    ! J# O, G+ ]: t  n; X

  82. 7 p- q0 P* K1 R7 W( c5 e& T6 R
  83.         printf("Current parameters: \n");- K& g9 H4 B$ h' Q, R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # M3 Z0 H! [; P
  85.         printf("  STBID: %s\n", stbid);
    9 D( B0 I+ f% m) c0 K/ W; Z! U
  86.        
    ( r/ J; g% {' e; i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ U! y: T5 c$ C5 q6 r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 |! b% [8 ^+ _* A# r- v! e
  89.                 printf("Input MAC error\n");
    / I" G6 \/ W. i# y$ b/ c3 i
  90.                 return 1;
    * z/ a) W7 y4 A; E
  91.         }6 V" u/ C( K: Z: i# l, S8 F, z8 t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 {+ W% Z0 ?4 v# {: u
  93.         printf("\nPlease input new STBID: ");
    + Y/ I3 p; `  Q2 I& I
  94.         scanf("%s", stbid);3 F$ q, u: V! o) q5 G' ~; d
  95.         if (strlen(stbid) != 18) {- l3 d& c2 x1 V5 f6 e
  96.                 printf("Invalid stbid\n");
    # W0 `/ U* d% |6 g! b# J
  97.                 return 1;
    7 g! n# C1 u- S/ r9 l
  98.         }7 j! n" O: l# x6 l( V# @* m0 q! V
  99.         printf("\nNew parameters: \n");
    1 }* u: W0 D3 d% J! l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) N- c8 V; ?" j5 H
  101.         printf("  STBID: %s\n", stbid);
    , K# g  ?1 b+ O. k6 P4 g
  102. , Y8 |* l9 y  b7 j7 w
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 c: W. ]* x6 K9 {3 q  P' S
  104.         for (;;) {
    : f( t2 u  P1 t" {7 h( |$ {& U
  105.                 c = getchar();
    ( m  x, Y/ P4 s. c* A) h
  106.                 if (c == 'y' || c == 'Y')
    8 ~; _6 P3 K1 k7 [6 i3 ], d
  107.                         break;
    ' Y! `! i/ B* W; }% t! F, F! y
  108.                 if (c == 'n' || c == 'N') {
    9 i+ ?( \: N) @/ `
  109.                         printf("\nAborted.\n");' \2 G# i! @# z: j' h; T
  110.                         return 1;
    : g3 q. C& c! c! g6 N
  111.                 }' e) d" r4 |0 z( O/ O
  112.         }
    ; |9 L3 y+ Z9 Z  ^- \2 E& u
  113.         if (writeparam(mac, stbid) == 0) . V/ v3 |+ e* _4 ?$ E
  114.                 printf("Parameters changed.\n");
    ) a5 d# `2 u, ?9 J, c. ~$ K

  115. - B3 S8 M6 F* `! c! E6 i6 Z3 R
  116.         return 0;
      W/ v. y/ C5 x0 ]; Q, {
  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
2 f, R4 }% d% i1 O8 V+ q  x在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 _4 Q0 L% G; Q. u3 `. v* c你用的编译命令行格式是什么?% }  V1 _5 X! A& j2 \
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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