查看: 16753|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 U1 ~, r0 r2 U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 Q+ R0 R8 \- S0 r# [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  z' w% H9 o$ ]' K& x" l! w% g3 Ausage: himr <address> <value>. sample: himr 0x80040000 0x0: E: h4 ]% k3 _. z# Y* F

0 b3 [' D7 v  A: u2 o
9 z8 r5 n+ W- d" j8 M( _" b不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- @" K' r# v: `& e! J- A, p3 i/ L( J1 d9 p( Z" g8 b$ I$ Z
补充内容 (2012-3-8 09:42):
* f  P: }% l) J4 ]. {" L# jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  B( _- L/ X, H2 x这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ @! R: s4 Z0 b. P( x1 u; e

2 J. \6 \- a" e' vhimr <address> <value>. sample: himr 0x80040000 0x0) Z: G9 Y( T! s1 V$ d2 @, ?/ O

! x( \. w) Q8 ^" @: A例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, W% ~  v- r4 P) o5 H. l1 vhimr 0x80040000 0x00  P& L7 z+ a* s: F3 J- E5 v
himr 0x80040001 0x115 C1 |" N5 ^% W5 |( K2 \8 j; {* z
himr 0x80040002 0x227 u) W4 ~5 ~4 z! p/ u
himr 0x80040003 0x33
5 t  E& \  j' R9 J! [( a5 a  khimr 0x80040004 0x44
. W! g& U1 x5 m! E) `himr 0x80040005 0x55+ ^  j" u1 l' K  C3 }
( T1 ]  T/ ]" r2 y- G
SN也是类似。
/ I0 ]  ~1 I4 q; i) X5 ]7 D2 H" |6 [
现在主要是,谁告诉我们MAC和SN的地址?
9 @! S; ^8 O5 O; c+ e1 W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- D) v0 c3 V1 O& f. R/ A一直想找到运程修改MAC和SN的办法,苦于无解啊
1 E: J5 z4 U6 Y7 o# V
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ C% }6 W! H7 w$ r: |4 @$ l
( ^% O8 b& W3 `' m' R. N0 E. a4 U修改的代码早有了。到今天不会编译。/ F5 t1 Q+ T! g- |7 T
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) D% p- A( u9 Z( P2 y$ U/ p0 D5 ]
  2. #include <malloc.h>  `; J/ K% }2 x
  3. #include <sys/types.h>
    8 A9 O( C5 s6 l* t9 ?% i0 Z% R
  4. #include <sys/stat.h>5 m+ n$ V& v; {, K1 _) _5 G8 i: l5 J
  5. #include <sys/ioctl.h>( {8 Y: O, o& o8 A  n
  6. #include <stdio.h>, w8 p! b; {1 q4 g+ u5 C: B# {! w
  7. #include <string.h>
    1 s, T2 O6 x: ^* l; m

  8. 1 q- G# ^0 q4 s. h- Z1 X
  9. typedef struct {
    ' Q8 X1 z3 X; W, `  q
  10.         unsigned int        e2prom_cmd_sub_addr;' a7 e* U: i$ k6 z2 X
  11.         unsigned int        sub_addr_count;( F% ]. u9 M- n& _* [9 Z5 a
  12.         unsigned char*        e2prom_cmd_data;( ?# j  S, o8 L0 t  a6 ]6 L
  13.         unsigned int        data_count;
    # A* t% ^" U9 F. ?- N
  14. } e2prom_s_cmd;/ z, @: K  g0 j2 F3 v8 Q
  15. ; g1 Q* {/ N) u: g! ?* O
  16. #define E2PROM_CMD_READ 1
    , K, D9 e* s; l# `6 p1 J- M
  17. #define E2PROM_CMD_WRITE 2
    7 R+ {3 J) N1 y, P7 |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 M  |8 n: m6 s

  19. " R& s, i; N% u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ _6 q1 `6 \2 K* i: k
  21. {7 J* [/ F* e5 E/ x, @* g7 z
  22.         int fd, ret;) S- ^7 s. }$ w" y
  23.         e2prom_s_cmd arg;  J7 m$ H' u8 O8 o5 n- S
  24.         unsigned char buf[0x18];% @8 Z- }# k% |2 I4 x5 J: u
  25. - z, _8 k* ]* G
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! }2 t) r6 ]* c" \5 V
  27.         if (fd  < 0) {
    9 f8 R# `, _; M8 T* W+ G7 o. c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& }! x/ W9 R  a  D8 M! ?
  29.                 return -1;. {0 b1 a, c1 d
  30.         }
    + m. g% F! y0 m! c7 O3 A
  31.         arg.sub_addr_count      = 2;
    8 p+ M0 }1 e/ t! H  S
  32.         arg.data_count          = 0x18;/ G7 _* K$ E, n" E
  33.         arg.e2prom_cmd_sub_addr = 0x290;% a2 X, r. H" \9 _
  34.         arg.e2prom_cmd_data     = buf;
    3 L  W# r  J; s+ D+ B5 N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 a- V/ \0 j" x1 y9 }, z& D
  36.         if (ret != 0) {' v" V2 G( n+ [6 x7 K0 x5 f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' Y: y% a. R- M, y! b$ g
  38.                 return -1;, f/ x' ^. N& F- U) f
  39.         }7 G3 s- [4 `1 R) m& W4 N
  40.         memcpy(mac, buf, 6);
    1 \5 f, c8 z5 d1 _1 J! N' \" C
  41.         memcpy(stbid, &buf[6], 18);
    # X! [0 S5 E# T. i# i( ]
  42.         stbid[18] = '\0';
    + p- H) A" ^" J( n
  43. , @! j! v' `: H/ Y; V% B
  44.         return 0;
    . `$ M" V: _- f, y- h' _
  45. }
    2 k2 }  D2 c6 p1 l! L

  46. 9 \  |0 w/ K7 u9 d# }9 V4 ]4 L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! T3 Z, b8 t. j
  48. {# I1 X5 O% d! q) {* K
  49.         int fd, ret;
    $ v7 D& E$ j  G2 G. u" V
  50.         e2prom_s_cmd arg;. u5 ~4 R' w0 L7 u
  51.         unsigned char buf[0x18];
    9 N5 y% X! r0 T
  52. - \$ l5 v( _, `
  53.         memcpy(buf, mac, 6);5 r8 R9 W6 ?- _
  54.         memcpy(&buf[6], stbid, 18);5 I; F. T, T2 g5 x5 A  o4 J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 q) p. }# F% H/ R9 _
  56.         if (fd  < 0) {
    9 ~% {- P. _/ z1 a# b
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % ]( W; a* }# c, S# }
  58.                 return -1;
    % h( p' d# t3 b5 H' K& a" @, @7 j/ j
  59.         }  n. i3 @8 V( |0 a4 n3 q- u
  60.         arg.sub_addr_count      = 2;" @) ~  p. ?2 |: O9 `2 w
  61.         arg.data_count          = 0x18;. j  P" Y1 S7 J& ~$ \1 o
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % I, c% ^# j" T" h% q( b
  63.         arg.e2prom_cmd_data     = buf;  e  ^4 Y2 Z# N" b. m- a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 I, X: F4 R6 G& }4 R
  65.         if (ret != 0) {
    $ I( }8 `& L  A% `! _6 t% W2 o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, w  m, u4 n! h: _; P3 L) t1 ~
  67.                 return -1;$ Q6 E1 Y' ^+ Q- T8 M
  68.         }# h7 K  h( m! z' y
  69. + h+ k' F+ h: S, e" j
  70.         return 0;% L1 j* a4 w# Y: r( n
  71. }2 a- J. J* L' m

  72. - F- n- T# m/ y7 v/ ]' V' n8 R5 A7 y% N2 E
  73. int main()
    : A) {0 Q# s" d! z! T
  74. {" Z4 [. r; N! g* l9 s) [, D
  75.         char c;
    1 {% g7 I/ h8 s/ X* A
  76.         int i, macs[6];
    2 E3 ^7 T; }* R# B2 I" N! W
  77.         unsigned char mac[6];$ q8 s9 Z2 m7 z6 g/ \
  78.         unsigned char stbid[256];
    0 F0 F, f5 g+ @

  79. + D6 c5 d4 [. e! c+ }5 t
  80.         if (readparam(mac, stbid) < 0)
    $ J, V5 k3 u& r, @1 ~, O
  81.                 return 1;
    & D# v1 R1 \7 G6 R( J1 D2 ]

  82. ) V1 N9 L( A  G' h
  83.         printf("Current parameters: \n");
    ' ]0 ~' |) x/ p$ q# V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- h: v* a9 F& i$ `' ]0 w5 L6 M
  85.         printf("  STBID: %s\n", stbid);
    " v+ b& T" G+ }/ V0 y# A
  86.         $ N2 y8 k. v5 C+ |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 H: @7 N+ K, |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: S8 U' ?+ Q: p. R; _" N7 g3 E
  89.                 printf("Input MAC error\n");2 k4 e6 j: C( A* Q' ]- s4 R" Q3 F' d+ ]
  90.                 return 1;! {% J$ S3 n& c6 B; F) W
  91.         }
    - @- K; d* {5 n7 }1 ^/ x
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & w, m& y5 `0 e( t+ A0 S8 a4 m7 C
  93.         printf("\nPlease input new STBID: ");5 Z+ }6 g' s( M& t/ G, R4 n
  94.         scanf("%s", stbid);3 K; @( z+ t: A0 x
  95.         if (strlen(stbid) != 18) {
    / z6 b! e$ d( b3 z* P- U
  96.                 printf("Invalid stbid\n");/ t) ]5 [+ B# B
  97.                 return 1;5 k4 ?6 L5 A# o# C1 I0 W
  98.         }6 |4 ^7 M; m7 a6 X
  99.         printf("\nNew parameters: \n");1 x! x  G. k2 c- Y2 H7 g
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * {8 s# o! G) z8 k
  101.         printf("  STBID: %s\n", stbid);- Y  e6 A1 f/ L+ J$ Q' I5 k
  102. ; {/ O; D/ q7 p. i0 P! i5 s
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 {4 O8 t$ y' \  ^
  104.         for (;;) {
    0 J. k7 A1 L1 B* e: t8 U. W
  105.                 c = getchar();
    / f9 P+ z8 w0 D
  106.                 if (c == 'y' || c == 'Y')6 I  k5 \& W0 o3 u* I- f
  107.                         break;" O) r9 c4 k! p& a0 f3 E0 _5 X
  108.                 if (c == 'n' || c == 'N') {9 H' Y; O5 C2 [7 c! n3 a
  109.                         printf("\nAborted.\n");" T. u: b- {* d* q* G; L+ k
  110.                         return 1;- y  p4 Q6 G) m9 Y" v6 f) s
  111.                 }- @% B. J) _( v5 M" `+ y* t; d5 u
  112.         }" w) r7 e8 B" k' B
  113.         if (writeparam(mac, stbid) == 0) 0 R- m3 t% S, p
  114.                 printf("Parameters changed.\n");' J! U4 k" A) n3 a( A( H5 i6 C. D$ I

  115. 2 D" L. r, o' n0 t% W% w3 `3 L
  116.         return 0;
    * Q$ }3 _* c; M4 ~4 [7 n* W0 ^
  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
  a! v+ ~; B5 Z: O: S  c. t在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 B" t: X& O* v8 q* W
你用的编译命令行格式是什么?
: z, R3 I5 x% o$ }3 R8 P# b
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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