查看: 16377|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 E6 v4 h! s: U% h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 }- Z; h& Z+ @: S0 F0 ^$ w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:5 ^) R$ Q1 n# f4 o4 r  Z
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. M" b4 w0 h/ O
. @; C4 s0 ]4 I! R! H. v# U: y0 T
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- y- M  S6 Q6 [+ R
9 H. V6 h, q7 J# h: w1 {4 F补充内容 (2012-3-8 09:42):
) ^% G% b" g1 X* }. \; U4 A. @. @http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 E& N: m% R4 h( k. m/ J2 H0 y. ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。5 ^0 [1 K1 S9 ?$ M, r. h
- J* r4 z# G3 v1 Z
himr <address> <value>. sample: himr 0x80040000 0x0
4 m2 J) @4 b7 V6 T/ f$ d% |' f( e0 e
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。! m1 u( e) E5 ~' e. z
himr 0x80040000 0x00
9 T1 }# X3 T3 o$ v5 d4 vhimr 0x80040001 0x11- q8 ^! G0 G8 e. s- A1 d
himr 0x80040002 0x221 k; Z/ e; v4 U0 u
himr 0x80040003 0x33
1 d1 a/ `( S  W6 fhimr 0x80040004 0x44
. B5 E9 Q& F) \6 Q  u1 Nhimr 0x80040005 0x55# `, m9 t8 e1 o2 w

; k! V" M+ Q% ?  ]* ^0 S1 N5 ?1 PSN也是类似。
  J  |2 d6 w0 Q2 A* B9 _. x, N& N+ X1 J
现在主要是,谁告诉我们MAC和SN的地址?" ]6 k% w# c6 I6 j3 A* v0 \* z
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' d. U* B& Y& ]& c* i
一直想找到运程修改MAC和SN的办法,苦于无解啊

% x2 x5 f5 L6 N4 D. e源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' L; C7 I0 h' l1 b& j8 ^
; u) \4 j  G7 W+ t修改的代码早有了。到今天不会编译。
/ e+ l, M3 U2 b. ]) p( c' U需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  T9 T1 [5 m. x& Z; |8 k
  2. #include <malloc.h>
    + u4 |7 e( E+ T' i9 y8 ?7 O
  3. #include <sys/types.h>2 r6 J5 W* e# I; ^
  4. #include <sys/stat.h># ^9 o9 z) C7 |& }+ ^* T, t# e
  5. #include <sys/ioctl.h>3 A! E) L2 H7 ?- H
  6. #include <stdio.h>0 C' X( B3 K" \! r" Y& E- H
  7. #include <string.h>1 A# M% s. r& V' G1 Z4 j3 B/ f
  8. 1 q+ `! G% Q! w( s  l1 h7 j
  9. typedef struct {( x% u2 W5 D3 r- L8 F6 v0 Q
  10.         unsigned int        e2prom_cmd_sub_addr;5 ^& |* D$ w) ]' T, l/ [; O
  11.         unsigned int        sub_addr_count;5 ~" {9 W- R: L6 Y9 _0 Y+ y
  12.         unsigned char*        e2prom_cmd_data;  m1 z' v- \& y7 J1 C# M! m
  13.         unsigned int        data_count;
    ' b. {: \0 L' ]
  14. } e2prom_s_cmd;& c* J- `1 m3 X* L" _
  15. 6 H  W3 K! a" `7 t* X
  16. #define E2PROM_CMD_READ 1
    ' A: E' e6 ^) U" O" F: Z
  17. #define E2PROM_CMD_WRITE 2
      V$ F, ~! J7 d8 d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 A% ~# z8 F5 r- A  U
  19. 2 K9 E2 u# l5 Y, y3 w  n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 e( g: Q+ d, }. N
  21. {
    / `0 N  f% i, _, j% x+ \
  22.         int fd, ret;; `  ]4 A5 ?5 M# S( y5 ^8 g1 g' v
  23.         e2prom_s_cmd arg;* y' c8 d5 z! F1 Q( H, R
  24.         unsigned char buf[0x18];% M7 [: T" q0 C& u" z( O

  25. " W! d9 V7 D  H( [5 |  j* J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" E+ R# r/ s& Q, y. R' F* A
  27.         if (fd  < 0) {/ W8 ]/ I  T, c* P3 w  L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 K% y0 z. _8 @6 q" j, f7 f
  29.                 return -1;
    5 m7 Y( w: G: l8 z- Q0 B9 @
  30.         }
    3 d# W9 g% l4 m2 |$ b& W9 T7 c4 x4 A
  31.         arg.sub_addr_count      = 2;
    & N6 P5 q* Q1 n1 S
  32.         arg.data_count          = 0x18;
    5 Z/ z# W$ c2 J3 w. Z0 G& @
  33.         arg.e2prom_cmd_sub_addr = 0x290;* Q8 Z* u7 ?( V
  34.         arg.e2prom_cmd_data     = buf;
    4 h1 z4 J& e+ U& S& E) `
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 i) w/ @* s8 O
  36.         if (ret != 0) {* `+ X2 L- Z* y( B, Y, J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 M0 C5 m2 h; G4 s
  38.                 return -1;+ O; U0 [, o5 g, _& q" _
  39.         }9 m- k5 ~% g1 X2 T
  40.         memcpy(mac, buf, 6);" J7 V9 q) H9 L: R( |6 h
  41.         memcpy(stbid, &buf[6], 18);' u8 G, h4 p$ f/ P2 i+ _
  42.         stbid[18] = '\0';4 @7 P; k5 ~9 J& b6 `5 N5 A* ^4 w
  43. 8 S: f! ~' l, q2 N
  44.         return 0;7 l' k! _8 p% ?5 B1 I
  45. }
    ' [. d. k  G; R; @

  46. * |3 H; n: J5 U
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  S+ p$ }- c- ^/ N1 O
  48. {/ j- {8 E; t6 P( P' B- @" I$ s' A
  49.         int fd, ret;7 g0 i2 `. T( ^$ J
  50.         e2prom_s_cmd arg;
    3 k& l5 b/ d( B! z
  51.         unsigned char buf[0x18];
    : H7 ~( w; L7 c) z
  52. 0 g. {/ L* ]- P
  53.         memcpy(buf, mac, 6);
    " b" P5 }" ?1 S1 |. U8 H, o
  54.         memcpy(&buf[6], stbid, 18);2 U  k  O: [2 F3 m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 y! S3 X. {" f, T4 Z% \$ \( D
  56.         if (fd  < 0) {# q. i/ h( y8 ~; o7 ?, F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 O' K" f6 Z- u9 c
  58.                 return -1;
    9 z+ [8 |' h3 i# j1 p" [( [) R% _' W
  59.         }
    : ^- }& s' x2 F# e  _9 T: N2 J
  60.         arg.sub_addr_count      = 2;# |/ x  V2 j8 q
  61.         arg.data_count          = 0x18;
    / H* G" }5 L" {# z7 U! s
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : i/ d% S& A! [
  63.         arg.e2prom_cmd_data     = buf;
    # k: h& f0 @+ W: w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ l9 X9 Z" `7 n- }# |3 g
  65.         if (ret != 0) {
    5 Q7 p+ N" f$ }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ w) W% z! b% `+ |# o
  67.                 return -1;0 h. R& X. i& ~* W
  68.         }
    ; t6 G: i. j! s; f" q
  69. 2 A2 J0 K3 G* P5 l# X) w9 b' l" q7 l
  70.         return 0;( P# C; [3 V$ {, k& p& c. F4 c2 c
  71. }
    / s0 u1 j2 t+ _

  72. ' ^, ?/ v: Y% }( w3 K  X: _/ c
  73. int main()5 q, K4 E- I5 `/ [( Y
  74. {
    # l: C6 y! S2 t
  75.         char c;! a; k4 q- c4 ^$ p1 \. q5 z
  76.         int i, macs[6];
    # q4 f+ S% b* D/ U5 i
  77.         unsigned char mac[6];
      p% o; K$ a8 X& B
  78.         unsigned char stbid[256];
    2 m# M7 V9 O* j+ S, _5 u' R
  79. . f7 C: ?3 O2 d8 |
  80.         if (readparam(mac, stbid) < 0)9 j5 Q  A& r( @+ k( g: r  c8 ^
  81.                 return 1;
    , p# X; q4 {2 L( M9 V
  82. ( Z) w" W9 `2 {8 q. K4 X
  83.         printf("Current parameters: \n");
    " h) q/ L8 `) |" f5 h0 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 Z9 A$ d; G7 h+ g: F
  85.         printf("  STBID: %s\n", stbid);" ^5 r: s0 p6 D% C  E, u" U
  86.        
      b$ [5 \: I# t: T5 F- ?
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 I' h% ~; J+ i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  s+ s; ]2 f/ m0 G
  89.                 printf("Input MAC error\n");
    ) o+ p0 D- v2 z- K( K
  90.                 return 1;2 k( q/ W; X% c7 ^+ Z, E
  91.         }' H* {+ _" [- B" W! v+ w3 L% ]- _1 O
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # C4 a9 r$ ~( e9 c8 Y' w
  93.         printf("\nPlease input new STBID: ");
    - V3 k0 @: i2 f9 f1 g3 t
  94.         scanf("%s", stbid);
    3 \  z) C& i$ m% ^) U7 P
  95.         if (strlen(stbid) != 18) {
    ! u: a2 u, T5 A8 ]
  96.                 printf("Invalid stbid\n");
    ) Y. G! K; h% a* V* P
  97.                 return 1;. N" z- ^  t' m" P8 w' q) l
  98.         }
    ) o1 d" x0 e; b, p
  99.         printf("\nNew parameters: \n");' T! e/ U" j. G" P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . Z* G4 f- q- G9 k
  101.         printf("  STBID: %s\n", stbid);' Y- O; w4 y1 a5 n2 N  C" ^

  102. + h4 l6 h6 u9 ?/ k4 i( y
  103.         printf("\nDo you want to change paramemters? (y/N) ");7 a( {$ [  W; }1 _
  104.         for (;;) {0 N# C+ [2 ]7 {7 l7 h
  105.                 c = getchar();
    7 i+ Z8 M* D; @$ S2 ]( c" j
  106.                 if (c == 'y' || c == 'Y')% ?9 ]$ Y6 `$ A1 s6 w
  107.                         break;
    ; A- \) B% K' p+ j/ N2 A
  108.                 if (c == 'n' || c == 'N') {! r6 Z+ i% r% _' `! l6 X# }
  109.                         printf("\nAborted.\n");: e( g8 }- I) `* v( \
  110.                         return 1;2 u" U2 D" k6 t* U/ ~# x
  111.                 }- e* C5 F( i* w  c: G; y
  112.         }. N7 E+ ?6 k6 n$ M$ G+ q/ B$ z: n
  113.         if (writeparam(mac, stbid) == 0)
    / l! ~( w# {* O3 L- w6 X/ i
  114.                 printf("Parameters changed.\n");
    0 {1 ?. A/ ~% g! m( |8 A2 N, o' v

  115. . Z* E, N7 w: i# S# ], \7 J: G6 V
  116.         return 0;' V  j9 H7 W$ P& g# C$ g
  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 # E& G2 ~0 {& s/ y  C! T0 n  E- _9 a
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 x) a- d* [1 [8 Q$ G+ F- {1 Z6 f2 B你用的编译命令行格式是什么?
, K  X, z+ [1 D; d" \0 f* a2 f7 d
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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