查看: 17280|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" i- F5 |) |; b' T4 b( _
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
      q9 q. z. G3 ]7 _7 c) a1 A& x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! I& V1 s) v  P+ H: c' b7 [usage: himr <address> <value>. sample: himr 0x80040000 0x0  h9 P/ g0 V9 y8 X2 t% N! u

0 {. M7 |0 H, \2 H. ?" X8 b- x, |. Y" }$ g! h( z' r  V* p, k, E
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: n4 q) u1 d5 Q8 H( V" ?: o1 t. L
0 l; }3 L/ J4 J/ u
补充内容 (2012-3-8 09:42):
0 C6 g; ^+ w% shttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
) V) h" C. ^4 ]: d, L* B这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。) z7 H4 g9 g$ j

+ H% m7 D" [. G% B& K% _, ?4 ghimr <address> <value>. sample: himr 0x80040000 0x0% O# ?; |* |' Z" W5 C. v1 V( z( [

# g( a4 E1 L  E3 i例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。; Y. I3 d# }& E. Q" S) L
himr 0x80040000 0x00: V9 m9 b$ ]8 _- T- k* r
himr 0x80040001 0x11
' i+ w# ^+ N( Bhimr 0x80040002 0x225 q; q5 ?$ G  O3 Y4 x% B
himr 0x80040003 0x33
3 J- r4 ~9 n+ S2 a( dhimr 0x80040004 0x44
/ a6 ~) y) G& D( y6 f( U; `8 Ghimr 0x80040005 0x553 e# z5 M0 w8 {  a2 U% y

& T1 r; z" ]  z  G, E9 H: M& iSN也是类似。6 y* |! u, B- W2 d+ t$ _. w

& z, o9 i3 I: v! ~1 v& t现在主要是,谁告诉我们MAC和SN的地址?
: _' Z: W! }! m/ u$ R6 ^+ ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 p( S1 o' E2 ^) W  T一直想找到运程修改MAC和SN的办法,苦于无解啊
1 i; {  I+ l: T3 B
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 m# n6 o' b' E4 E0 N
( T. r5 {2 O2 c& O4 v# L) l
修改的代码早有了。到今天不会编译。
1 w0 F# b. P( s( d需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  ?( z+ f8 M9 p+ u
  2. #include <malloc.h>" {! Z& P3 X0 z; Y  v. o
  3. #include <sys/types.h>
    ; M' Q$ i0 j, f
  4. #include <sys/stat.h>1 C; ~+ g' ^: X* S7 ~/ C- B
  5. #include <sys/ioctl.h>) f: c  q5 \" w0 s: Z5 ^2 ?) C
  6. #include <stdio.h>
    : K, G' f) g0 T, f* @
  7. #include <string.h>
    1 a' F3 ^4 x( y7 X2 W& ?7 n8 Q. e

  8. 3 e' I* C5 w9 B  c
  9. typedef struct {  P" C7 D5 k6 [* i% ^8 q: b3 q4 |
  10.         unsigned int        e2prom_cmd_sub_addr;
    * i% o8 c6 k+ ]! j, H, W
  11.         unsigned int        sub_addr_count;
    ( t+ R0 v* p5 n4 S7 N5 Z7 e
  12.         unsigned char*        e2prom_cmd_data;
    * C" O2 Z0 w4 ?
  13.         unsigned int        data_count;
    2 t3 B8 e: v# x9 L- D1 G
  14. } e2prom_s_cmd;% `" \0 u5 U  e0 a4 w. ]
  15. / x+ V" C1 F& j+ h6 r9 P' G/ I
  16. #define E2PROM_CMD_READ 1, q( {$ ?; I4 k3 _/ l
  17. #define E2PROM_CMD_WRITE 21 f- Y1 l0 q4 m. G. v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- Q6 a$ R' T3 Q

  19. 8 i" L; O, Z0 B6 I  b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 ^' T1 q# m. e1 Q% d0 m# U
  21. {; |" g$ ?- C* x5 o2 X1 R: h8 _
  22.         int fd, ret;1 l4 C( u0 S8 ]' [2 j$ d( a9 v
  23.         e2prom_s_cmd arg;8 }2 r1 r- V7 X
  24.         unsigned char buf[0x18];( k1 N- ?9 }2 A6 A/ R7 F. `/ \6 y3 ?) z5 v$ v
  25. * @7 D$ b" j/ \4 U+ p* z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 K3 y/ v: |$ t
  27.         if (fd  < 0) {2 Y$ q5 V* Z4 l, Z4 v: |5 m! [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 A: x, B/ S3 ?( q* F, ^5 [; s" F7 b
  29.                 return -1;9 r2 g, r3 V2 _0 B% M" v
  30.         }# T3 k- ?' f; |% @
  31.         arg.sub_addr_count      = 2;
    $ x, w  e6 z( o* l2 i! v
  32.         arg.data_count          = 0x18;+ w2 u  p8 f8 H0 ?1 P
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 k. H, I% n. t' i% P
  34.         arg.e2prom_cmd_data     = buf;. R" w% z! _7 a3 r3 A( ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. e% m  l* f( W, l  ?* ?
  36.         if (ret != 0) {
    * p0 a  e9 ^( b& ~) `6 s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : |$ J) D4 i, N6 _) z
  38.                 return -1;
    % K5 `- C0 M2 W, @8 {% p  h( X8 H; h
  39.         }- V  c, B, e5 k' q3 z: E
  40.         memcpy(mac, buf, 6);9 f" ?5 p8 }: M: f# H$ r! h8 U3 ^
  41.         memcpy(stbid, &buf[6], 18);
    . ?' \6 y' A5 X% t- L
  42.         stbid[18] = '\0';) b" \7 q' `# p+ e
  43. 5 z' u; d5 s$ _" K9 B- y4 f
  44.         return 0;
    8 d. A) k6 I" z1 X2 n
  45. }4 J1 c) I! o3 d) [$ ?  L7 M, Y
  46. " g  U8 {6 z/ e( I  _. ]- i% r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , Z& X6 @: O2 v
  48. {1 c! @) t9 V+ `, y0 A0 B
  49.         int fd, ret;1 t" O6 V( }% o+ f
  50.         e2prom_s_cmd arg;) O* o2 k( K: L; s
  51.         unsigned char buf[0x18];
    4 D% A- |3 X' j' S' X! c4 U/ D
  52. % ?1 s4 n& E! K4 g0 o! r
  53.         memcpy(buf, mac, 6);5 |# W+ _* w  w
  54.         memcpy(&buf[6], stbid, 18);
    . y2 N0 K7 ]$ v# P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( r5 y% Z( k/ |
  56.         if (fd  < 0) {& R" X8 {0 \1 y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 M" X, M/ K/ q2 g) C( y
  58.                 return -1;8 {. ?8 Y4 a6 E( d
  59.         }
    0 L1 T1 K! Y1 }1 l
  60.         arg.sub_addr_count      = 2;- d0 b7 U1 l; y% H( E
  61.         arg.data_count          = 0x18;0 U! \+ I  {7 k9 S3 w  p: x; P
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! o4 F2 Y4 L6 H& \/ `( ]
  63.         arg.e2prom_cmd_data     = buf;
      _. E4 x+ j4 W* |2 u+ P2 p6 r3 v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 l& j, g- T) {) y6 h. ]4 K. ^0 S
  65.         if (ret != 0) {
    " g  P1 @. h7 f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + |% K6 ~! H5 L5 p! C
  67.                 return -1;
    1 j+ I& i0 q% I- H
  68.         }5 \( h5 p5 r" S% G# t/ q9 M5 H

  69. 9 L8 X5 J9 U3 @) E7 @( s' g
  70.         return 0;
    , v, ~0 E. W4 y  b0 @# D
  71. }6 z! \' z+ a/ T! a
  72. / R/ C' g4 ^" i" S5 N5 [
  73. int main()5 U6 F7 p; z/ x4 C5 R$ K3 m
  74. {  K* t! Y- c7 c( k" H# A; \, V, W
  75.         char c;
    . h- d8 t( k1 g( Q* q* {
  76.         int i, macs[6];  |$ q, K# Z1 h, d
  77.         unsigned char mac[6];" B; j2 z% U$ v+ R* B* X! E
  78.         unsigned char stbid[256];% L0 o9 w4 Q4 B1 z" \3 z# a

  79. & g1 M% [+ p! W0 Q0 E! l' x0 x0 O3 J
  80.         if (readparam(mac, stbid) < 0)& T7 U9 t" T0 l- C: g# l$ u
  81.                 return 1;' ^  U. g6 {: A9 ]8 P7 G& t% I( n

  82. 3 R; J0 Z) W2 x! B% h/ |% i% E. ^4 g
  83.         printf("Current parameters: \n");
    * U% v( v( c7 v) K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " E* O: ^- l/ D" A: w) `. a: n* t
  85.         printf("  STBID: %s\n", stbid);
    9 s7 N2 ~! S+ r: e' s
  86.        
    % n2 Y! t. O, O% V) |+ o3 a
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 p* s$ y& t- m3 w: [8 a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ J! ^4 s4 ^7 U) E0 U0 k2 Y: {$ D
  89.                 printf("Input MAC error\n");
    : b3 H( l& A  }2 e( x& C
  90.                 return 1;
    & c; s! l+ }1 a7 D8 v: V+ N- s: s! [! i. c
  91.         }
    & o1 ~2 m4 Z, F. F& F+ A- A$ o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 L. G( q  V3 s! ^+ \! [8 H
  93.         printf("\nPlease input new STBID: ");
    3 z+ g7 c1 _& T
  94.         scanf("%s", stbid);/ m+ v+ }! d) w8 h4 f) E9 z, A
  95.         if (strlen(stbid) != 18) {/ [% J5 y6 C* V# a
  96.                 printf("Invalid stbid\n");
    ) G! ~( d5 L6 k" U3 \* q9 d
  97.                 return 1;
    4 E3 I* e, ]' {- \1 e; d) M! d
  98.         }  g9 E3 Q; @/ T" G
  99.         printf("\nNew parameters: \n");. m" y, @/ b2 q& b$ s7 w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * N5 K, R8 G' N0 }
  101.         printf("  STBID: %s\n", stbid);
    * c/ J7 T6 t& g  z+ C0 Q+ w

  102. & [# V0 m# M8 z9 X
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 N3 p7 d" D8 v1 d/ ?* ]
  104.         for (;;) {2 O9 a) m/ _8 I7 ~! q
  105.                 c = getchar();* ]" p& T  M' u
  106.                 if (c == 'y' || c == 'Y'); m' e' S) u3 ?8 d
  107.                         break;  ~! w7 r* q4 ]4 _- i2 K
  108.                 if (c == 'n' || c == 'N') {
    : m  ?% C% k/ m5 W+ G2 G
  109.                         printf("\nAborted.\n");
    . `: Z1 b* @- p# V8 d3 |
  110.                         return 1;
    4 B+ `' T) G2 P' x
  111.                 }1 n* I: ], g& B! q$ O
  112.         }
    $ M, b; V  {6 {9 Z) q
  113.         if (writeparam(mac, stbid) == 0) / m  T0 b9 ?, H  z5 Y4 p# l
  114.                 printf("Parameters changed.\n");
    4 ], l8 D8 B) E
  115. # [; A5 {  Q; l0 A2 ]& w
  116.         return 0;
    : d* u- u0 w1 x6 \+ k; h+ h
  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
( U, B! l7 s9 |+ o. h在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ g$ c9 ]1 ~7 H6 c
你用的编译命令行格式是什么?# b5 Y5 y+ X, |. u
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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