查看: 16235|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 w9 Q! D9 X; R: [/ B& E& g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& Q% i8 C, |! D9 s8 C4 c, C
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
3 K4 }, N. P, ?7 _" C& p- Ousage: himr <address> <value>. sample: himr 0x80040000 0x0
+ j! z, I9 W- u' [" Z& ?- I
8 i' G8 {. f# Z. H3 B; x5 h% G
4 P' f* t, |* d1 v: t: A% a: [4 V- Z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- s; X3 [; C4 k: G
$ k/ ?* w& g* o% L+ V补充内容 (2012-3-8 09:42):
: u9 y9 H% V& x! {* @- }http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
) E; v) B" s9 G  \这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
# z9 y6 O" b$ M
+ w: x' I( ]- `9 [: I  z$ Ohimr <address> <value>. sample: himr 0x80040000 0x0' U) `- ^9 b8 ~  ^9 c8 o6 g  e3 B
* N; b; M! v2 f" L. }
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
8 h) E+ O6 Q! }- m( Ihimr 0x80040000 0x00
+ D, c  O  m- H0 D3 ohimr 0x80040001 0x11
8 O8 F) n$ o! W0 n! k2 [0 _himr 0x80040002 0x223 s3 T+ ~! S3 x2 R/ K
himr 0x80040003 0x33
2 v2 K1 @, S4 _" s9 rhimr 0x80040004 0x44
& c' V; a, U" ?& N( L1 I) |himr 0x80040005 0x55( z# n0 [1 |( J. d

9 ?& T% v: d1 WSN也是类似。. E! p6 H2 r5 M, ~- J3 z
2 A3 O* |) w6 d1 O- f* ~" T7 E
现在主要是,谁告诉我们MAC和SN的地址?0 o$ ^# ]# s7 D% q: e* b+ v# W. k
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 B& v' `3 L* L+ w' P4 U# l一直想找到运程修改MAC和SN的办法,苦于无解啊
" j) Z* D' d* [% H2 I2 t2 @$ @3 ^
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 2 V, e; i9 r3 E' U4 R

+ t2 f1 l, v4 P, G. ~- ?修改的代码早有了。到今天不会编译。
( D. v( F$ d9 p% D" I" e0 Q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) f$ U$ j% u' X" d8 b! A8 h
  2. #include <malloc.h>$ R8 j3 o, r' Y% A9 b; ?
  3. #include <sys/types.h>, J. M/ s+ |. P
  4. #include <sys/stat.h>9 K- S  L9 p; N/ W) e' E& x0 f6 R( o6 \
  5. #include <sys/ioctl.h>
    / O( _, b) N/ i( I
  6. #include <stdio.h>
    4 q) \( i8 r$ ~1 g* C
  7. #include <string.h>; C& f8 F  x2 f2 Q1 e! o$ u
  8. , Q& N, z4 }1 ]
  9. typedef struct {
    2 M- L2 G! s' R
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 m  ?* V/ y) X! v% U
  11.         unsigned int        sub_addr_count;
      G4 O/ u. Y1 W  m
  12.         unsigned char*        e2prom_cmd_data;' d# j1 @5 F" e; I
  13.         unsigned int        data_count;
    2 O0 ?5 e6 `* _2 B! x" ]& H. t
  14. } e2prom_s_cmd;
    " c$ {: ~$ v: |. Q; ~3 z

  15. + A  y! b$ {8 T# P$ ^0 c
  16. #define E2PROM_CMD_READ 1
    9 u6 l! O. `' k# H& e
  17. #define E2PROM_CMD_WRITE 22 W' i) x( ]2 O; m: r3 A* n& L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 h6 f( L9 e: _9 f+ C& h

  19. ! o, u# P) c" v) Z2 C
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) ]( _' D  l. z+ P1 R
  21. {
    : W5 N+ {: o( ~9 i+ T- D
  22.         int fd, ret;
    8 F$ n9 R3 Q. Y$ K" @2 P% \
  23.         e2prom_s_cmd arg;2 s7 E0 _& A" t0 C1 T- Q4 f
  24.         unsigned char buf[0x18];
    8 D  x, @! o; r4 _3 {

  25. ! Z  D2 F' p, n# H7 \  [
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ d/ ]7 N! |0 N! e9 U! b# R) p8 A* F
  27.         if (fd  < 0) {
    % o1 e; j( A5 r3 F8 K6 {' `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ C; S5 K- X- K/ u. B
  29.                 return -1;
    + d* B9 c% }& Q$ b: W
  30.         }
    2 P3 V3 t& T3 _0 V. ]- \- c) V/ K6 [
  31.         arg.sub_addr_count      = 2;
    # u/ }4 e* l. O  l: p
  32.         arg.data_count          = 0x18;
    + s) l2 x0 n' Z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; ^4 H: i" W" ~5 C) {, W
  34.         arg.e2prom_cmd_data     = buf;
    . j- }( P0 M  R0 L" e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: ]/ r+ [# @! A( T( m) u9 }
  36.         if (ret != 0) {
    - {6 z1 J& C0 c2 ]/ b- n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);% Q( `  @4 V1 ^: _
  38.                 return -1;" \' J6 d3 x% T2 j) f2 y
  39.         }
    % u  N# w  Y# U" s- h5 v1 k
  40.         memcpy(mac, buf, 6);
    / U$ w  R- D' s8 [& f7 Y# r$ d3 T
  41.         memcpy(stbid, &buf[6], 18);
    9 w2 q$ n1 K: n- |; w9 K( g" ~& w2 c
  42.         stbid[18] = '\0';
    4 r* i( W7 _. G% B; A! J" o1 n

  43. 5 }& R1 U( v* ?, F& f4 p0 O4 H
  44.         return 0;" P& d2 U! Y' v9 V3 f
  45. }
    / s+ k0 V6 [! e) |2 J

  46. 6 q: K8 u: q2 i3 K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 k0 M* d  c. [( X- y2 m3 h
  48. {) ~5 G/ y+ n* n. l4 I
  49.         int fd, ret;  W# J* {# Y, q. r) a4 K
  50.         e2prom_s_cmd arg;
    2 F, Y1 e+ w9 @& l: z& ^( n
  51.         unsigned char buf[0x18];( P9 l8 ?% c* m% `; E8 ]
  52. 6 V; \" C' V- T9 u5 P; ^2 G
  53.         memcpy(buf, mac, 6);
    9 \- G9 d( a! U2 Q2 k6 [. Z& G' B
  54.         memcpy(&buf[6], stbid, 18);8 {0 \/ p+ I# ?
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; C( p. A/ ]: F( |; k
  56.         if (fd  < 0) {$ q: B3 ?- d- F2 r/ D& ]( X* b
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& w3 V* m/ X4 k" M8 x' f0 m4 p
  58.                 return -1;6 w* I  P/ [/ R: e) u
  59.         }7 z" O. n  _3 L3 j* Q. H) W
  60.         arg.sub_addr_count      = 2;
    4 e9 t8 }" n9 F$ N+ m
  61.         arg.data_count          = 0x18;; r" k9 c& U: y: Y* L! w$ v( }
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      Q8 x  t; D3 @, D' y7 k" U( r4 C
  63.         arg.e2prom_cmd_data     = buf;9 m2 g2 N; k( u5 t" ^) v% v/ i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    6 q9 f5 E  l# _! m+ {  b( r5 ]
  65.         if (ret != 0) {
    9 u) k9 i# o0 R. l! J7 W1 Y' w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& W6 k4 `$ O" F( W
  67.                 return -1;( d2 a6 y4 O1 T$ ?% L
  68.         }
    1 w  L* H% U3 Q/ a) b: |8 M% b
  69. 8 Z3 U+ T# Z0 l
  70.         return 0;% X) G, @- B1 q1 }* C/ y" X4 ~
  71. }
    0 O/ i: r/ j: T: C

  72. 4 ~5 a- Q+ j) R4 c
  73. int main(); V2 g( C- w$ `! L  T' e1 n. a
  74. {7 r  V, o* T! |; F7 h8 ?/ W
  75.         char c;6 y$ O5 f1 X0 r
  76.         int i, macs[6];# @! z! t% m& |5 j
  77.         unsigned char mac[6];  B$ ~1 N% g/ P
  78.         unsigned char stbid[256];
      {/ d1 L% v0 G0 Q5 i6 ?2 v

  79. - o: q/ N2 N0 A% Q, @
  80.         if (readparam(mac, stbid) < 0)/ E" ^8 o+ X9 G
  81.                 return 1;
    1 d% z# ?2 v& y: w9 d& d$ {( h
  82. 9 Z" v/ h. `- p8 k# r4 |0 m
  83.         printf("Current parameters: \n");# \, i( M$ q9 D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& a+ ?4 Z8 S+ t2 c4 y  S6 _4 J
  85.         printf("  STBID: %s\n", stbid);
    " p% T6 f! [6 C3 T9 r! E
  86.         $ R1 y+ N% V  K9 ~5 ], C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      [. a0 G4 r, d8 c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    1 o4 n+ a* Y# w2 V: j" L3 ~; F. n
  89.                 printf("Input MAC error\n");
    - h" c1 _$ ~: \! |: q5 \/ i
  90.                 return 1;9 I; r# M. b  n# Z) {9 e
  91.         }$ @1 l6 [/ ^- [. @
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ l. K# w7 W  Y+ d
  93.         printf("\nPlease input new STBID: ");
    $ _! W- `7 y! {! `. B/ N4 q
  94.         scanf("%s", stbid);
    6 \5 F4 `/ Z, q! u/ m* }
  95.         if (strlen(stbid) != 18) {
    - n5 J1 ]& w6 S+ p
  96.                 printf("Invalid stbid\n");
    " K/ E8 M& |8 j5 V* L0 ]1 X3 [
  97.                 return 1;
    ( e( B% O9 m# ~& ^1 n0 z8 D( n+ x
  98.         }- d7 K1 }3 P- T
  99.         printf("\nNew parameters: \n");' i" v# s" m3 I0 C3 U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 A( C% z8 @# ]5 ?( \
  101.         printf("  STBID: %s\n", stbid);  B  ~/ U) X! ?) v. {2 U: K) D
  102. 7 J8 [% u; ~  m  r6 g# H; X
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 l# O2 D, |* P* ]- t: W/ |5 A, E
  104.         for (;;) {( L7 [2 z$ N% F
  105.                 c = getchar();
    3 S/ e9 T; J* q
  106.                 if (c == 'y' || c == 'Y')" \! [! W4 I* C7 ~
  107.                         break;; K/ `  T% ^# c
  108.                 if (c == 'n' || c == 'N') {0 j1 k/ W3 }% {
  109.                         printf("\nAborted.\n");
    + K' G9 h" _; z  S" n8 J( x
  110.                         return 1;
    " R( B* n, w1 h* ~: }
  111.                 }
    * n; N/ Q$ {# X4 A0 r  P2 m2 d
  112.         }5 }& v$ C" ]& q" `9 V$ M2 S
  113.         if (writeparam(mac, stbid) == 0) 3 l2 `# o9 q/ ?: w! O/ f- Q
  114.                 printf("Parameters changed.\n");) L6 Q7 D3 w& J2 H" P, u- e
  115. - q( n! ~* H2 Z- P
  116.         return 0;% K  `7 r/ u% }) s
  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
4 c5 ?, D7 U. G  h2 ]/ j在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 N0 d& {4 b7 W' |. p你用的编译命令行格式是什么?8 d. f2 p, O5 s1 R3 s( R
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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