查看: 17660|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 S: i2 U1 u. P$ k/ x7 V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig8 z7 j6 g: _& S" V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ F: ?' U/ |: ]" T, gusage: himr <address> <value>. sample: himr 0x80040000 0x0
5 ?0 l" u2 }. _. z2 J& B" `
" I; ^" g" X6 d- n8 a) f% U
* R6 M, g7 F9 c不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. U' e) ^- I+ m4 A1 ?3 s* [, b5 X# z6 Z3 X" R; B4 j' m4 n% f
补充内容 (2012-3-8 09:42):
) B" r* ]2 t6 K- Zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 A% {$ j3 {* x1 I5 {+ D/ U8 ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。5 W  E2 f! |8 B- y

8 \* T/ W8 X/ n* B" Fhimr <address> <value>. sample: himr 0x80040000 0x0+ s( m5 q) b; j  X4 x( l- _
/ \! o% f% K5 V% x2 v' Z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
1 j' Y3 E' `  I  F& W% E$ y& Phimr 0x80040000 0x00
8 E* u+ d/ R# C! v, g, w* A* `himr 0x80040001 0x117 \1 z8 @# ?0 p
himr 0x80040002 0x22  L5 S) K7 v* d( |7 M5 V. o- j
himr 0x80040003 0x33
* w/ k( W$ D  A. uhimr 0x80040004 0x441 F% L8 i% p3 R. o3 A
himr 0x80040005 0x55! G* c' k) D8 S  q
5 N$ J* r' p, U! X$ s# |
SN也是类似。' l9 b& G: {8 F) O& i2 p/ G

& `: M; D+ C6 A  F9 G( c5 r现在主要是,谁告诉我们MAC和SN的地址?9 a4 Z5 }# c3 R  E' ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 5 j* S" h1 K5 h; `
一直想找到运程修改MAC和SN的办法,苦于无解啊
( i: s/ R# ~; Y. u; }9 B
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 T" f# n6 [5 Z% u, p, V
7 P, h$ v& m: a修改的代码早有了。到今天不会编译。
* P+ R0 n( L6 s) B8 j需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 S6 Y6 m; W3 z! }+ @
  2. #include <malloc.h>
    0 y1 S( }) w9 v: g! z
  3. #include <sys/types.h>
    7 z# P$ }# ?7 O) h- L+ s6 Z4 F
  4. #include <sys/stat.h>
    9 Y5 t; |) C2 o) a9 r
  5. #include <sys/ioctl.h>5 i/ h0 X% X  S  I7 v9 n
  6. #include <stdio.h>! n8 K8 l( Q! i. J
  7. #include <string.h>, N9 k$ _2 l! U" I, V$ |
  8. $ ]- E1 S; _1 q; d: d3 e3 o
  9. typedef struct {  N8 m7 }; _( c& ~9 j7 d
  10.         unsigned int        e2prom_cmd_sub_addr;
    # R2 `! U9 j2 F1 X1 v
  11.         unsigned int        sub_addr_count;
    * d: s8 ^( Z0 c' K
  12.         unsigned char*        e2prom_cmd_data;  e/ G) h  e# S/ D5 |' s7 p. b
  13.         unsigned int        data_count;' @5 L+ ~3 ~3 n2 T
  14. } e2prom_s_cmd;
    ; O5 K7 R; `  o3 L- Q7 ~& V, c

  15. ) v7 Z' q4 t9 V3 x
  16. #define E2PROM_CMD_READ 1
    , W9 {/ a% F  n% z
  17. #define E2PROM_CMD_WRITE 22 x7 q( k: G! G& C5 ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . p# \; o" v' e; s( N3 }

  19. 7 `# Y- X' x& \( a8 `6 l5 R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ o* x7 |/ @% T- _; ?
  21. {
    ' t( n; ~  @  B0 B+ y* T1 b2 F  G
  22.         int fd, ret;% x$ h, p8 ~9 c( L- _# m' o
  23.         e2prom_s_cmd arg;) [* F# m9 l. n
  24.         unsigned char buf[0x18];7 q& q& R' B5 X& C5 s  C

  25.   a2 }5 D1 [* i, V9 {0 \( U4 W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 L9 ?: [" ~* L1 K) U6 B6 t
  27.         if (fd  < 0) {
    ! \* a+ U0 o, J' J) x& P! T6 k, x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 [' s) O& s) p7 J0 J
  29.                 return -1;
    & d+ R  T# b; `: q! A
  30.         }8 ^4 S* z  A2 m' [. R0 T+ H
  31.         arg.sub_addr_count      = 2;
    ' W( w3 A  k' ?2 ~/ F
  32.         arg.data_count          = 0x18;
    - L0 x4 y, M4 P
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! G: d! g- w0 p& m
  34.         arg.e2prom_cmd_data     = buf;
    9 O6 ^3 O* z2 w/ W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' e' w! {; _" O8 X5 J6 |) D/ M- c
  36.         if (ret != 0) {5 w. X- A6 [; K1 W$ Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 A6 `; z3 A! s9 E
  38.                 return -1;
    ) ?. D% B4 @2 s/ w8 }. d6 O5 c/ X
  39.         }& O+ S% S' ?! a. e9 ?* ]5 O0 j
  40.         memcpy(mac, buf, 6);( Z+ `+ f/ ^5 w/ x! u' u
  41.         memcpy(stbid, &buf[6], 18);
    & [# K. A0 S9 l0 C
  42.         stbid[18] = '\0';3 A3 B3 s# F5 c$ U

  43. : t6 i# U2 A  O- V0 ^
  44.         return 0;
    * ~- n# b- A$ g: I( ~
  45. }
    - C. }  n* E- K* o7 v+ r2 p1 u* G0 m
  46. + k% y2 x6 Z5 ?. c# b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * P: b+ i- U0 }4 q' k5 Y
  48. {; q/ h# L: {5 n2 T3 b' ]: N
  49.         int fd, ret;0 E! d6 y+ q0 u- T+ x) `. j
  50.         e2prom_s_cmd arg;( E0 p3 G0 [# B* P$ L1 E& L0 W4 F
  51.         unsigned char buf[0x18];
    & _! c  ]9 N0 P) R4 B

  52. 6 W0 H; j$ j( w$ p9 ?& j7 V
  53.         memcpy(buf, mac, 6);
    6 v% Y5 P) ]4 w! S
  54.         memcpy(&buf[6], stbid, 18);
    & H9 _; q- k) z( l
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    * g8 F, M) v; S7 T( q8 N
  56.         if (fd  < 0) {0 \4 b  T4 I1 b: }' q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) p# D$ J5 r% o8 {
  58.                 return -1;
    / {& ]5 l8 T- N3 I
  59.         }) q( Z1 u+ N- z/ h+ i. m8 W
  60.         arg.sub_addr_count      = 2;" v  K) `/ M. C3 c& e
  61.         arg.data_count          = 0x18;
    2 r3 |+ a5 @0 e" Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & \4 V2 Z' }* ^% ?
  63.         arg.e2prom_cmd_data     = buf;
    ; {& ~3 `# D  ^7 t: |2 k& v. i+ w$ a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      W: m/ N# P  w0 E; Z3 ~8 x
  65.         if (ret != 0) {. g6 S8 s# A. T3 y' S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 J: T/ d9 ^# i5 k! g# t8 @
  67.                 return -1;! P# u% M7 n' k4 l0 z6 d
  68.         }
    5 n4 L9 o3 r; S+ f  m. e* j9 ?
  69. 3 m/ P" \, D5 R  m4 X% T
  70.         return 0;
    8 Y! }4 p  R: ^4 f/ @' [3 o9 O/ x
  71. }
    0 N: V: e) g) c3 Y! D3 |9 a  G

  72.   e( O* f9 Y/ g7 z  T
  73. int main()
    3 z0 w+ G, f! ^# y. m2 O. _
  74. {
    . l8 m) W6 W& H: P9 o
  75.         char c;* q6 J; `* u* h
  76.         int i, macs[6];
    # d1 s' Q$ S1 n$ l
  77.         unsigned char mac[6];
    & n) C2 ^: p5 i* n$ ?
  78.         unsigned char stbid[256];  a9 [0 ?" D, h3 _8 p1 B" u' C
  79. * \, g' ?. D0 H# T5 O' q, |' G
  80.         if (readparam(mac, stbid) < 0)
    ) ~, B$ d( D( ?4 C2 _% c9 A( _
  81.                 return 1;
    ( M1 h+ t: Q" m8 G* K

  82. ( X# `, f0 r7 T# Q0 J
  83.         printf("Current parameters: \n");3 q; d2 P5 V1 K5 b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : u* w5 W. d0 D* M
  85.         printf("  STBID: %s\n", stbid);
    ( M  p' b3 ~% k8 X, V0 M+ M
  86.        
    ' h3 q1 H% u7 D9 B2 V9 C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 U8 J; n/ A& ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! f) ?# V9 q6 I4 Q% q
  89.                 printf("Input MAC error\n");& D! {5 N# A" Q8 b8 I# L9 g+ w
  90.                 return 1;
    " c" _( I& h" ?0 e1 a! ~: F& Y7 y9 c4 e. b
  91.         }
    # i' `9 i4 f8 h1 [$ Y3 t+ ~+ F% Z% k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! d/ a, h% Z! L. T4 c2 N& v
  93.         printf("\nPlease input new STBID: ");3 L. U' n: @5 Y
  94.         scanf("%s", stbid);+ |9 M, _7 G" }- @7 e" ?
  95.         if (strlen(stbid) != 18) {4 `' i, `9 q' f2 T3 m6 n
  96.                 printf("Invalid stbid\n");# ?' g. A3 G) T- W+ n  l6 g. _
  97.                 return 1;% A' Y5 @1 f3 |  F- X) ^
  98.         }7 y. L7 Y: u! V1 Q
  99.         printf("\nNew parameters: \n");5 w2 |/ K" N5 `1 b6 u+ i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 M+ \/ L$ t' \
  101.         printf("  STBID: %s\n", stbid);& k# S% @3 a/ G1 {) [, @- r
  102. 7 t7 F0 b, A9 f+ B3 C
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 Y( V) X; a' L+ ^
  104.         for (;;) {
    7 h: W( f- q7 B( r
  105.                 c = getchar();
    " U" y. D5 p% ]+ D5 S) G' Y( ^
  106.                 if (c == 'y' || c == 'Y')
    3 u  _9 U8 `% ^. r9 a7 o+ h. m  C: X9 W! d
  107.                         break;; }: Z- U" _3 H. X4 G  R
  108.                 if (c == 'n' || c == 'N') {
      x# w$ P1 w6 W# B
  109.                         printf("\nAborted.\n");3 \' ^& o& \& {) z
  110.                         return 1;3 E( U0 m2 o( }7 H! V
  111.                 }
    ) |8 c4 ]7 I0 e) [# Q! K2 @
  112.         }# E1 [# a* e* S1 k7 |  d7 ^7 A
  113.         if (writeparam(mac, stbid) == 0)
    / t3 Z, y, g- u/ N- m. `
  114.                 printf("Parameters changed.\n");, q. H1 Q( J% [% ?5 J1 ?! [$ V

  115. + r, d3 o0 B$ T1 K
  116.         return 0;
    : o& S0 T0 I7 h% x9 S/ m: k
  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
" H: B! ^+ C; L2 c! @- K, d( Y+ c在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 \7 u$ r1 y2 g# K5 r- c, P你用的编译命令行格式是什么?7 n8 [, T( r6 w9 Z) O
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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