查看: 16656|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. E& ]* I) y1 K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 ^0 N* j: ?; a8 N
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 O% `  F, P2 z. m3 Q  v- v
usage: himr <address> <value>. sample: himr 0x80040000 0x0  A4 V: q- S' q+ _

1 e( m) l" [' Z
# `# e: P: V+ |  A; d; @: j2 R- Q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* [. `8 S' |2 |; `- C
. S: l5 v0 m0 d( ?补充内容 (2012-3-8 09:42):3 B7 \1 y( _$ m& l  o" N9 y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' p+ w* c: ?* t" w, O. |' W
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
) v; s# V/ h7 A# v0 r6 F
4 i" d0 L- v/ O' D' E0 q2 ^1 yhimr <address> <value>. sample: himr 0x80040000 0x0
/ u" w$ i* g- O) n3 j& |
7 H/ p6 t0 k: y' y' W& q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: s! N" N: T6 b5 Mhimr 0x80040000 0x00
/ U# r/ H0 `- t+ I; K1 d& w% t4 Xhimr 0x80040001 0x11) n" L6 I6 u5 g& h
himr 0x80040002 0x22
8 e, }1 @8 J. E0 G. [himr 0x80040003 0x332 b$ s& f$ j/ L+ r& F
himr 0x80040004 0x44: E  h" N/ m/ O/ p
himr 0x80040005 0x55- N3 S( _+ F$ R: f2 z. G' `$ U
$ b5 C" c7 \5 v5 Y2 p
SN也是类似。
$ i2 }1 R$ g( q* V# |
2 ^1 j1 O3 [/ S现在主要是,谁告诉我们MAC和SN的地址?$ |& {" T" D9 v0 v9 E
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) K6 z! F9 M9 u, [; g% X( R4 j
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 D& a/ q9 K+ f源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' ^) A+ Q" d! y+ H2 W
% a, @& S% g, h2 P0 ]/ x
修改的代码早有了。到今天不会编译。
/ g# O) j! N2 p! V需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 j% }& u; w) j  P
  2. #include <malloc.h>" U1 `# ?! y# G
  3. #include <sys/types.h>0 u& S$ K1 D% i5 ]1 ?) j" V
  4. #include <sys/stat.h>  a* I# s; P* T# f0 J
  5. #include <sys/ioctl.h>
    + K& T) h- ]2 B9 v7 l
  6. #include <stdio.h>; Y4 V5 X6 s; g1 Q/ [; w& d; l% Q4 b
  7. #include <string.h>  d  Y: N& `; e+ t

  8. 9 Z! G/ C; q; y  v
  9. typedef struct {
    - T! ^* K% @! t5 x. G6 b- z
  10.         unsigned int        e2prom_cmd_sub_addr;0 I% o9 p9 g0 M9 l/ n' w
  11.         unsigned int        sub_addr_count;! N; f# c$ e5 q: G) k6 ~
  12.         unsigned char*        e2prom_cmd_data;  M+ B& W) L7 a6 n" G$ T' l9 C
  13.         unsigned int        data_count;4 c5 b1 b, d, H% Y3 h% K# `0 S
  14. } e2prom_s_cmd;0 \7 A; a, e: Q/ s' g7 ^
  15. " e; e7 g2 s- y' B8 M4 o
  16. #define E2PROM_CMD_READ 1' r. v0 R' q9 ~# m. W& a+ m
  17. #define E2PROM_CMD_WRITE 2$ ~5 X$ n$ J+ j* i: j3 f" G
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ u- h8 l; z; x3 f% s: ?4 i
  19. * f5 r2 T7 L  U0 N6 g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      Y. F8 C6 J# L! x9 Q
  21. {
    ) O/ n3 W2 v) r) `8 \. J
  22.         int fd, ret;: }% |7 Q( ^: J1 p
  23.         e2prom_s_cmd arg;; V) o6 A5 E4 u: e+ S6 J( y0 L% ]
  24.         unsigned char buf[0x18];
    % k1 u9 j2 q5 z5 g: J5 n* a+ L" r

  25. * p+ g( J4 V3 ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 F9 Y/ V6 g4 M
  27.         if (fd  < 0) {4 u& \( F6 p' b/ f* C8 M; f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 k" g& d9 \3 Y( A' c, h
  29.                 return -1;6 x+ O0 o9 `1 H3 B% r
  30.         }0 o$ Y4 ?6 }9 L. ?8 ^8 V$ _0 D
  31.         arg.sub_addr_count      = 2;
    ; M7 u5 C* q6 W. R' _! {7 j
  32.         arg.data_count          = 0x18;: J2 p7 o! g7 O- Y$ e* q7 Y/ V, T. a
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 t! q2 T! S/ y
  34.         arg.e2prom_cmd_data     = buf;
    % a+ q2 G) A0 {4 w! }+ L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    8 [+ [7 R- [7 S, ?3 B! f4 h
  36.         if (ret != 0) {
    - _, j8 y3 g8 a5 c
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. h. v. G( W$ `5 l9 W; v
  38.                 return -1;
    4 l3 |, ]) l' D1 i
  39.         }1 S6 ^4 v  ]+ {: O& ^
  40.         memcpy(mac, buf, 6);. j4 Y3 Q5 s) c! Q8 c- M7 S
  41.         memcpy(stbid, &buf[6], 18);( l: n$ b! _$ N1 K" U9 y7 w
  42.         stbid[18] = '\0';
    % M# w, `" R& y& k7 s! }7 E( x
  43. 5 K  N0 }% [6 l0 v9 I! k
  44.         return 0;
      N; |* N8 d, ~4 q" E/ j
  45. }& l2 T( e) \( s5 ]
  46. 6 Q! G" u4 g" r' h2 ^
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  J: x1 [- ?! o2 z8 B
  48. {
    " ?0 H  [, }% S1 u. N! O, C
  49.         int fd, ret;
      x! j1 M2 g. R
  50.         e2prom_s_cmd arg;8 P3 o& k. ~# f
  51.         unsigned char buf[0x18];3 L8 n, b: C. [7 o9 q

  52. / U; z" K; [) l& H( q
  53.         memcpy(buf, mac, 6);% a6 y3 X& }& J1 g9 V& n: V
  54.         memcpy(&buf[6], stbid, 18);  h' i( b# s/ |$ {! T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / ~# H) {* s7 F
  56.         if (fd  < 0) {4 T4 N+ E1 s1 E7 @+ K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% u  y* w8 U4 p) d1 H4 B" m
  58.                 return -1;4 Y& w, O& J) K2 C; Q" }% p0 x0 c  C
  59.         }
    % q4 P: G9 g0 P) M( ]1 K; d
  60.         arg.sub_addr_count      = 2;& J/ k8 B6 \- E7 L" M3 I7 Q
  61.         arg.data_count          = 0x18;# m: ~+ D# L5 d
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! M! {7 w( N. t) L# L
  63.         arg.e2prom_cmd_data     = buf;
    , w$ P8 {2 e/ [# p; e
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ ]2 X, d# Y  ^
  65.         if (ret != 0) {
    . x2 p. M5 k0 B' Q8 _/ B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 B$ L. J* k1 o3 C& d- F& a
  67.                 return -1;* t0 m3 h# b/ q) C" x5 t
  68.         }
    , C% \: t& e7 v' f+ h# S
  69. 9 {3 W% e+ p% B/ Q" P0 Z7 l
  70.         return 0;
    % f6 C, v' n1 j
  71. }
    ; C: T4 `  e' A+ ?4 E& w1 V
  72. + X/ y3 H" V. B  W
  73. int main(); E# a5 }" I) A1 M" c
  74. {- {5 x! x* f. u2 x# H+ Y
  75.         char c;
    7 y$ a# J, ?# z0 r# m0 t
  76.         int i, macs[6];
    6 l5 q8 W" ~, \0 R( ^8 L7 E
  77.         unsigned char mac[6];6 A/ i# T6 K5 m1 i" S) D* s
  78.         unsigned char stbid[256];4 K; U4 I8 R5 C* w6 @4 W& Q, Q0 k- X1 E

  79. ) r% ^8 u; U. W
  80.         if (readparam(mac, stbid) < 0)
    ) G# q0 K- m. }6 N7 X+ n, M9 g
  81.                 return 1;. c  G0 ^8 }4 w% W0 }/ v7 b

  82. - V, _4 X3 M4 E0 S/ t
  83.         printf("Current parameters: \n");
    1 B- l# w, y0 G1 A( T
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + S# t8 b* b* i: S" K$ G6 i
  85.         printf("  STBID: %s\n", stbid);( C2 ~7 K! Z+ L" P" ]
  86.        
    ' k. ]  c1 K3 A1 Y  B
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& O. ?# B' z! l) l7 Y$ D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + X1 N' M9 _. @4 o
  89.                 printf("Input MAC error\n");
    5 S; }3 K: X( _+ I/ F# U7 ?
  90.                 return 1;% k, {( P* H9 i  W/ k4 T2 V* ?2 ]
  91.         }& \5 e. j* H' ~! I9 F/ M% m( R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- s! t: H* `; J6 a0 z
  93.         printf("\nPlease input new STBID: ");( k/ ?2 n- y: J% X4 T
  94.         scanf("%s", stbid);- `+ ~5 T8 S( H' k! X) W$ z
  95.         if (strlen(stbid) != 18) {
      m$ i* f6 w% E2 q, `* \) Y* b
  96.                 printf("Invalid stbid\n");$ M% M0 W$ U7 X/ i( x
  97.                 return 1;* T$ o( [5 e1 w2 @3 q8 o- f  x
  98.         }
    0 v* R! q2 T* O) j7 s2 i$ G* Z- u
  99.         printf("\nNew parameters: \n");
    ' I. B$ `7 R  S8 e, ~6 {- q5 e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      p! {3 a) {$ u
  101.         printf("  STBID: %s\n", stbid);. s+ R1 {0 s) h4 c2 q* R

  102. 1 N/ {' d4 y+ g3 x/ x6 @
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 J0 K- t0 F& x' {
  104.         for (;;) {
      H! e+ g& z! d' A, i
  105.                 c = getchar();
    1 x3 F- G1 \1 k6 p$ B0 |
  106.                 if (c == 'y' || c == 'Y')/ l+ s4 l+ s& h6 ~
  107.                         break;
    ' H5 ~* I. i) K3 F7 h# g% H
  108.                 if (c == 'n' || c == 'N') {& L* K* n2 [5 D; ^# j& H
  109.                         printf("\nAborted.\n");
    5 O' o+ p. j  K5 s  x! k
  110.                         return 1;; @- n1 R) @+ F8 u5 [7 `4 o
  111.                 }' O; _; Z4 p; e0 a
  112.         }5 d9 [2 D& D+ Q# h) k) B0 @
  113.         if (writeparam(mac, stbid) == 0)
    ! q: k: [# ^* Q0 ?- ]! ~
  114.                 printf("Parameters changed.\n");
    / `% d! E) {& ]6 d

  115. 9 o8 [; A6 D( M' W: N' p9 |1 |- b
  116.         return 0;
    - W# c/ T2 t' e6 O; p) S6 {
  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
. [6 R4 Y3 c% k在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ f( i; `2 Y* B8 n/ i8 p5 A
你用的编译命令行格式是什么?
7 F. L- z7 [- V( I8 r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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