查看: 16363|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 m2 q* ~- }. `( h2 d" j9 _
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 e# B( ]" S2 `5 Q' X  Y* I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 P+ f1 Q+ L3 F9 c; X6 J0 x& vusage: himr <address> <value>. sample: himr 0x80040000 0x0
3 i2 Y% P% m, {  x, c
1 U- G3 R& d$ ^6 Q$ r
9 i% E4 H: b* b3 H- M0 _* O不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 \7 @! ^/ x2 O: H2 L" b
+ ]2 C* J! Y' W, P4 ^& s
补充内容 (2012-3-8 09:42):
  Y" c& P! k8 B. rhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 R9 T' D# V' z7 U0 o- ]
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。* _0 b) G! p9 q2 I: \0 s0 U
; P+ u6 f' [; t8 U2 d% Q6 e
himr <address> <value>. sample: himr 0x80040000 0x0
% e0 e. j$ e( l+ o' [5 T  [5 U. H, Y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) F/ h7 l7 P+ }* i2 Q& c& _himr 0x80040000 0x00
' ]3 `. r; A2 e0 E( f# Jhimr 0x80040001 0x11
# T  M( s& p5 @2 ~( T* w$ uhimr 0x80040002 0x22
( Y( T) Y( ]& t* Nhimr 0x80040003 0x33
# j) s" q3 o' L8 X: d& R8 b5 q4 I" V2 ?himr 0x80040004 0x44/ j# f1 X% C' F
himr 0x80040005 0x55- s" w: j" b% l$ L- q
) r' b  n. i, `0 G9 U7 i# t
SN也是类似。+ ~4 Y+ D: z% q" G, J+ q5 a

& K4 |1 K3 j+ F3 ~现在主要是,谁告诉我们MAC和SN的地址?) d% F0 ^5 Z% A- I. E0 u) X
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; b+ K5 M1 i2 R7 E
一直想找到运程修改MAC和SN的办法,苦于无解啊

2 J/ P/ ^) s' q' F源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % ~' z  w  w  D: \0 [4 G
5 l6 i8 u7 D) a; r( S) I$ C% e' E
修改的代码早有了。到今天不会编译。
- t3 {$ l9 x) |' e需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - Z) c* q) s6 ^( Z3 p, T
  2. #include <malloc.h>
    ( l. t' ^+ A. p. X. p9 ?6 }$ d
  3. #include <sys/types.h>: U4 y7 \" M6 W
  4. #include <sys/stat.h>9 n6 Z  ?3 X- `/ W7 X$ ~4 O
  5. #include <sys/ioctl.h>
    ' J4 j3 {1 u) @  |1 A7 U
  6. #include <stdio.h>: c' r: F7 D% ?, O
  7. #include <string.h># N- l- e" E2 Z* |5 C. _

  8. ! Z' o, p1 _6 b& Z
  9. typedef struct {1 P# z9 Q& R! M8 |
  10.         unsigned int        e2prom_cmd_sub_addr;0 F7 X; K: o4 q! J+ L5 k' F
  11.         unsigned int        sub_addr_count;6 P* _3 W. v4 }& h) g5 f
  12.         unsigned char*        e2prom_cmd_data;& D0 N) Z/ P  [- ~8 L2 y
  13.         unsigned int        data_count;
    9 z& ^4 I8 |* }
  14. } e2prom_s_cmd;
      r, p# S- @; ^4 k
  15. 0 E( d: E6 p4 a. G3 s
  16. #define E2PROM_CMD_READ 1
    7 O1 v4 ?8 T( `9 X" Y; e
  17. #define E2PROM_CMD_WRITE 2
    9 {' c+ `, l7 H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 S& V  ]1 q$ I, J9 Y- u# V

  19.   Z% J% M' Y- f4 a1 j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)  E; `" P. |  [9 N
  21. {
    - Y! R+ {7 z- c$ u8 W
  22.         int fd, ret;
    4 I& X8 o- n& U% ~! Q: q  y
  23.         e2prom_s_cmd arg;
    / B) C$ q  T8 |4 _3 ?  a
  24.         unsigned char buf[0x18];) l: z" X/ W) e* [! F: d

  25. " [$ `/ g) n2 \. B' e7 f1 T2 ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);) z* S, W, P2 T' |3 z8 j
  27.         if (fd  < 0) {2 {: q: L! k. t
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 z; j9 K" C- _3 k- I  P
  29.                 return -1;
    + n, Q! }+ ~+ p3 v( M
  30.         }
      [7 M9 Z# L: M
  31.         arg.sub_addr_count      = 2;. ~8 a; C) D5 g4 ^
  32.         arg.data_count          = 0x18;
    3 b! E& o5 X- H. f/ m( A
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 D" X- G/ y6 Q2 I/ X  ~6 {$ h) S
  34.         arg.e2prom_cmd_data     = buf;
    5 C+ C% j) v% G1 a4 v, [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' ]4 |; Z; j' r3 b3 y
  36.         if (ret != 0) {0 [. p% J4 f) e0 v- \4 n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " h8 n4 @8 ]" ]8 y( H4 F. P% C) }
  38.                 return -1;- f; o9 d1 l) x
  39.         }; g1 @8 V6 e) k! H
  40.         memcpy(mac, buf, 6);- [6 _* j" U5 _# \
  41.         memcpy(stbid, &buf[6], 18);
    9 x% J0 Y/ V- y
  42.         stbid[18] = '\0';
    ; B2 _% Y2 f; x0 P
  43. 7 w( b9 x2 b- Z) C; B$ O( j( I
  44.         return 0;
    7 \& Q* q9 i" E9 G( T3 w7 G. b
  45. }* t8 v3 [+ ?, m* V* v
  46. ' H7 X& ]/ o4 X; X' A' q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 X3 ^8 R! y5 j4 J6 D3 p. K( I* L# N
  48. {6 M2 y  \" ~9 d/ {6 k: m2 i; }. W
  49.         int fd, ret;: F/ O  s- A% a
  50.         e2prom_s_cmd arg;' V: g+ _  n5 o
  51.         unsigned char buf[0x18];; I& V$ O. F2 j- C: W3 Z
  52.   [* J3 |; O4 l! I1 P
  53.         memcpy(buf, mac, 6);
    9 \% p, b$ I- }$ Y* L- \5 l
  54.         memcpy(&buf[6], stbid, 18);- j2 h  Y1 _0 n% ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " |* I$ d, V* N7 H$ N
  56.         if (fd  < 0) {
      P/ T5 B+ `% Q. j) O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * a3 K4 `' X4 r( {! \: U
  58.                 return -1;
    + d  Z; w) Z' {* w# m
  59.         }1 ?. R9 W7 P/ ?' {5 h+ @9 t4 U% C. ^* D
  60.         arg.sub_addr_count      = 2;. i6 F! l% @- p' l
  61.         arg.data_count          = 0x18;
    ) v$ b8 h% l7 q3 E2 r, j
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / V7 p" g, F4 W
  63.         arg.e2prom_cmd_data     = buf;
    - R) |" `1 a0 I1 d( j5 x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- C$ z3 K! @+ p+ z  L' b+ r3 i+ W/ B
  65.         if (ret != 0) {) ~9 N' M/ @( I/ R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 }2 j7 r$ J% o/ j6 K( i8 Q. E7 x+ m
  67.                 return -1;
    ! I$ ?- t* B) G* J0 Q5 n
  68.         }
    5 O9 C9 }. ^6 e- Q

  69. ; B! g6 D3 R1 L1 S
  70.         return 0;/ n* F7 L' x4 V0 V5 G' F+ |+ F
  71. }5 [* f; B4 p3 }
  72. ! x1 d+ S, ?6 X3 j2 h+ x  i6 @- g
  73. int main()& X/ h6 z+ Q- u' a5 d
  74. {' c) o# o  S( l' A! s6 u
  75.         char c;
    & R7 p) y1 j0 D$ U9 x
  76.         int i, macs[6];
    8 u* p% |, C, ^  z9 o
  77.         unsigned char mac[6];
    & }3 B7 y  @' V% v9 F' C5 t' ?
  78.         unsigned char stbid[256];
    : f. l' ?) S. Z3 z9 Q$ p3 o

  79. ! S% ?/ o( {& m) B  R8 G8 z3 }
  80.         if (readparam(mac, stbid) < 0)
    0 p8 E4 ]" R, @$ l
  81.                 return 1;6 L" A) ^/ h7 `  G/ x3 k
  82. ' ^; v. z7 c  w' ?0 |
  83.         printf("Current parameters: \n");9 B: f6 D) Q1 I8 ~4 D1 g5 P, r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ q0 @" ?2 c! S' p8 E. r8 C8 e3 i) S
  85.         printf("  STBID: %s\n", stbid);
    . Y/ G* k, H, @0 }% i% W
  86.         / u1 g. M0 e( o0 f3 z6 b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 m9 k$ _& `2 m' g4 x) `% Q8 u
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ x4 }2 F7 G  h# ~( l$ J
  89.                 printf("Input MAC error\n");% _4 _! t: m  U' y; K9 C) \9 a
  90.                 return 1;
    / ]3 i* b2 Z6 F: h+ ]$ Y
  91.         }: \2 x1 S- V5 b1 }0 A# o" l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! \7 M" t3 l: z& y) _
  93.         printf("\nPlease input new STBID: ");
    ; ]" D2 }( k% P* i* d8 t3 Q3 D/ e/ q
  94.         scanf("%s", stbid);
    - @0 w: `8 D( q9 F8 \- q1 l$ |: E0 i
  95.         if (strlen(stbid) != 18) {' m9 S! e' s* P5 w( `% L0 t  W0 M. p
  96.                 printf("Invalid stbid\n");
    3 z: T2 S( M/ Q* b
  97.                 return 1;
    & s6 p0 S/ W. f% u# N1 x
  98.         }) q, ?8 S3 W+ O+ m* q. g9 d9 {
  99.         printf("\nNew parameters: \n");
    0 V9 q' [" e, J* S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 F7 N' E. M' ?5 `% `( n
  101.         printf("  STBID: %s\n", stbid);( q/ q+ k" D& f( Y- {" E
  102.   l" U4 h7 X( d0 H( d7 M0 ~9 d4 h5 L
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ E4 t  L8 d" C: w# [- x
  104.         for (;;) {
    , f) l, s0 P+ y  b5 [) a: K
  105.                 c = getchar();
    ; O+ G8 w- l; x, i! P
  106.                 if (c == 'y' || c == 'Y')
    / v1 W+ O4 t( t5 ?4 v8 ^' R  X& D$ O
  107.                         break;
    9 o9 e6 Y# ^3 q' }$ j
  108.                 if (c == 'n' || c == 'N') {0 b0 _8 _, u8 p9 Q! F$ F% U: O$ u
  109.                         printf("\nAborted.\n");
    9 e6 L, r% l$ E, q
  110.                         return 1;
    2 G. y0 q: E# ^: g! [1 [! U7 [: k
  111.                 }
    # g3 K+ Y% H2 P' L# Z
  112.         }
    , q9 z$ t+ }7 l$ }; T
  113.         if (writeparam(mac, stbid) == 0) " I  A+ _7 l& ~. }! B
  114.                 printf("Parameters changed.\n");0 Z4 u  o0 o; }+ r

  115. 4 a$ U) [- r3 w5 n6 y; x$ t
  116.         return 0;* L: L) b& X1 z% N5 V
  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
/ r& g& K, z, T在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, h. G' @2 z& S" T你用的编译命令行格式是什么?
/ h& p8 [9 c/ S$ ^5 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客服返回顶部