查看: 17167|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 ~6 Y3 y* v( s1 q' O; \& h( u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* x8 Q0 O6 n' v; v( _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' T) o# M- |# y" J8 Qusage: himr <address> <value>. sample: himr 0x80040000 0x0: `# I5 p6 [  b+ y3 ^: ^3 M9 p; B; e& T

" P8 D" c( [% z' U1 g/ C) O7 a9 i5 ]2 N$ e0 v& L
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' A- f% ?; D+ |; }2 z' c

' _+ w  P0 _1 I1 C补充内容 (2012-3-8 09:42):  ~0 v; _  z; S3 _: f! c* O8 l
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' c/ u" e4 K" ]: D
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。5 s9 }8 A7 f/ F7 {

5 g+ n5 G# K# m3 p0 Ihimr <address> <value>. sample: himr 0x80040000 0x0, D6 }$ v1 ?" D# x; a

. O! y/ M/ T" @" ~+ `- y, B6 z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 e$ V8 f9 F2 ?! nhimr 0x80040000 0x00
7 x( S  g/ e8 ^) y! n4 khimr 0x80040001 0x11; n3 u) o7 a; X6 ?5 G& }- |6 y4 i
himr 0x80040002 0x225 ~7 H; ^8 _" N' U( E' g- r* M5 ]6 L9 `
himr 0x80040003 0x33
! l. U1 \$ P. c0 L, u2 Y' }! m9 _" D' qhimr 0x80040004 0x449 m% |, F& B+ s/ U9 v
himr 0x80040005 0x55
: U# |# E! g/ T1 }/ R! G
7 D$ |1 \1 c- a4 o1 z8 h  Q+ sSN也是类似。
) K8 M; c" e; p- M3 q" F  q$ n7 {: F* ~; o: _% g
现在主要是,谁告诉我们MAC和SN的地址?, _, C+ t* @( m+ ^5 x) s7 z: u
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 r8 i, U; \7 s1 r. X$ G一直想找到运程修改MAC和SN的办法,苦于无解啊
" p5 b4 K5 I4 A3 w% F( \
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 o" J: i, t# W/ W/ Z0 ?/ H- \

2 D# a  R1 B' H& N6 m- X& y$ s修改的代码早有了。到今天不会编译。
8 p% k' c" K0 G' y7 Z/ {需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 S" _9 Z( F6 A* ^) d
  2. #include <malloc.h>& f0 j* U9 |  d, s$ j
  3. #include <sys/types.h>
    + ]9 T1 N% k3 O) {3 O6 v: r
  4. #include <sys/stat.h>
    1 P* S& v: }2 }- m
  5. #include <sys/ioctl.h>
    ) K. r# U  l9 V
  6. #include <stdio.h>
    0 B6 `, L5 d/ I& }% R: r4 \
  7. #include <string.h>
    - J2 [& {5 ^0 m; t0 r
  8. : a/ Z. r; ~- a6 P. [
  9. typedef struct {
    9 {+ T  i7 m# [# u( N3 d+ G
  10.         unsigned int        e2prom_cmd_sub_addr;# \0 ^! I2 d4 n* K
  11.         unsigned int        sub_addr_count;
    5 T+ w% r* o/ O/ Y: s5 Y
  12.         unsigned char*        e2prom_cmd_data;" f# P) ^- B% n. E
  13.         unsigned int        data_count;! p0 Z) @2 n/ C) [. r' U; |' g2 f
  14. } e2prom_s_cmd;
    / {9 b# S1 _1 V- t$ Q  x# R2 X

  15. / _1 G5 ]2 i1 |. B+ H
  16. #define E2PROM_CMD_READ 1
      l8 E0 m' W/ ]; `* J' b/ j, C
  17. #define E2PROM_CMD_WRITE 2( ?1 U* R* G/ Q$ }  Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". u( o# v. ~8 y* w  N  U1 z

  19. 6 Z5 m* h% r9 v, V8 v7 x. V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * q! _( I8 X0 u
  21. {
    % [6 L% M0 O% m- c4 D/ r
  22.         int fd, ret;/ R* ?0 X; f- F/ i' H
  23.         e2prom_s_cmd arg;
    % ^: L% c: V! b  k; v& H0 E4 q6 B
  24.         unsigned char buf[0x18];8 l; A1 b% s. n* ]# u4 r

  25. 8 H* v8 S+ o7 l1 J9 Z! i- ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);, g- Q# U6 R: T+ {$ M! ^6 [, ]
  27.         if (fd  < 0) {& W. a% e  U7 B% G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( X% j0 @. j" Q. X3 F( ~% f
  29.                 return -1;
    1 c) Y0 |. \) b. P, a0 @
  30.         }& X/ ]4 W* s5 H1 {5 s
  31.         arg.sub_addr_count      = 2;$ V3 I# X6 R/ x/ N; i3 U8 k
  32.         arg.data_count          = 0x18;
    $ C# U& K7 t$ ]1 x
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; E9 p4 v) U, J& {0 B; s: u- f7 e
  34.         arg.e2prom_cmd_data     = buf;" [; f1 z( h. k4 B* G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : C9 E0 D) B% l" [) @# J
  36.         if (ret != 0) {$ L, }; p8 s4 {( `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
      o1 [. H1 z8 Z% m$ Y# M1 t
  38.                 return -1;
    % N" n: J2 R4 y  u" F
  39.         }( [; \  w6 R% u! A/ z; B
  40.         memcpy(mac, buf, 6);0 q8 N( i& }2 n" b$ D2 w
  41.         memcpy(stbid, &buf[6], 18);
    / Z* r4 ^3 o0 ~# D, M
  42.         stbid[18] = '\0';8 z( u# v" [& R9 w
  43. 7 K1 l& x* ?9 Y6 f" W
  44.         return 0;
    3 m1 d6 ~/ A- F" u, [( P
  45. }
    ' E( h3 }3 g8 ]" G9 m
  46. - n  ?2 Y) r8 F6 H' Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)& o$ F1 M) ?/ z9 r, s
  48. {( \- t+ w8 i  P
  49.         int fd, ret;
    & ^% @: Z; K3 l+ `6 r: K4 q  R0 W7 e
  50.         e2prom_s_cmd arg;
    # S% E; I" X0 x' a+ e  \
  51.         unsigned char buf[0x18];/ _7 o! c& Y5 k
  52. & u. G. Q; P" @
  53.         memcpy(buf, mac, 6);: f. h! \3 S8 D  l& V1 P
  54.         memcpy(&buf[6], stbid, 18);% V* j: ?3 j( a  H  J- |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 D1 d( {2 d) n0 c2 C8 O
  56.         if (fd  < 0) {3 U$ D/ A8 c( e$ ?: g% j- P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. N' V, \2 P6 N3 f  w
  58.                 return -1;
    8 |, ^) X( S9 I# W$ C) n& H0 F7 f
  59.         }
    . T6 c# \9 w, N5 T/ D* ?: D
  60.         arg.sub_addr_count      = 2;% \6 u+ j0 R* ]5 E( c
  61.         arg.data_count          = 0x18;
    / `* u6 }7 `* Q: m1 f7 C6 ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    - K* H& D% I' H8 ?, f
  63.         arg.e2prom_cmd_data     = buf;
    8 C0 U4 L, u' Y+ f- o& o  t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 K# H, E1 h/ f& A* `6 u
  65.         if (ret != 0) {" X6 E* G2 P) h8 w4 d* K
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ H5 n3 ^9 B3 [3 B$ N+ Q1 `6 A
  67.                 return -1;
    ; l. C) ]# m0 ~& ^% S, g
  68.         }2 E9 W5 a, l) O' h- ^0 [# e" {
  69. * D2 O0 u5 c& b3 P
  70.         return 0;
    4 R6 r7 F' D+ \, X5 P; `
  71. }
    1 Y+ B$ r3 p( C2 d: F2 |
  72. - q6 S9 N& Z* \$ D. v) \( x2 ^! [
  73. int main()3 N* G, e" @; `) C1 D9 \9 _
  74. {$ b. X, z8 t0 Z" h
  75.         char c;
    . q" }2 r, B' d, D; P
  76.         int i, macs[6];
    0 I4 W' ~+ h! Q' @3 I% e+ w4 I
  77.         unsigned char mac[6];8 l6 W  i5 Q$ j8 ]: T' p( b. P3 r
  78.         unsigned char stbid[256];
    4 |5 e  }7 x+ F3 ]: m0 R# N

  79. % [+ V) y) N, D( V3 j& y% @3 x6 ~
  80.         if (readparam(mac, stbid) < 0): h* q3 k# N/ w' [! Y. S
  81.                 return 1;* e4 w) @/ y1 L5 h
  82.   g% Y3 h! b2 N+ _. j8 o
  83.         printf("Current parameters: \n");
    1 H: g" s8 ?# M; ]' f  }2 `
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * d: j, w" ?7 C( ~. [
  85.         printf("  STBID: %s\n", stbid);
    : \. f' Y  y) f  h0 r7 S9 @& B2 f
  86.        
      o& ?, g% ~: I- G1 G/ v; @% X1 }
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 L7 n, m8 u$ _
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& L- a7 X7 a, r7 R! }  n
  89.                 printf("Input MAC error\n");
    * ^/ A7 ]& o- w+ y: C( ^
  90.                 return 1;$ ^' O/ c2 c/ a: {& z5 k
  91.         }
    ; R" B2 w3 x) w) h6 c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- a- K* f6 S3 U
  93.         printf("\nPlease input new STBID: ");) g5 u6 m% |$ v9 `' u8 W, L" [8 n
  94.         scanf("%s", stbid);' w  ?( H8 p, ~0 H+ u5 K" e. Y! a& k
  95.         if (strlen(stbid) != 18) {
      g# h6 D3 @, H. o
  96.                 printf("Invalid stbid\n");. \) e3 D7 I& t2 X  r0 A: s9 n
  97.                 return 1;  I6 l, h6 I0 g5 ?8 ~! u
  98.         }
    # p; `/ ]1 D7 }, S, Q8 `
  99.         printf("\nNew parameters: \n");0 ~2 A. y$ z" F! F
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  q3 U& O( X8 L  s% u
  101.         printf("  STBID: %s\n", stbid);1 c5 ^2 Q# C  |# ~6 V3 a! Q) A

  102. 3 J+ {$ ~" U& O8 p1 p; J. {; i( h
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ O. t+ f' x( Z! {* S) l6 n! h
  104.         for (;;) {6 G9 }; H7 c+ t) o  _  s$ k: N
  105.                 c = getchar();
    % }2 o8 r/ s7 U" i, H" |, F1 c( B6 J
  106.                 if (c == 'y' || c == 'Y')% E% w, s5 L3 i2 I# [3 w) h: A
  107.                         break;0 q1 c7 X. U* t, ^& P4 ?) X' _$ P
  108.                 if (c == 'n' || c == 'N') {
    & [7 J- h; E7 E
  109.                         printf("\nAborted.\n");5 Z9 K, E) B. J* C
  110.                         return 1;7 u0 I* r! E6 T+ P4 L* \' u
  111.                 }9 ?7 K  b; [# b9 K( W
  112.         }: T; ]: N" M; Z8 E% s
  113.         if (writeparam(mac, stbid) == 0)
    4 ~6 |( s$ t* Y; b' l# y
  114.                 printf("Parameters changed.\n");0 M0 Q, k6 C2 M" o

  115. , l. f1 h2 p0 U( s
  116.         return 0;
    3 |6 V/ q( q; q4 M" R6 M' B
  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
# S' D& n) |, L7 l) F, J; f$ ^在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" |) c, ~6 w0 l- g$ H' ?; H' K1 u你用的编译命令行格式是什么?( k5 v$ |( n% P* N" F
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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