查看: 17476|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 B( g% F& }* s
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig! a$ G7 M* P- C
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( N( x; g" V* A" y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. P) [, K% g8 T5 {, o: s. U/ _2 A  f& S
8 R( K/ [% b& N* ^3 V' K2 g& F
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?+ S5 T% ~( \+ ]* U* Q

% m' g7 i  E+ q1 ]' v补充内容 (2012-3-8 09:42):
5 i) S7 G0 }! V) ?6 hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
) V% c& P* O8 a, p  m这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。# o/ G7 t$ f+ D
/ ?' t4 ~+ |" M) ]
himr <address> <value>. sample: himr 0x80040000 0x06 p3 ]; G: ~" k6 c
* D" @; [* p9 w) J- ^' r
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* E7 X; r- m, A0 ^4 i* N* x: nhimr 0x80040000 0x00
8 n& w% S8 o1 C8 h' P$ chimr 0x80040001 0x11! }7 h1 b& W; b" C  m
himr 0x80040002 0x229 T/ x6 Q2 b: |8 t3 i# [4 }% O& M
himr 0x80040003 0x33
- ~  Z3 {: h  d& @, N6 W& Z% k- ?" rhimr 0x80040004 0x44% H* t" b% \! g, @6 J5 p
himr 0x80040005 0x55
& R: W* Q- C$ V  V9 v2 h1 u( X
, I. x* G1 \3 q6 `" |) p  C. ?7 gSN也是类似。# u' V: L. U7 j: B4 p0 |

: O% k; |2 S: D6 K& q, K现在主要是,谁告诉我们MAC和SN的地址?& H8 B+ O' k7 b, R: t
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' R9 ]! Y! @: d) j! y$ t一直想找到运程修改MAC和SN的办法,苦于无解啊
+ ?* D1 t. v( E* T3 Q0 i
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 Q" W% }# D2 w9 m( v4 i4 _: m% h  |6 R3 H2 |1 O6 m7 a$ @
修改的代码早有了。到今天不会编译。
/ a' V4 t/ R! u7 d' }需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& K1 ~% }, N- Q) L# E" s
  2. #include <malloc.h>
    ! o0 p1 m) E, a( A3 \. C9 `" _
  3. #include <sys/types.h>. W2 @; }% ?/ m, x" {, F4 D- d- {
  4. #include <sys/stat.h>6 }4 Y& a9 u1 s7 _2 H2 Q
  5. #include <sys/ioctl.h>5 G1 w! T3 _/ @$ M, V; M
  6. #include <stdio.h>
    % q# F& S3 r, U* o
  7. #include <string.h>3 I$ X4 c3 s9 _- [# i4 D5 a& [
  8. # C3 z' Y8 |( @" H0 @3 J
  9. typedef struct {  i# x1 i! e6 c" w" \
  10.         unsigned int        e2prom_cmd_sub_addr;7 m9 y- }0 x. O1 j
  11.         unsigned int        sub_addr_count;
    0 j- L/ z0 M' I8 B
  12.         unsigned char*        e2prom_cmd_data;$ V; d! t+ h$ @8 m( h) |' |: B; w
  13.         unsigned int        data_count;. W6 @6 O# L) D6 L. ~/ g: f+ u5 q
  14. } e2prom_s_cmd;
    6 k( F) m; D1 U  d
  15.   k  o; U1 B3 D9 T
  16. #define E2PROM_CMD_READ 1
    6 D% U- I6 O/ x
  17. #define E2PROM_CMD_WRITE 2
    5 Z# i+ O8 j, a, z+ P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' c% i4 j8 |% \% l: X: W5 J8 }' J' Y

  19. 8 A$ V" u. N7 ]/ U' u. _5 @! G6 i1 w& w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 @& }, s4 t, s0 l& z/ x9 o2 r
  21. {' |% k/ b  d3 l
  22.         int fd, ret;
    ; ~' |. f1 h  p/ D1 l
  23.         e2prom_s_cmd arg;
    ! A0 D$ T7 X0 S7 o2 w
  24.         unsigned char buf[0x18];9 W. S7 V' ^8 o& S

  25. ' V: D' w. j, {" t/ |6 p' [7 \5 P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);) C& @* L+ e7 f! G, @7 E! e8 G0 {
  27.         if (fd  < 0) {! n1 n  o: x- n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      |) ?: d) _) {  p" @! R/ F7 L
  29.                 return -1;
    7 p+ H; y8 t, g
  30.         }
    8 X& `% h4 o& u; M
  31.         arg.sub_addr_count      = 2;
    9 m+ I  Y. ]& t( I7 e# E
  32.         arg.data_count          = 0x18;+ `* ]7 V/ k- w1 F7 t; {
  33.         arg.e2prom_cmd_sub_addr = 0x290;# |. p$ N; }5 R) g
  34.         arg.e2prom_cmd_data     = buf;* z, c" w5 {; z$ P( w' e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 f4 e+ d' e* F8 m/ I% l3 l
  36.         if (ret != 0) {
    1 g0 ]4 r7 z* E2 |" P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + p8 |  K' B2 x/ |8 ~% ~1 D
  38.                 return -1;: k$ w( `( O9 t# }2 n6 y* f
  39.         }+ R" R( T  |- l# I1 w* m: F
  40.         memcpy(mac, buf, 6);3 ?4 T; ^$ \! U0 o. K6 x, q8 a9 m9 Q
  41.         memcpy(stbid, &buf[6], 18);
    3 s/ w7 ], P1 i) a# r0 E, V
  42.         stbid[18] = '\0';  c( f* Q( e, ~: y0 l
  43. 7 D9 U& ~6 ]* u6 V$ q/ }. F5 @
  44.         return 0;
    $ e, ^# ]% e2 [' I- m9 }
  45. }
    9 q( \, N" N6 y) G+ y9 @0 r$ A5 I
  46. / e( V: x" ^' u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 ]) n1 b2 o% b0 t. |; B
  48. {- {  X7 w6 Z/ X% }. {
  49.         int fd, ret;  b% U8 d9 J) v$ m9 ~
  50.         e2prom_s_cmd arg;$ U) g% ^( p6 @1 `* C, {
  51.         unsigned char buf[0x18];
    / o1 ?; j% K5 }3 |

  52. 3 k8 J. Z7 b9 }- ~* U
  53.         memcpy(buf, mac, 6);' n- a3 Q5 \" r  E; |) S$ M( o/ a) G
  54.         memcpy(&buf[6], stbid, 18);
    8 O& e/ n' k2 P& p
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; @2 U% W, r* K1 h. C
  56.         if (fd  < 0) {2 Q  w: m$ p7 ]1 R7 `2 H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& m/ V# M- s8 M
  58.                 return -1;
    , N4 v# c6 P. w: C) g
  59.         }
    ; ?9 W8 ~+ ^; ]5 @6 A0 |6 N
  60.         arg.sub_addr_count      = 2;, _2 l/ `! a1 U( m
  61.         arg.data_count          = 0x18;
    5 W5 j& [+ I" k: |5 s+ H" d0 Q+ K
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    - `$ G& O" `8 e, E( d& ^
  63.         arg.e2prom_cmd_data     = buf;7 t6 u) r$ A  g' J8 }6 P/ h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ h. r' n) t7 E2 Z( L2 ]: h
  65.         if (ret != 0) {3 W% o; s9 n- a8 U2 ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# u# U: k& y2 U4 l
  67.                 return -1;) L- L8 Z8 {  Y  p5 ^; k
  68.         }
    7 [2 g  Q3 b( c6 p, N! p6 Q
  69. 4 _, t7 ^( N; _& Q; {" }
  70.         return 0;
    " E9 S2 N+ {* G, f0 ?! r  c! H
  71. }1 F! \0 L& n6 ^/ B9 l

  72. ! t" e( G6 P4 @3 d5 S( T& T3 _
  73. int main()
    ! F7 u+ {, a. A  X
  74. {4 ~. Q: H- P# Q2 s  v# x8 K- Y
  75.         char c;
    5 \- s& @" X7 h% Q  ?  U
  76.         int i, macs[6];
    ( d, n, {7 \7 \( G- b& }
  77.         unsigned char mac[6];) W0 x3 f6 X  ]" z% `1 ?" w
  78.         unsigned char stbid[256];: u( E' \' r+ O, ?
  79. 6 @; d3 T  D' g6 C+ f
  80.         if (readparam(mac, stbid) < 0): @( p' R; L& y6 Y
  81.                 return 1;/ t5 e  Y5 O5 O4 l9 B
  82. + Y) `; d0 m. @
  83.         printf("Current parameters: \n");8 n  O0 i  T! _9 e$ }( D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: A, m/ W" S5 J3 r/ u8 T$ U: T
  85.         printf("  STBID: %s\n", stbid);0 n, T" U: B& k  R
  86.        
    8 Q3 ]' h7 N5 v% _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");' c+ r2 B: S. M' K1 Q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 H1 [9 X9 z- A* i- R- V7 y
  89.                 printf("Input MAC error\n");
    * _# h+ V8 u" w! C
  90.                 return 1;
    & k2 p  Q9 l' _4 y7 I5 h1 s
  91.         }  f6 M& s" Z7 `% Q' d7 ^" e, R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% F! I' d& k% J# U3 n+ P
  93.         printf("\nPlease input new STBID: ");4 |( i9 s& C1 W) d! J/ B! `
  94.         scanf("%s", stbid);2 k9 R7 C# l& V
  95.         if (strlen(stbid) != 18) {
    $ K9 z! u8 O, I9 o( L% S2 X
  96.                 printf("Invalid stbid\n");! [( @  A# m9 p3 d. c. g' H/ i6 s
  97.                 return 1;
    : k9 t4 G+ |, M& [, g3 l( J
  98.         }
    2 e% U5 g0 V4 R. y: t
  99.         printf("\nNew parameters: \n");+ ~1 V8 P+ U1 g$ H3 i0 q  G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) N# E- \) ~8 J6 d! \; j5 y
  101.         printf("  STBID: %s\n", stbid);; S& z* m6 H* W+ w

  102. : q4 A' a& v3 ]" W" ]  ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - A+ @8 a& g/ n( G1 E
  104.         for (;;) {+ h( |6 q. g. i. m0 U
  105.                 c = getchar();4 T( L& r) S" k
  106.                 if (c == 'y' || c == 'Y'): z8 K+ \% u7 j4 u* R
  107.                         break;6 T6 s! ^& y, s
  108.                 if (c == 'n' || c == 'N') {0 X! [& Y' q. [" f  n1 ^! V$ [+ {
  109.                         printf("\nAborted.\n");
    6 d/ N, {. a+ ^% B! v5 ]5 b) i6 x1 v6 r
  110.                         return 1;
    3 A/ U* [+ M: u  l! N8 @& ^: W
  111.                 }
    * c3 @  ]% x; B; ?9 O+ V( p7 G
  112.         }8 v. q4 r. O; e' I/ C
  113.         if (writeparam(mac, stbid) == 0) 1 L% w( l% N& q+ H$ G( H" d: v
  114.                 printf("Parameters changed.\n");9 ?* B  X% s  u: ?. z' O
  115. ; v% ?; d& }: w  V
  116.         return 0;8 R; l$ M+ q- d( a
  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
# O6 W# j7 g, g  A* K  L, Y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
2 t" m. N, x. a0 ~* _, l/ Y
你用的编译命令行格式是什么?0 E, W+ K% z+ s/ F4 ^5 e
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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