查看: 16673|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , i7 U: c7 E1 V* H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig' e* y1 T. T$ w5 U6 w- P
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 O, ^) T5 X% l& T, [2 Z" z8 z
usage: himr <address> <value>. sample: himr 0x80040000 0x0$ e* _3 ]' U2 h( Q
5 {/ {( R) Z7 S1 r0 R

, |. z7 L1 Y+ D) I! r3 q- L不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 e, g" b  }1 l: M% C
8 y# R  ^' ^8 \; \( b9 H
补充内容 (2012-3-8 09:42):
0 m, A  r0 B5 x3 ^4 v; I0 q( Hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 j, w( P# T0 Q+ H1 s# C9 [; n这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
( M# @  a& a6 U- z) W* |: U/ a% k" D) V% Z
himr <address> <value>. sample: himr 0x80040000 0x0
0 I5 R) a( x1 u# p* D8 c6 g
% }' W% U! g6 y2 i$ V  n例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" k8 P/ d% l8 ehimr 0x80040000 0x00& b* O& k% I5 i* ^* o
himr 0x80040001 0x11. {. ~7 s- R- `9 w3 z: h
himr 0x80040002 0x22! x# o0 \. d# C. a, n8 v
himr 0x80040003 0x33
- ]/ G" W& H. Hhimr 0x80040004 0x44
) ?- o# {" h, |+ {5 \6 x% yhimr 0x80040005 0x55
' y5 P; }2 b2 N% O9 f! C- \8 S* J6 _( @0 w8 d
SN也是类似。! y' M  U3 t4 l/ c# @. {0 F, S

/ v# z0 D3 D2 }, q4 a% k现在主要是,谁告诉我们MAC和SN的地址?
! V- a: T) g7 v$ f& c5 Y5 A% y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 `2 V8 e9 o* f( T9 B# B$ i. r
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 i( L2 O8 D# G% ]' K0 i9 r" y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 V! ?( F0 X# w+ }( W8 G
  S/ X# T, G# w# q: q修改的代码早有了。到今天不会编译。" t- d/ s* W) R& }2 L- P; `) Z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ @- w" ^$ b, u9 T
  2. #include <malloc.h>
    7 [+ y2 D# ~! G9 h  h9 S
  3. #include <sys/types.h>
    8 M* M0 T" F$ O' c. u
  4. #include <sys/stat.h>
    " G: l3 G: z  c' |7 W" _9 n& U4 U
  5. #include <sys/ioctl.h>- A0 v7 Z# c! Y2 C/ Z# C0 A
  6. #include <stdio.h>
    1 ]# O' ]- ]5 Q/ k
  7. #include <string.h>
    5 q( y8 C- _$ M% G( M
  8. - n4 ]" Y0 L3 @
  9. typedef struct {
    ( l+ B- B! N" c* K+ J
  10.         unsigned int        e2prom_cmd_sub_addr;
    * H% O9 a6 p( D. b6 [0 Y
  11.         unsigned int        sub_addr_count;0 M9 Z( ~* k1 C* v! D7 Z
  12.         unsigned char*        e2prom_cmd_data;
      M& X$ B3 A8 G3 E
  13.         unsigned int        data_count;
    + ]' ~5 N: S9 o9 U# W0 I
  14. } e2prom_s_cmd;4 l" _& N; R/ I1 X  H1 k
  15. - a8 U9 A- s1 G' [! J' C
  16. #define E2PROM_CMD_READ 1
    7 X# ]# e! [$ E- i- Z' C0 b
  17. #define E2PROM_CMD_WRITE 29 C1 e+ c$ ~" d8 A$ i/ K$ @
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 N3 e5 S" N5 m
  19. & T6 S# ~9 ^8 m) _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " `' u; L' ^% v- M% ~7 F
  21. {
    " w1 ~3 C9 R" P6 S8 ~( D
  22.         int fd, ret;9 ?4 d* Q" R( L7 N8 |' ^4 h; K; b
  23.         e2prom_s_cmd arg;" K6 V: b5 F  q: g4 \4 d! [
  24.         unsigned char buf[0x18];! ^  }, E, m" t1 O5 P. o3 s
  25. $ b" J) K. l. @. `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: S, W% [! B# R
  27.         if (fd  < 0) {' N& K. v8 r" S2 @4 }) T5 E
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 y. A: h$ G" \1 F5 G; G
  29.                 return -1;
    ! ]& j# w9 R1 y7 J0 o; G
  30.         }' g4 L+ n9 g5 a( |/ X# v
  31.         arg.sub_addr_count      = 2;. w9 r  k8 A9 C9 f
  32.         arg.data_count          = 0x18;, F$ F$ [5 t6 T9 }( i8 n
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : i" t$ H# K' R! M
  34.         arg.e2prom_cmd_data     = buf;$ l, ~6 H- l* ~3 S" ]3 L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 C) Z, U% }/ Y1 \+ X
  36.         if (ret != 0) {
    , U8 O( Q1 O6 u8 J. X$ ~" |
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 I2 |# e2 z9 u1 V- d5 V8 Z
  38.                 return -1;
    7 R2 s  L# D7 ~6 ^
  39.         }: ^. r# W4 l9 w
  40.         memcpy(mac, buf, 6);, k2 S) ?& ~- Y9 L  t! Z
  41.         memcpy(stbid, &buf[6], 18);
    - f* v3 O! A' M1 c
  42.         stbid[18] = '\0';
    , p7 j' H# G( |8 h) {4 f
  43. 1 B7 j; @. s( ]# q% D. I
  44.         return 0;3 o9 x& ?' O% o8 f5 {+ F7 \" l. H
  45. }/ l; K* q$ Q% Y) [

  46. ; |( ~! x  f7 }; V1 n3 D7 s+ C3 d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ H* u3 ^3 J' e4 W+ e6 K
  48. {0 J. h9 g  m# ?! [  [/ {; V
  49.         int fd, ret;
    # t; r' U! ~+ J/ Y9 C7 ~7 a+ o
  50.         e2prom_s_cmd arg;
    4 [2 o# ?: k& \3 m6 V8 C6 H
  51.         unsigned char buf[0x18];
    : v' f$ Y. j& g2 I! l
  52. 6 \- J/ x" U7 ?- F- Y
  53.         memcpy(buf, mac, 6);3 q+ |& B) G6 D" q7 S7 d3 M. R
  54.         memcpy(&buf[6], stbid, 18);
    1 I: N6 f  U% N0 b
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 g4 S( W! E. o8 z" C4 v( m% E/ S
  56.         if (fd  < 0) {0 `6 `1 W) }" I
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & Y$ Z( I1 z# P/ g
  58.                 return -1;
    % D2 K! W# F" D0 l+ I+ o% P. w
  59.         }
    : H# h) |2 e. r9 J& L5 E- z7 c
  60.         arg.sub_addr_count      = 2;* B7 j5 j3 ]3 M1 B
  61.         arg.data_count          = 0x18;" c& B$ Z  @# d
  62.         arg.e2prom_cmd_sub_addr = 0x290;9 _: S8 L' j6 K3 C& z
  63.         arg.e2prom_cmd_data     = buf;
    ( V' v% `7 `. Z" n5 D; J9 S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 {/ j! t* c8 U
  65.         if (ret != 0) {' g' Y+ D6 Z' M* Y1 g2 z4 K/ X1 a
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ' Y0 {+ f  Z; V- A. E$ P( i' B
  67.                 return -1;, Z# Q% d9 R( g4 v, {
  68.         }
    ; S7 _* S! g; e7 F# w
  69. 1 w$ U: h9 S* t1 N0 q# U
  70.         return 0;
    ; c8 G# Z" Q0 G# W3 k
  71. }, Q6 }' ^9 q0 u( b! f
  72. & X8 Y1 W. y# P4 h0 Z/ Q0 [) A
  73. int main()
    ( E5 y1 v+ i' E7 J8 p( O, ~
  74. {8 t. J9 z  {7 ?' X* y: W( P
  75.         char c;
    7 P, m' X( j: ~/ c0 N
  76.         int i, macs[6];. J& X' x3 [9 N! b0 e5 }
  77.         unsigned char mac[6];
    , _, G( v& d: c& t5 X
  78.         unsigned char stbid[256];
    % X0 N1 r7 ]8 F/ K: k+ O( j
  79. 5 [1 j1 P0 E, t4 s( S  K  S- }
  80.         if (readparam(mac, stbid) < 0)! r" r0 N2 y; t' I9 L# b1 F% {5 Y
  81.                 return 1;
    2 N7 t- G  D2 S" d; S

  82. 2 W/ L3 l% j8 `" W/ u
  83.         printf("Current parameters: \n");3 H9 a& m' O9 v! ?$ c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 \* u& }- `, n& C% ?* z. z
  85.         printf("  STBID: %s\n", stbid);$ B1 D' `1 v$ w' a6 y( |0 {, d
  86.         - v9 b0 s/ M" E8 \2 B- O* v! [8 P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    $ m( x$ M% l, r3 ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  k& j: E# K! w
  89.                 printf("Input MAC error\n");
    * a# m2 K# w1 y6 \' X
  90.                 return 1;
    9 c) K& D3 S: Q2 g9 t1 a* s$ E: w
  91.         }) A8 ]( R! I+ K5 ?3 B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 }& o6 L4 Q0 |4 a
  93.         printf("\nPlease input new STBID: ");
    * _5 D8 m+ ]  l( g1 l( K/ a% E' a
  94.         scanf("%s", stbid);
    % S; E% z' N  @9 D4 z6 L9 u2 N
  95.         if (strlen(stbid) != 18) {. K* W$ ~4 a* m, t' \6 U1 S) ]
  96.                 printf("Invalid stbid\n");5 L( {* m9 p9 j% p6 O8 x6 C1 u
  97.                 return 1;/ ^; H$ G" t2 A8 c) d) C: N, k
  98.         }
    : H0 W$ T1 H" J/ n
  99.         printf("\nNew parameters: \n");3 x8 p# m  k# K; @! z$ N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 D* e, W: f: j0 A6 ^
  101.         printf("  STBID: %s\n", stbid);4 O; ^  l" N* n9 v

  102. 9 z0 S2 n: e) p2 D5 g/ ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 L* B$ P7 o3 M2 a& Q- A* d
  104.         for (;;) {
    , l6 Z1 q0 E: g8 Z- T2 ]7 n
  105.                 c = getchar();
    % p6 t( g5 ]6 a, h9 B4 I
  106.                 if (c == 'y' || c == 'Y')1 L6 H/ ]3 w$ L) a8 c+ j3 E$ H
  107.                         break;
    : I5 v' f. Q& w$ k4 p6 z. V
  108.                 if (c == 'n' || c == 'N') {
    % w/ h0 W+ S4 @8 l
  109.                         printf("\nAborted.\n");
    ; [% q" F; P6 ^5 A
  110.                         return 1;
    - N6 ]  L! }$ `- R; d- ?8 [
  111.                 }
    " t: |3 s7 v' N% @  x6 e
  112.         }
    , P& M7 d, a$ c* D
  113.         if (writeparam(mac, stbid) == 0) 8 ~5 b: Q7 t* N# {% ^# u* w
  114.                 printf("Parameters changed.\n");
    . r- ]2 C4 k; j
  115. 2 y1 ?3 Z" Q$ J' @
  116.         return 0;
    2 a. t5 N- c2 ~  f4 l8 |
  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 2 {( q6 z: l& X& O3 b& r* h
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 B4 V7 K% ~. s; B/ i* W; k
你用的编译命令行格式是什么?$ G: ^7 g' U6 g. C) z; 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客服返回顶部