查看: 16554|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# i- N3 t: F7 Y! p' \" q; I" g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, L0 ^: [! O5 z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
* A+ o- S( K: t( Xusage: himr <address> <value>. sample: himr 0x80040000 0x06 B% R6 y* I2 ]* _, h
1 N2 E2 z4 ~6 ?+ Q6 b* s

$ p% H* {2 k" C; a- R+ S, I$ D不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- n4 ~. _) u+ ]: n9 o
- Q5 w( A7 j' L+ p2 s补充内容 (2012-3-8 09:42):& A4 Y; p6 I4 u5 w
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 Z+ K: o( i6 E2 n  }5 z" O
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 n3 v, [8 S8 u4 L9 z# a; ]' @" z
5 b2 z" _$ p6 Bhimr <address> <value>. sample: himr 0x80040000 0x0
0 v& f# s( M( G! z' V* L/ u6 I6 x3 T1 l* W$ k6 `4 E
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 x5 b" C/ D- ~
himr 0x80040000 0x00
& _6 {/ x& E5 a  yhimr 0x80040001 0x11: \' l. z( h8 W2 v0 S6 Y
himr 0x80040002 0x22
% N% p+ w6 i- ], ~& R0 Chimr 0x80040003 0x33
" K7 l0 @5 l+ k; Lhimr 0x80040004 0x44: J6 r( A* c' X/ Q% K) L) M
himr 0x80040005 0x55, t% ~  A4 z+ T7 C& Z0 K

! g# v/ q5 F8 z" ?/ c: E' o4 B+ ZSN也是类似。) ?* Y, K# s5 x1 v7 r

; {8 r: p5 i! J# E' G现在主要是,谁告诉我们MAC和SN的地址?0 F" i5 r. m' X$ R& c) ^! c' G$ F* n
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % N* L* C4 s9 E2 |& I. g8 H4 w* Z
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 b5 O3 f5 M4 J4 H* H& V- X
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 h1 p4 S- ]' y% Z4 Y: Q4 B4 @2 c" A$ g
修改的代码早有了。到今天不会编译。
4 |7 Y0 j5 Q9 k, ?# O需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 Q' }# L$ u$ f- A+ O
  2. #include <malloc.h>! E( O3 N" T, f3 X6 E
  3. #include <sys/types.h>
    6 r" T9 D5 S, E1 Z, l6 I& L
  4. #include <sys/stat.h>
    / @' y' ]. S" K& O7 A% J$ r
  5. #include <sys/ioctl.h>8 }9 Z$ L+ v2 ?! y
  6. #include <stdio.h># L5 d3 L2 \- p2 p4 r
  7. #include <string.h># D! }! o0 d1 t5 [8 r( ~+ w

  8. 9 ?8 P! q2 q- ?2 J& z) q
  9. typedef struct {
    # z, ~  c, K& [3 Z# S) O
  10.         unsigned int        e2prom_cmd_sub_addr;3 r; X3 T- w/ g9 ]! H
  11.         unsigned int        sub_addr_count;
    ) [+ W2 F0 z; n4 Y8 q' e& Q
  12.         unsigned char*        e2prom_cmd_data;
    ( M3 G' ?* N6 V; M. T$ f
  13.         unsigned int        data_count;
    5 P) J  G% ^8 F4 m
  14. } e2prom_s_cmd;
    . ?- ]# e% [% t9 a* P' [. M

  15. ) T. w: b  \+ M1 f+ }0 _
  16. #define E2PROM_CMD_READ 17 L/ _8 g" B, A1 f* j! L' A
  17. #define E2PROM_CMD_WRITE 2
    0 G% z' P; [: z! R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* [/ g) e. D" w( C& {$ a1 N
  19. ' s& m: T; t" k% n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 i7 G- q5 s/ n4 I7 g1 q
  21. {5 P& F. r1 {* z- P
  22.         int fd, ret;' N: W7 [( r0 T1 M9 Y5 ^9 L
  23.         e2prom_s_cmd arg;- k& t: L1 x' ]4 r$ l
  24.         unsigned char buf[0x18];3 H) M8 G5 X; W1 C3 Z
  25. ) d& w9 i% _: j1 {1 `$ t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / G( R" i5 P. S3 I% Z: Z
  27.         if (fd  < 0) {
    8 v$ A5 z; H# C
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 a" A# X* k) K: H( P, g! I& B
  29.                 return -1;
    ; Q) q0 m! f; e. a! v' _; `$ l0 x" f! Q  N
  30.         }
    / t( t7 ]. T6 {  U
  31.         arg.sub_addr_count      = 2;
    6 p& w. `/ k( P% K0 h4 `2 Z0 J4 @9 {
  32.         arg.data_count          = 0x18;
    4 o# V! a4 O, f1 O
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / i$ x4 ^% k2 K/ q* m% n2 ^
  34.         arg.e2prom_cmd_data     = buf;
    , O- N; j: w) ?! h% f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( r6 W, J9 Z0 q5 d, O5 p' J
  36.         if (ret != 0) {$ K* y: l0 |5 N/ F5 z+ R$ ]- u. x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 z# r% L) d' F; u4 K4 W5 y
  38.                 return -1;
    ; }( B& y' H2 L
  39.         }2 Q! q' E* z# U  @+ i
  40.         memcpy(mac, buf, 6);
    " g) r/ }5 M- g$ w. b
  41.         memcpy(stbid, &buf[6], 18);
    : s. B9 X# G$ x" x- j8 t2 k
  42.         stbid[18] = '\0';
    % W1 `, K) D( S! M& o4 J

  43. , U$ J6 H- ~0 r4 y
  44.         return 0;0 d% u/ v( @. k
  45. }' O" x: C2 V$ t- Y4 ~; y% Q
  46. 6 m; I) ^+ K. M8 d2 v! q* l
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 r: p" v; W( H- d, ]
  48. {9 a" Q% v2 G( N9 G
  49.         int fd, ret;
    / o% H/ G6 ?5 b& ^* D- v+ J) x
  50.         e2prom_s_cmd arg;) C7 W+ k: l' X6 [8 {  V$ j; V
  51.         unsigned char buf[0x18];
    1 N4 D; ]0 ~. t* g7 m
  52. ! D" {2 d* d7 s8 u# q
  53.         memcpy(buf, mac, 6);
    & \+ ^' P7 i! E) ?. C1 C7 O) \
  54.         memcpy(&buf[6], stbid, 18);& x! G& J  T! X4 Q5 I% b# b+ G& ^2 ^. A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  e1 ?1 t( O/ l& x
  56.         if (fd  < 0) {5 x/ ]) K/ J' B! x4 r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: T/ Z9 i. E7 U  t2 _/ ~
  58.                 return -1;7 c1 i$ s. M" a$ u! {6 \$ A
  59.         }
    6 e" z3 }* c- v$ _* {- i
  60.         arg.sub_addr_count      = 2;
    - V( S, T% I1 w3 d
  61.         arg.data_count          = 0x18;
    4 z2 z+ I8 |* p! S* `2 w
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( h6 j9 R: |( a, m. ]& t" D9 X
  63.         arg.e2prom_cmd_data     = buf;& W, R: W0 O$ |8 [% e1 l7 e/ f* J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 p2 |. k) j0 z
  65.         if (ret != 0) {
    6 n, v! ]! D  H7 f$ a
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 S+ }% m* p6 Q. U+ h. r
  67.                 return -1;
    4 s) v5 x( o5 h1 {
  68.         }+ x- E6 {. Q; z) B& t6 e! {0 n% G

  69. ( R2 o; ]* i4 q7 T/ ]
  70.         return 0;
    ! g- `6 s) G: ?( D
  71. }
    6 b; {* W4 H+ c! E% r2 F
  72. + B* S' I4 m" o  {
  73. int main()
    + U$ r* p9 ^6 ~" B# [2 u
  74. {
    8 h9 M5 s( A  g5 x" w! x8 V+ J+ B
  75.         char c;
    + @0 d( Y5 l6 p! }, a& _! h
  76.         int i, macs[6];5 q! h0 W, k+ [+ W
  77.         unsigned char mac[6];$ Y/ _# d; E! k$ t; n4 }; ?
  78.         unsigned char stbid[256];1 s0 R: X4 d. J& b$ a" r  F1 o

  79. * N: _# C7 M( p: a' D* [1 {. C: I
  80.         if (readparam(mac, stbid) < 0)  H1 F! j0 d. P& K6 v5 H
  81.                 return 1;
    5 P9 K! \: }+ {

  82. ; R) Q# Y) d. _
  83.         printf("Current parameters: \n");0 [( A2 c/ `$ G0 [/ ]& R5 K- s
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, R- q+ H& k5 Q0 o4 A3 _) o1 s# x
  85.         printf("  STBID: %s\n", stbid);
    5 r! w- M# _; S3 n
  86.         + J5 s( X3 G6 z2 N- U
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. ]6 M% ^+ t% U! H( R3 D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, w; n" A' o- N( W5 f( Q7 @9 K
  89.                 printf("Input MAC error\n");' l+ A. l% A8 `( v; v
  90.                 return 1;
    & Z" c0 O5 k1 s) C, f2 h
  91.         }8 g8 w1 w0 m& j) N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! N) ~' t' f; p( e  t
  93.         printf("\nPlease input new STBID: ");
    & b0 O1 G4 \9 z' _2 V! d: s1 j
  94.         scanf("%s", stbid);
    ( n3 _6 d" }- ?6 e6 ^0 B$ J
  95.         if (strlen(stbid) != 18) {% |0 e  S  T( f6 {2 i
  96.                 printf("Invalid stbid\n");" E2 _* M9 X: n8 E2 b- b( h5 f/ h& }
  97.                 return 1;
    3 I8 F$ V- O! A3 r) L9 h; K/ b( u
  98.         }7 `: _3 G) o6 n5 ~) z& F
  99.         printf("\nNew parameters: \n");
    0 @4 D$ c# E+ A( S; c5 ?" a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , K% i2 Q% r" K
  101.         printf("  STBID: %s\n", stbid);
    & E! X3 u# L3 A6 y% e  }# x
  102. * M. x0 P8 T0 ~( T/ D* o
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 E- S! n0 M, z8 ^8 [: `; Y2 D% {
  104.         for (;;) {
    7 g8 ?$ s* z, j, F4 R
  105.                 c = getchar();0 Q" g# P* B2 E8 C
  106.                 if (c == 'y' || c == 'Y')
    1 H. J+ l) I6 s! `% C
  107.                         break;
    3 d! E6 |5 ]& V3 u$ s
  108.                 if (c == 'n' || c == 'N') {
    ' u5 C  v- X9 B$ n# w; N
  109.                         printf("\nAborted.\n");
    : u5 |* h3 B# u0 K6 d6 d
  110.                         return 1;: u% x- o: U: L8 j. B
  111.                 }, g7 o9 O0 i+ S- @( Y% Y
  112.         }8 H  C" b  G7 H' z
  113.         if (writeparam(mac, stbid) == 0) , V- [& |# G8 l" Y1 T
  114.                 printf("Parameters changed.\n");
    ! U5 k8 W% N4 p6 p" ~. `& j

  115. # O3 p* @9 c# ]" X6 ~+ ?% O1 z
  116.         return 0;/ B. h' F( x3 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
9 S/ b' f6 k8 d' x8 R0 k1 E4 z在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 s8 u  u# ~& p你用的编译命令行格式是什么?
2 W  n9 @+ t6 i8 T. }0 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客服返回顶部