查看: 17324|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr' `5 |9 {) k1 j% M1 b9 N5 G
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 S* k- s5 g: F6 J& c; U( `  ~
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:+ {. J2 ]9 j5 t$ u
usage: himr <address> <value>. sample: himr 0x80040000 0x09 J' W5 u1 x4 k3 |8 K. R/ G6 A% ~
2 o" }4 {/ J. ?, y( u5 P0 a
# U# j! j1 L$ O& u+ f* A2 b
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 t. i( a$ @) i
4 T: B# i# h6 r3 _) Q$ U& ?
补充内容 (2012-3-8 09:42):. z: H; k" l0 P1 K: _* s7 W8 u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" l7 `( {$ B" M& ^5 z$ J7 q这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
% U" I; m0 Q: K2 e0 J) l4 q
4 Y" X2 U7 }" G9 H  }himr <address> <value>. sample: himr 0x80040000 0x0
  p8 e& M0 s; _$ E  A4 h- u/ W8 d3 m$ c) G' S
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  x5 G8 S3 m1 V- N, A  R% C, ?5 b
himr 0x80040000 0x004 L9 n, f5 Q7 o4 x8 F
himr 0x80040001 0x11
0 M! Q6 ?! t+ Q$ t0 chimr 0x80040002 0x22
) q2 @: m+ {6 K9 Q: E2 T( Y  }9 Q" Zhimr 0x80040003 0x33' I+ X, `6 y" \  E
himr 0x80040004 0x44; K) w! v5 w6 j5 C
himr 0x80040005 0x55! r2 ~! C# S* c3 n, L( n
  _- {* U- n( j4 m% M  V9 n; k
SN也是类似。" Q! l$ O1 H+ p  ?

! E8 _1 b% t4 s% }& P" Z- I现在主要是,谁告诉我们MAC和SN的地址?
9 N% z' [0 ]9 O7 a; [0 z  I
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# |. X- n. {' w# C# C" A一直想找到运程修改MAC和SN的办法,苦于无解啊
' V8 B' v1 [3 X) W
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) N7 ~7 Y9 R& @
5 n4 ~( ]& p/ _4 Z3 i, s
修改的代码早有了。到今天不会编译。
; r7 _3 S: q+ W1 o* I8 _9 x0 z; L需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) V+ X, U& M+ m# ?0 `
  2. #include <malloc.h>
    & v% u: w1 y  @
  3. #include <sys/types.h>$ A# ?( {' f7 V( P; n
  4. #include <sys/stat.h>
    2 F+ \/ G' y( k- }+ T5 y% Z3 t
  5. #include <sys/ioctl.h>) f5 n, L( h6 `/ F- d1 T9 H+ ]" e
  6. #include <stdio.h>7 A& N# z; y- p, D
  7. #include <string.h>
    * H: s$ j" O  g9 x, {0 Z
  8. " D9 A# z4 c/ b: N  E3 P$ l
  9. typedef struct {0 |9 J* y# i3 H$ e  V' W& u
  10.         unsigned int        e2prom_cmd_sub_addr;  T3 I" L: D  E- `# O$ g% q
  11.         unsigned int        sub_addr_count;
    " A" c0 p7 u  O( K: o. K4 }
  12.         unsigned char*        e2prom_cmd_data;
      N0 `8 N7 G3 a8 H; j' k  t+ W
  13.         unsigned int        data_count;9 W( D* o: Q5 U8 c- M0 |( u
  14. } e2prom_s_cmd;$ F* m& X1 n' ?9 t- X
  15. 8 h- Z  u7 W( D6 _/ Q- ^
  16. #define E2PROM_CMD_READ 1$ X) D$ a! m5 Q  x4 M. Q' V
  17. #define E2PROM_CMD_WRITE 2
    5 \0 @/ v& F# a6 |' {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' j1 z; c- p3 f2 K

  19. " I+ P( \- X6 W# U6 U
  20. static int readparam(unsigned char *mac, unsigned char *stbid), N* P6 ]$ P5 c- B4 e) e% [
  21. {
    ; F% w4 Y) C& f0 }  F3 j! _. L
  22.         int fd, ret;
    ' P# Y! `8 r0 a! D# r! e9 R
  23.         e2prom_s_cmd arg;% s+ N) F/ f+ n- A6 Q+ t
  24.         unsigned char buf[0x18];
    6 d& m# \" B" h8 ^! K
  25. : v5 g! Q! y3 C: ]# e5 e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ E' ]& c" H2 a& J1 }. ]
  27.         if (fd  < 0) {
    2 H" T* ?9 p; p# ?/ Y/ y& v( X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 r& m5 E+ ~4 V" x
  29.                 return -1;/ d' ?3 @3 x$ `6 A% r. n' D
  30.         }
    8 ]$ v5 J+ t0 \! B
  31.         arg.sub_addr_count      = 2;) L5 Y9 y' w3 |7 Y3 H
  32.         arg.data_count          = 0x18;3 y' T; i2 v; j9 z8 h* e+ O2 z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 ^! S, H8 B0 t& Z5 ?/ u
  34.         arg.e2prom_cmd_data     = buf;6 q: ^3 ~. R) {7 F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. ?- A: T, i& w' y1 u( j+ w
  36.         if (ret != 0) {* r* [+ {( c9 I" s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ N+ Y$ c( A  ^9 p4 f: D
  38.                 return -1;- c+ a3 e' K+ e& C- W. F  o( s
  39.         }
    + i- u- U, d& h. I  n) N
  40.         memcpy(mac, buf, 6);
    1 M; K/ i0 \1 t. d. M% ~* |3 k
  41.         memcpy(stbid, &buf[6], 18);
    7 H7 Y# \  q2 c
  42.         stbid[18] = '\0';
    ; C# m9 z+ u  F5 v! G* w8 s

  43. % X& w1 ]4 r1 `/ w  B
  44.         return 0;
    ) R% ~& K/ D* i: Y, ~
  45. }
    . O. R# P& ~) \; s

  46. 6 n. S- {4 X2 `( I. Q1 W* X9 N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    2 ^/ H# t  {  S
  48. {
    ' E! M' {3 ?. J! o  g2 B
  49.         int fd, ret;6 q- R7 M# ?% {2 X( o4 r
  50.         e2prom_s_cmd arg;: r3 q$ b; K- ?; o! u, L
  51.         unsigned char buf[0x18];
    3 K1 ~9 b8 _6 w7 h. F/ O/ ]: C6 X

  52. ! G% D' V& ]  _& K1 H
  53.         memcpy(buf, mac, 6);
    ' K. e: u6 {! e: ~
  54.         memcpy(&buf[6], stbid, 18);6 H& E' j- a8 t3 ~9 Z8 B; @- `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( b# D3 j# x# r' \. {: a/ l
  56.         if (fd  < 0) {
    * s4 ~" J( U2 @8 U; v5 `4 k1 q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % f8 F, ?% K- ]$ A+ I0 u4 j. E6 j
  58.                 return -1;/ @' e) S- E9 R0 {1 i, w6 b
  59.         }
    1 v  C8 u. D; ]4 {4 @7 L3 P
  60.         arg.sub_addr_count      = 2;
    / F& g/ i: l8 o: }" e! d
  61.         arg.data_count          = 0x18;
    4 ~- \8 ^6 x: R  ?) k  \
  62.         arg.e2prom_cmd_sub_addr = 0x290;: {9 [" Y8 Z# L# A  S9 Q
  63.         arg.e2prom_cmd_data     = buf;
    ! c. v$ K' G8 F3 G8 \
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 D' Y+ y" K7 X" B8 M' e! t
  65.         if (ret != 0) {
    $ ~/ G2 H% ~0 w( T: T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 z9 D% t( [" s% m
  67.                 return -1;
    ' R0 F+ ]( {" W. E. k' x
  68.         }$ ^: R! S0 t. d0 W

  69. & o4 j+ u# a# k& p
  70.         return 0;  a& z8 h# O6 T% I7 {
  71. }  q* ~; ~7 N7 e  r3 e; }: C3 F( C! e

  72. ( S9 f0 @1 ^# k; C
  73. int main()
    ' |8 i) `4 x, T9 A) I% Q2 b2 T
  74. {
    - x. {4 f# X2 O7 o! k
  75.         char c;
    % M9 j& y7 r& H# e6 F8 t" C
  76.         int i, macs[6];  k6 g, A, ~6 g1 s+ n
  77.         unsigned char mac[6];
    2 b& X8 @0 h! P; l& l
  78.         unsigned char stbid[256];
    $ |% U4 X1 F# p4 Z4 L# t: K
  79. 5 B" U2 X" V3 D8 v# J. N) f
  80.         if (readparam(mac, stbid) < 0), s" ~8 G$ ]4 l3 K# G9 A
  81.                 return 1;
    0 k3 M4 w: N( O; t

  82. $ }7 d2 |9 j7 M
  83.         printf("Current parameters: \n");
    " X5 p' p" G( S& a( z/ C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# R# W9 H! w. X9 `3 X
  85.         printf("  STBID: %s\n", stbid);
    ( I  K: o& x7 Y$ ?
  86.        
    " u; |0 A% r5 v% F: `: y9 \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. u/ ~7 O% z* [8 G8 }4 J
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& T5 H; H( w2 }1 S
  89.                 printf("Input MAC error\n");
    & G4 E, U" r- U% C, N* c# v* p
  90.                 return 1;
    $ e( B+ K' W! o( u
  91.         }
    1 G# r- ]; H; `/ g( M! t8 _$ _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    + m5 u& n9 `  D: L( H8 W- p* O3 a
  93.         printf("\nPlease input new STBID: ");
    : V- d& n( g. O* P: U
  94.         scanf("%s", stbid);
    ( m4 W  _9 U5 Y! Q
  95.         if (strlen(stbid) != 18) {" X& Z* G+ g. ~8 m; _4 A1 F
  96.                 printf("Invalid stbid\n");
    ! L! ?( H( X' w, X& N1 B3 `( u2 M
  97.                 return 1;
    . f$ w& N- Q8 ^* \5 v6 h5 ?
  98.         }' I& b6 R2 [9 t5 b' j0 p" B
  99.         printf("\nNew parameters: \n");
    ; \+ g2 D$ a6 p" x, w$ q3 ^! \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , P7 X  \/ e- |0 P/ {
  101.         printf("  STBID: %s\n", stbid);: \# m# w! M6 n1 |1 ~% T( ]

  102. 9 [+ f" _0 Q5 J0 J
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 |$ G" y4 y, t. u) i1 y2 N
  104.         for (;;) {
    , I6 k4 `4 M, D
  105.                 c = getchar();7 F! O7 Y9 q) }: U& R) f
  106.                 if (c == 'y' || c == 'Y')& A4 \* [' x- g* C2 C. w* H
  107.                         break;  l4 S; `$ D: B( ^* S$ l
  108.                 if (c == 'n' || c == 'N') {
    3 x2 p( ?' x1 O) T) }' n' A: r
  109.                         printf("\nAborted.\n");
    3 x/ [. Q# o) }, L% R3 y
  110.                         return 1;- K4 c4 W# w* n5 `  B" c3 ?
  111.                 }
    , u9 o( r; Q1 ]- l; j$ a
  112.         }& f! d$ q+ I' i0 _+ s4 A; c  m
  113.         if (writeparam(mac, stbid) == 0)
    $ ]$ v8 R7 F- P# m: ^
  114.                 printf("Parameters changed.\n");
    9 e/ K& D3 M4 r6 T+ o: x

  115.   ?1 |( k+ L3 _3 O0 Y5 N2 D
  116.         return 0;' @) x/ c, W0 j% k  F) p
  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
, B; q4 _2 X0 M5 P! J在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; b2 M( J) \3 w% }8 J1 C) a
你用的编译命令行格式是什么?
2 A* n& ]  \, @1 E  F4 n
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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