查看: 16738|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 y7 a/ W% Z' j' ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig: S  {& U' J! f' n
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- n9 b8 H; C+ M/ wusage: himr <address> <value>. sample: himr 0x80040000 0x0/ H- A: N* H/ [
% ~0 d, q4 G3 U4 w! b+ J! |# U
; Z4 g! d% C, w! {8 s4 t* p1 D
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: c" }3 x% t/ h2 g9 Y
! r7 I% P5 J" |8 g
补充内容 (2012-3-8 09:42):
! Z  H+ h/ R( Y# O8 {4 S" r3 Qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数& l9 W% e9 |6 W) [) L( O4 @
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
5 b  f* W( {; W7 a2 M8 K( `* e5 {$ t8 C5 I- U; j# X3 C& D
himr <address> <value>. sample: himr 0x80040000 0x0
" M0 d' D# d# s
2 w8 o3 s" r4 D5 X; T# z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ Y1 {! B' X$ x8 N- z
himr 0x80040000 0x00
1 N* c- m4 x4 }8 F- ^5 i" E, yhimr 0x80040001 0x11
& S, T6 X: ?# V/ c+ Shimr 0x80040002 0x223 @( W. m7 j  c( b$ ^+ [" v+ `( B
himr 0x80040003 0x33
0 f7 x- F' v5 F2 jhimr 0x80040004 0x44
: Z$ y, `/ s4 K% L+ L' p1 S$ Uhimr 0x80040005 0x559 `. g0 l$ ^8 i- e5 n( X- J
+ j. B! j- a! k
SN也是类似。6 }, Z( l0 \; D$ N$ _- W9 ?1 R
! \1 s; A0 b  b* K: c. Q9 V& l! G1 l
现在主要是,谁告诉我们MAC和SN的地址?
" s9 i9 _6 {- Y: D8 i! W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . Y5 G4 y0 s# u& X+ g1 X
一直想找到运程修改MAC和SN的办法,苦于无解啊

; {; V9 F+ j: F源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: i4 V  \6 m- Q0 [. e# o
' w) T: _. ^# }6 c$ k修改的代码早有了。到今天不会编译。4 y: g9 Q2 H& G- b3 d
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' v. |/ f! V' }% @; o+ e. l
  2. #include <malloc.h>: _7 k- Z# L' F* u3 y
  3. #include <sys/types.h>
    4 a+ Q' Q' Z( F
  4. #include <sys/stat.h>- E5 d/ N! V  ~7 a' ^1 {
  5. #include <sys/ioctl.h>
    0 A" y7 F2 r5 y5 J* m" u. c1 S
  6. #include <stdio.h>9 z  O4 N- ~# e: [: L8 C
  7. #include <string.h>/ ]" `6 {$ a2 {/ ~
  8. 9 F. X3 I% f; y( x" A6 \
  9. typedef struct {6 S& b  S% K7 a" W! s
  10.         unsigned int        e2prom_cmd_sub_addr;, e/ n- }" j$ R2 W8 n; A% ~% g
  11.         unsigned int        sub_addr_count;7 n$ a* j4 l8 C" z
  12.         unsigned char*        e2prom_cmd_data;
    9 \1 N+ \' e" P
  13.         unsigned int        data_count;
    1 b& I/ V* D- [* c7 Z
  14. } e2prom_s_cmd;
    * |, t8 M5 m- ]+ K
  15. ' @; ~8 j! ?" A7 E  J+ c
  16. #define E2PROM_CMD_READ 1
    9 j. z4 k6 E0 F0 w, N  A
  17. #define E2PROM_CMD_WRITE 2
    8 ]2 N6 x  A3 W" V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 N1 x% c' D! Y( D  s( l! L9 I

  19. 8 R! F( a/ h# m8 |2 y$ N6 t4 p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . u& N* i) o2 S( p
  21. {+ ^; O  ^: ^2 o! r
  22.         int fd, ret;+ z. w+ _, P. b/ U9 k# X
  23.         e2prom_s_cmd arg;( L& K# a! }- j7 |+ r$ f' l
  24.         unsigned char buf[0x18];
    . h$ o. E! f! `) _1 s( M5 {4 s

  25. , @/ y2 ~5 U  h9 W* {$ M
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , P, G7 R% M. B5 x+ z% D. u
  27.         if (fd  < 0) {: ?" I" a; L" p& ]& N; e8 @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( ?% P6 ~+ L5 H) e9 A3 z8 e2 j
  29.                 return -1;+ f, M1 N! a8 M8 D5 W: N
  30.         }
    4 g8 t- c) V+ |+ X7 m: j8 l
  31.         arg.sub_addr_count      = 2;
    ' {& U# r2 q! N6 S6 ^& o
  32.         arg.data_count          = 0x18;# s4 {( X1 y9 D9 r$ @
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 z& h2 h% v* f1 ^& a/ ?% t
  34.         arg.e2prom_cmd_data     = buf;& ?) Q  n1 t' ~" Q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    5 F9 y& b& s7 F$ q5 o
  36.         if (ret != 0) {4 d% {; ^" H% L( U0 R1 s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 V, X0 p% ?7 g* Z5 R
  38.                 return -1;
    7 U' Q) b: E" J
  39.         }9 C5 N) s! a& Q5 w* {
  40.         memcpy(mac, buf, 6);9 o' k! Y- D+ I* m% X) @7 h& y( Z9 ~
  41.         memcpy(stbid, &buf[6], 18);
    5 }8 r) |2 J$ c9 z
  42.         stbid[18] = '\0';3 I( J7 v" T* F" s4 ?) i
  43. : j) H; u8 D# P5 l# V
  44.         return 0;
    ( z$ Q. H$ I6 q9 e: X
  45. }, L4 U( c9 b) P: V: \! a

  46. 3 _' E8 Q. v( y& S
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ Z* ]$ H& ~- K6 o9 K- K9 X, p
  48. {
    . M* P" {/ w. D& Y5 J& q$ K
  49.         int fd, ret;
    - k: @3 i+ a  A) \5 C1 c$ R
  50.         e2prom_s_cmd arg;
    # X6 e% G- `: G, C( B/ }9 ?& Y
  51.         unsigned char buf[0x18];
    7 f& }, U* q( r/ _1 f: C. n+ Q) Z% s

  52. ( [( u" H/ L9 n$ |
  53.         memcpy(buf, mac, 6);8 N' Z  y) {6 |( N. ^  m
  54.         memcpy(&buf[6], stbid, 18);0 Z" Y0 P% ^1 C* I; S  w% ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 H! `5 e# v  l# ~
  56.         if (fd  < 0) {
    $ |& F4 O) p4 |" a
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 I' x' U0 [# p. u) W$ d" ?
  58.                 return -1;
    + ]" N# C3 [# u5 W; |8 C' g. U
  59.         }
    2 N7 d4 L9 B: N4 g8 ?6 O
  60.         arg.sub_addr_count      = 2;
    ) }, a& T) ?. @; N3 `+ _) W
  61.         arg.data_count          = 0x18;
    0 q. G% v. q; K! w: a  i
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ f. L: Z- q8 X, Z  U
  63.         arg.e2prom_cmd_data     = buf;
    4 H% i3 ^' V! u0 Q, ]5 x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 b# C% H7 y9 ~2 r4 V& x/ l" [: x; h
  65.         if (ret != 0) {' M# L, g( j8 o) f! O0 p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& Q/ k( V8 C5 N
  67.                 return -1;
    ; ^: ^3 V$ n) u, p0 b6 t5 R4 ^% w# }
  68.         }* Q, f+ K1 G2 h0 r* t9 G- B# z
  69. ) O. ]# ?! U! [' |
  70.         return 0;" D3 n* G) F; K; J
  71. }
    ( ^' o1 n6 L; l- y- R
  72. 9 W; A% d  p% L2 j7 T) q
  73. int main()
    1 W. Q6 i1 _' x$ e
  74. {7 o: g% H+ E- j( r( S. p
  75.         char c;8 E1 i9 T- R" v5 p- |- [2 e( X
  76.         int i, macs[6];) t! Q5 ]6 u: _8 ?" J, G, Q
  77.         unsigned char mac[6];
      I! V2 T4 b: b9 C! O
  78.         unsigned char stbid[256];# X! Z0 h2 R4 W" K0 V3 Q5 _6 y* ~
  79. 8 D' i5 V4 p1 s+ }8 _4 X* P) ?( r
  80.         if (readparam(mac, stbid) < 0)0 i+ [1 S" q$ a) G% P7 @1 W: D+ p1 p
  81.                 return 1;
    ( ^2 b, y" c+ m( H( h5 T
  82. / f9 R  m- r" X  S' g' j- M
  83.         printf("Current parameters: \n");
    - [2 E& n7 _/ q0 \
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  v: g& I) \: @  E
  85.         printf("  STBID: %s\n", stbid);
    6 j7 L! X9 k+ E  n6 A  p1 r8 o+ v! A
  86.        
    ! b  q9 F/ H3 R$ u/ t1 z. p! ?
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & Y$ R; T6 N% E8 e! @
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
      X& H  r: d/ b5 t9 f
  89.                 printf("Input MAC error\n");4 Q/ `( u) ~. T
  90.                 return 1;
    ) g3 A4 F* s% R" r- f
  91.         }
    2 Y6 ?( `, }1 i+ u  C6 h% H, c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & e6 L- v$ Y4 X! e9 q3 V
  93.         printf("\nPlease input new STBID: ");$ i. N  d% U! W7 C* t3 e5 B8 M3 G
  94.         scanf("%s", stbid);" j# |% t: n( |
  95.         if (strlen(stbid) != 18) {. D) I. r2 B) Q8 y7 Z* _5 A# L# r
  96.                 printf("Invalid stbid\n");$ I* h9 \! F* h1 L& h
  97.                 return 1;
    - |5 j' f# Y$ b9 j) @+ K7 W+ W" V
  98.         }% z" ]/ b& M( X! A
  99.         printf("\nNew parameters: \n");
    7 n( k- D) C2 Q. u% W  U/ `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( r) X" m! U9 E3 j, H/ o" Y: K
  101.         printf("  STBID: %s\n", stbid);# l) O# g( s( G7 t  n" O9 \7 E
  102. $ W9 i# Z9 N5 m* L8 c/ v7 {
  103.         printf("\nDo you want to change paramemters? (y/N) ");; J8 Y4 M) T0 D1 g7 B2 }6 n
  104.         for (;;) {" ?& t' `+ H" ^* I: f! @8 D
  105.                 c = getchar();& t: a) T% B% x4 t% s6 |5 n" D: M4 t
  106.                 if (c == 'y' || c == 'Y')
    ! h+ }6 ?3 n2 M( K/ ?
  107.                         break;
    ) }( L8 `( c* P. j7 y! G
  108.                 if (c == 'n' || c == 'N') {1 D% c/ D  f, d4 {6 c) _' U
  109.                         printf("\nAborted.\n");
    # F; Q9 o* T% }& {
  110.                         return 1;* C' ~/ }+ H( n8 ?2 h
  111.                 }- V. @* ]" D# X& z1 P2 t0 p
  112.         }
    8 a9 ~  z: W' E8 D* o/ H
  113.         if (writeparam(mac, stbid) == 0)
    & V$ f; O$ d7 w% n1 q4 ^8 N
  114.                 printf("Parameters changed.\n");
    + a7 K. c% e1 p! g5 A

  115. + L, D$ @$ m2 X) l. \, x- z
  116.         return 0;
    9 R/ b5 }6 U6 D/ c" M: 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
3 L% a- n+ ?- P$ X/ f: ^& ]6 g7 c( R在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* `% K* b! E( s4 W  \; |% u, \
你用的编译命令行格式是什么?% R6 U* S* j  H6 e5 q0 t# e
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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