查看: 16628|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- P6 j# j9 W. _9 r# C, q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
      B$ T4 m- y5 F  H. ?' Q% A1 v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" F: G- L' `" b7 H8 \. }, t6 e7 K
usage: himr <address> <value>. sample: himr 0x80040000 0x0( s' `7 D+ z0 Z

9 I8 o/ {$ o6 J$ C7 J0 o/ Y( M6 @0 ?3 B( F8 |
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& X# u( T- j( T' I2 D- A0 p+ J9 A3 p/ |
补充内容 (2012-3-8 09:42):+ K* N1 z4 M9 b5 e
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, O) U4 U4 ?7 d/ o这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ t) T. G% g$ ~  B( Q9 Q" h' S3 ~. K( D+ w5 l0 I
himr <address> <value>. sample: himr 0x80040000 0x0% d' A0 s& Z8 {3 A

- N$ J% y9 T7 l2 M例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ P" m4 |* [4 L
himr 0x80040000 0x00
# T2 t8 `; j6 @1 }8 q- Jhimr 0x80040001 0x11
' t6 S6 k2 S3 L- Uhimr 0x80040002 0x22* ~  j7 S- N  }+ z% R
himr 0x80040003 0x33
8 A7 }5 V7 q* ~; Whimr 0x80040004 0x44- e4 \# J. y& s/ R% }
himr 0x80040005 0x55& d3 A9 ]1 s. Y

# R/ D+ G7 r* {, G, B, [SN也是类似。" B0 p. R# @# e5 y" q6 K
/ j, B6 p% i$ J3 o- |* \
现在主要是,谁告诉我们MAC和SN的地址?
& j, [" H. |6 }! c. M$ N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # i. D, U9 N. q4 [/ T
一直想找到运程修改MAC和SN的办法,苦于无解啊
1 S& n: J. J# z& T* `8 O: t
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 L3 G$ e# }; u; A( {1 P( ~4 a9 P7 ^7 g
修改的代码早有了。到今天不会编译。  K4 k, K6 T& k& v/ z; X+ ?% `1 j) W, E. |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% \9 Q" a" C  [. ?
  2. #include <malloc.h>
    ) Q' P3 p1 {  J! q" i) y, H" y
  3. #include <sys/types.h>
    $ w* I4 Z  @8 t7 x5 Y
  4. #include <sys/stat.h># ]7 f- ^& u( {+ B, V( n
  5. #include <sys/ioctl.h>* s+ R8 t$ Y. F3 h& E1 o
  6. #include <stdio.h>
    ' D  k; V. j8 {5 y# k
  7. #include <string.h>
    % D' Q+ a2 n- D* D7 d% I
  8. ' K1 e  b  J( W* v: l
  9. typedef struct {! F6 z5 n6 b% w3 [4 R
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 c/ O6 V# p5 y" G9 m0 |
  11.         unsigned int        sub_addr_count;7 j" a+ d: K% F
  12.         unsigned char*        e2prom_cmd_data;, z8 B$ e% C% k6 R0 |
  13.         unsigned int        data_count;7 c  `! L  ^8 z" E' C/ f! B8 G
  14. } e2prom_s_cmd;
    ' H/ o7 m. d1 x  M" a2 l

  15. 1 ~/ j7 e7 f7 l4 S& v/ ^
  16. #define E2PROM_CMD_READ 15 R) m! m' X& c- q
  17. #define E2PROM_CMD_WRITE 2
    & }/ g. W6 {( p1 A. _6 s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + v1 v. R3 Y) n5 K% H/ \- Y; [

  19. ( v  D8 f! J. \: F8 W
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 R/ Q; Y4 J. G
  21. {
    1 t$ B4 w; U' U9 W9 b# q
  22.         int fd, ret;( f. J1 Q* c) Z) @" i/ E
  23.         e2prom_s_cmd arg;3 t& g$ t! Y/ X) r3 u) ^
  24.         unsigned char buf[0x18];: }0 U, L* i, L/ M
  25. 3 d- ^* x  P) `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 u8 z/ M3 U3 p* f. E
  27.         if (fd  < 0) {
    3 \+ {% m* w. Z  e* j: [5 w
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # i7 [, Z, H- C3 b% p
  29.                 return -1;1 f# C( I1 l  c* x6 o/ z
  30.         }
    % t9 C. o4 f/ t! R0 ?- `# Y
  31.         arg.sub_addr_count      = 2;
    / U8 v; o& k, x, N. \- J2 S
  32.         arg.data_count          = 0x18;) p: E' i2 W4 z4 T' ?6 q0 o* p" o; V: S
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 W4 `* y5 Y. g6 |( D/ g
  34.         arg.e2prom_cmd_data     = buf;: M6 T) M' h% }( Z, W8 q' D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* ^( f; P- O( Q
  36.         if (ret != 0) {2 j, x' ^$ m( j* @: z  Y* h7 e9 k( w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 `3 B9 ^" `9 w5 F1 n
  38.                 return -1;
    ) t  i8 j  J5 ~9 h, K
  39.         }  V! o+ Y; \8 a
  40.         memcpy(mac, buf, 6);- O; ^2 g2 B$ y- q3 l. y5 @9 H
  41.         memcpy(stbid, &buf[6], 18);
    $ n% ]- I$ A# y. O- j. D6 i
  42.         stbid[18] = '\0';
    ' |4 o0 U! b) |  F# {: f* ?
  43. 6 E6 T& I+ C* z4 p& y4 f# B
  44.         return 0;
    ( D% N4 v, b3 m0 O$ \
  45. }6 ~8 u1 V) v/ K) T7 H  D

  46. 1 X, i7 ~% ~( y& b) }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). a1 m5 N8 h0 \8 U- g, I2 C
  48. {
    / u( I' Z: N! K# i
  49.         int fd, ret;( ^- l& j8 R, Z8 z+ v
  50.         e2prom_s_cmd arg;# _( Q# _3 W: V$ P# h5 V
  51.         unsigned char buf[0x18];# D% O+ q: @: |) W$ A6 C5 {8 v2 Q

  52. ; @. O7 k- t' }1 m% j6 K! T
  53.         memcpy(buf, mac, 6);
    6 {5 y% |9 x/ G5 P3 d1 c' V
  54.         memcpy(&buf[6], stbid, 18);
    % M; ~# ~) J0 D/ q( _! J% j6 K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 T/ X# t) X; }$ T: u6 ]
  56.         if (fd  < 0) {
    $ r- ?7 m9 s% j( j0 W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 p. I) g1 S: y& n, c0 z$ g. Z
  58.                 return -1;# j4 b2 G! y! L  u$ G: \4 @2 T
  59.         }% U& c, R1 Y$ V/ }! h& v. G
  60.         arg.sub_addr_count      = 2;6 |% {3 t6 E5 G: _2 C
  61.         arg.data_count          = 0x18;
    & l- [9 p- v( j" w" a' m# Z
  62.         arg.e2prom_cmd_sub_addr = 0x290;- g% d" o/ e2 j& u
  63.         arg.e2prom_cmd_data     = buf;
    1 ~  i# p- C8 ~: q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 e( L, t% D! C( X
  65.         if (ret != 0) {
    ) x& I$ ^! J- Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. U- f- b4 a5 T! b
  67.                 return -1;
    , @4 c& _; b! c% T7 K1 H! ]1 m, Y
  68.         }
    ; [) @; [6 U  q% F
  69. & }; {, w# u/ x1 e
  70.         return 0;: I9 J$ |* z5 {% B, m& ?5 ?+ q3 _/ A
  71. }
    ; d* _8 P( @+ C# y: {

  72. 8 r) c7 y# o. y4 b9 A3 w) B: e! m
  73. int main()) ^% v* g8 T* F( u4 P; S
  74. {
    ) F6 p6 [1 X. P- X8 T
  75.         char c;
    ' h3 V. \+ z8 v4 p
  76.         int i, macs[6];
    7 c3 V$ G5 l& E1 ^
  77.         unsigned char mac[6];4 M5 M8 K4 l3 X6 O* z) e
  78.         unsigned char stbid[256];3 y5 y& T1 U/ v; j! ?- R

  79. ; P8 {9 U" h/ [6 S* r
  80.         if (readparam(mac, stbid) < 0)- \/ ?; ^1 m# H3 x, ~4 K1 G4 h! {
  81.                 return 1;8 ], L: E$ M+ Z; ]$ i

  82. % `$ T' W6 I6 N9 g5 i. x1 Z+ B
  83.         printf("Current parameters: \n");
    ! g0 U( d3 N3 t) Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' d; G) M5 U; [2 ^8 |* ?- h) W, ^
  85.         printf("  STBID: %s\n", stbid);" a' E: t3 _/ w8 J0 C' a+ O3 z
  86.        
    + @) o4 g0 f- t8 ^! D& j8 N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) o# u* F7 h2 @3 a# m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {/ d! k9 ?! \: L  j" G& b8 Q( o
  89.                 printf("Input MAC error\n");6 n: e$ P/ G* x
  90.                 return 1;
    3 M$ u$ v" E( [' S( E/ e
  91.         }
    - `0 M0 R  M  d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 S. v5 f: w* |% B2 x7 O
  93.         printf("\nPlease input new STBID: ");
    # w# E0 q6 d; r8 D5 \
  94.         scanf("%s", stbid);$ j5 @+ b: M9 l( }
  95.         if (strlen(stbid) != 18) {
    ) u% a) d, f) |3 n, h7 c- w
  96.                 printf("Invalid stbid\n");
    ( M, N! O$ N  |, n( ~* O; K# S
  97.                 return 1;
    ' t& ?& H, C$ J5 T. `! b1 Q1 V
  98.         }
    3 H! }5 F+ v% v$ V( g: H
  99.         printf("\nNew parameters: \n");$ R2 {7 o- ]; \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . L7 K% Y' ^/ N( J% z' B
  101.         printf("  STBID: %s\n", stbid);
    & P5 E0 r7 t5 q9 Q% [* D# @
  102. ! U9 D: X; J0 l7 `( p0 F2 N
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 c  O2 L2 E3 Z; `" B# w3 @, B/ ]* U
  104.         for (;;) {
    2 {0 @8 C! r! t+ R0 Z
  105.                 c = getchar();+ @3 m! a8 y; r; P$ |
  106.                 if (c == 'y' || c == 'Y')* f4 S7 d/ A* i' g9 w
  107.                         break;0 S+ n: |5 B! h# h# `
  108.                 if (c == 'n' || c == 'N') {, P4 p% T. D- ^6 C
  109.                         printf("\nAborted.\n");
    4 ~  L# b% ?! N: _7 t7 K0 S
  110.                         return 1;
    ( m8 @1 n' X+ e, K. \6 w
  111.                 }
    5 \0 Q: r$ G9 V9 `% ?" |! p4 p% c& H
  112.         }! p. n" y' }: I4 `5 m, N4 s
  113.         if (writeparam(mac, stbid) == 0)
    4 l+ j$ i+ O4 ]: G5 F# u) y# i
  114.                 printf("Parameters changed.\n");4 L1 C# z- }! f0 n% H5 D5 `4 G* h

  115. ' R9 L+ q) ]; V/ e7 k  |4 d1 R
  116.         return 0;4 |& k+ P! \7 X
  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 / I* [% n/ ^, z$ a6 H
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. l; c$ L, C$ g8 [: }4 |" W  p你用的编译命令行格式是什么?
( d* g% \9 d. O/ [
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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