查看: 16698|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 n: s: N' ]8 q4 t
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / K) w! J6 y0 P  O& s( u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# g1 F% g; r$ }4 {usage: himr <address> <value>. sample: himr 0x80040000 0x09 j( N8 D) f4 F$ b0 c. p
$ N6 j/ p! d" t- I

8 T: J2 w0 Q0 t" ]不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( T4 z7 J7 k! J0 h
4 ^' }- x. w# Y  k" d9 N补充内容 (2012-3-8 09:42):4 d, g  y0 E" Z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% Z. d% K5 l) j$ o: y/ |
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。8 W" K: a1 b) C* b, Q; T
2 L& x( E6 a; E' m$ z/ o  A
himr <address> <value>. sample: himr 0x80040000 0x0
, o# A* Q! k: G! ^# O7 }  c* l0 K# M8 n1 n$ H% w9 B" H1 x/ Q. o1 l4 w# H
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% Q  T$ ~( q5 F* M5 Whimr 0x80040000 0x00
4 A9 z" K' v4 a7 Z7 `/ rhimr 0x80040001 0x11
; h: h( a# d& p; }himr 0x80040002 0x22! y# O% C$ I/ O* M
himr 0x80040003 0x33+ r# i7 ~8 H9 p
himr 0x80040004 0x44- T- C. k# f9 S! v1 Z
himr 0x80040005 0x55( _, i7 e) e' P4 Q7 s; J

4 k$ X9 U( f7 L3 pSN也是类似。' n- {, P- n0 f7 f4 E! q
+ D% I# N) U0 X$ ~
现在主要是,谁告诉我们MAC和SN的地址?
+ B8 o- t/ {" F$ ?
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " O5 S- J% F3 a5 V
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 l+ Y8 ]* i' g" {' O$ z. A3 Z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : B( y, t. e! q: E. a

! i" t# n) P) A) g修改的代码早有了。到今天不会编译。
# i4 _9 @: A# u% Y, S4 Z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 h$ M, \; E7 h# A8 b& O
  2. #include <malloc.h>5 C+ R# M) l( a# K& e/ o9 T) K% a8 U: I
  3. #include <sys/types.h>
    . ^: c/ l" c% X
  4. #include <sys/stat.h>* b2 H, z$ [9 V( x7 n
  5. #include <sys/ioctl.h>" t6 J" I" u8 ?& \: N' B' r$ V
  6. #include <stdio.h>
    $ w4 v, E! `$ S& j& p. V5 T
  7. #include <string.h>
    * y* |/ L8 Y7 f! q+ E% p

  8. 4 b( j, f# y+ x. O( w& {
  9. typedef struct {3 y* t) E4 \, c: S) z- _) u
  10.         unsigned int        e2prom_cmd_sub_addr;  C) Y8 O; t& B3 R  D% h
  11.         unsigned int        sub_addr_count;
    ! `$ J3 j/ g8 C1 E2 t- R
  12.         unsigned char*        e2prom_cmd_data;
    $ v" g9 q4 z* h. T: `2 c+ q4 a
  13.         unsigned int        data_count;
    7 _0 X( R- h, p0 t; q
  14. } e2prom_s_cmd;) ]% j: g3 U0 ^4 a) w, C
  15. 0 s# p. I, e4 v* b" N+ i
  16. #define E2PROM_CMD_READ 1
    9 T4 Z  k- \0 e7 y4 r. \2 u
  17. #define E2PROM_CMD_WRITE 2
    , w. d7 e6 M1 K. R1 W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ k3 D# y  P$ m% n1 N, k  B+ k* k
  19. % }0 _- g7 s0 A" l% k9 Z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 B# p: \' G5 o9 Z
  21. {8 `4 O" _2 P' [! h
  22.         int fd, ret;
    " G/ C' S5 t  A' C. t
  23.         e2prom_s_cmd arg;
      [4 L8 ~1 C% N6 @! P( I
  24.         unsigned char buf[0x18];
    2 }; V9 I; S" e. K& c8 P

  25. 1 {7 D* [- j' b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 V. v# P! w; I/ @
  27.         if (fd  < 0) {
    $ s; f9 S1 ]9 G: J8 f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 y( \3 ]: ]9 G$ M* U; [
  29.                 return -1;* y; ?4 C. ]; ~) h7 T, b
  30.         }7 ~; \) ^! c) K  z
  31.         arg.sub_addr_count      = 2;
    / p+ g, g2 E; w, Q" f: q2 B
  32.         arg.data_count          = 0x18;
    9 g( R( m# W. b' `4 H7 Y2 h
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; ]+ }2 L6 f5 S6 m' }
  34.         arg.e2prom_cmd_data     = buf;& g2 t3 @8 T6 q; @# {8 m3 h- e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , {0 @/ w9 z; V0 v+ v; \" @
  36.         if (ret != 0) {
    / Q; o$ j. J; e6 i8 O5 ~' z2 X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, G! x0 Y, a( {: m
  38.                 return -1;
    & ^0 `- @$ `/ Y/ T; ?( q1 K: f
  39.         }
    9 @& P& ~3 e7 }  K7 i3 a+ a
  40.         memcpy(mac, buf, 6);
    8 D+ B* [% E) x' Z8 _
  41.         memcpy(stbid, &buf[6], 18);
    / D7 o" c2 z5 l, @" j* n- M1 e4 w
  42.         stbid[18] = '\0';) x$ w3 t7 N& B3 V0 A9 f2 _2 ~
  43. 2 K" v6 a- B/ M+ [* k1 m
  44.         return 0;
    ( r" T- z2 ?. r  ?
  45. }5 Q7 x4 n1 E& ^/ @2 h

  46. , j0 p2 a3 k3 k) |" ]3 j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 j+ d" w! P: a! g# F( \
  48. {0 h6 `+ p1 ]+ e) O3 L2 s* D
  49.         int fd, ret;
    * Q5 H0 K) f4 U9 b
  50.         e2prom_s_cmd arg;. i( U0 p! d1 s7 L
  51.         unsigned char buf[0x18];
    3 q" N% F' s4 l2 b8 H. K8 t; f
  52. 0 @$ `' K( N# t
  53.         memcpy(buf, mac, 6);! a  r8 ^; B7 c* N9 }& a' w, O
  54.         memcpy(&buf[6], stbid, 18);! I, M- q3 |2 m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 N( s. X+ R( ?9 K( E5 b
  56.         if (fd  < 0) {; |2 S# N+ e. u% d" c( B% T/ X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 d5 H7 T  V( y  o
  58.                 return -1;
    9 I2 y3 q4 h6 y
  59.         }. J0 F. f1 w& E+ J
  60.         arg.sub_addr_count      = 2;$ ~& O, m2 r8 m+ ]
  61.         arg.data_count          = 0x18;
    " }! B' h/ |& j- m# W. q) D
  62.         arg.e2prom_cmd_sub_addr = 0x290;* o* r  J4 V. M& S* ^) c
  63.         arg.e2prom_cmd_data     = buf;0 ~1 g" |: p6 n1 \" }% e6 L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' q& v( j+ Z) j* F
  65.         if (ret != 0) {
    7 J$ C. r( ?. Y4 E' W$ l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- _- U: ^' v/ |5 x' |/ v, k5 j
  67.                 return -1;
    / ~. q4 B" Z" J) b% t$ H
  68.         }
    ; ^1 d+ D2 q  }

  69. - y0 @- p0 m+ X5 _" W" l- c
  70.         return 0;
    ! m  Y# ], A) j( u! n6 S! F0 ^- h
  71. }( Y: Y& J2 _8 m/ Q  B
  72.   j, C  a( B/ }: q7 q  P: e
  73. int main(): L1 w/ I8 q. F: q/ c% T$ t
  74. {9 x: n+ T9 y* z# c3 i
  75.         char c;
    ' L# z( {" [- @# g
  76.         int i, macs[6];- G* v8 k0 o  w1 p
  77.         unsigned char mac[6];& B9 N. {: \6 N3 q$ W
  78.         unsigned char stbid[256];4 E9 {) V9 m# T# b6 {% y$ g3 [
  79. 7 D7 O" U) }& ~2 ^
  80.         if (readparam(mac, stbid) < 0)
    / o  Z4 O) c: S7 x9 u$ d5 {, P
  81.                 return 1;
    1 c3 O* X5 G  {: D

  82. + F$ h; n" `1 Y! m
  83.         printf("Current parameters: \n");
    ) K0 t: B4 d* J4 A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- h3 H! e% Q/ o
  85.         printf("  STBID: %s\n", stbid);
    ) M8 ~) u( Q  w/ v- n
  86.        
    4 w) i$ K& u' C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 u9 ?0 y: \# l' z  s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 V# F! C7 N/ h5 O' `7 N, |
  89.                 printf("Input MAC error\n");$ G% C* y- k+ ?3 z: r. x3 k3 k
  90.                 return 1;
    6 k5 L  E3 H$ E) c) e- U* k( i. N
  91.         }
    ; t6 h3 ~0 v; V" b) D' ]& [3 m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " o, E% o8 d. z
  93.         printf("\nPlease input new STBID: ");5 R" V7 x; _  e# l* X
  94.         scanf("%s", stbid);+ ~  X% Q3 q; \1 Y5 K0 C
  95.         if (strlen(stbid) != 18) {/ H, W5 F2 }+ k0 w
  96.                 printf("Invalid stbid\n");
    ! m4 a- D: t" l" `( I8 {
  97.                 return 1;
    % k: V1 d3 s& y
  98.         }. c2 `" b0 L( ?. U3 g
  99.         printf("\nNew parameters: \n");
    6 l. r/ l* ^/ Q0 T0 t, g' B
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: \' |- H# h/ p" M6 x
  101.         printf("  STBID: %s\n", stbid);' M! l0 [+ ^8 [6 \6 `0 |

  102. / i! u) h: d! {! ^3 B& ]8 u
  103.         printf("\nDo you want to change paramemters? (y/N) ");! S% f8 T3 J' y% A  y
  104.         for (;;) {# u5 W; O+ }. G" F" B
  105.                 c = getchar();5 s( F# l" d& |' r7 K
  106.                 if (c == 'y' || c == 'Y')
    0 i$ c' ~6 N) o9 ~( Q! m! C) L4 Z
  107.                         break;, R5 j( Q+ M: S
  108.                 if (c == 'n' || c == 'N') {: N* A$ P0 x" E$ n
  109.                         printf("\nAborted.\n");( g& H. J9 l9 P( q
  110.                         return 1;$ S' r) y0 L' w9 t. w& b# l
  111.                 }
    1 A% R, `2 I1 C  \0 U
  112.         }
    # G6 r3 t3 e& Y/ u6 _# l
  113.         if (writeparam(mac, stbid) == 0)
    3 D" E) ~- v8 P
  114.                 printf("Parameters changed.\n");
    & K$ b3 N4 e: z
  115. 3 `3 `9 F9 d- F( ]% C/ D
  116.         return 0;* J# m% G8 E% }6 F' E; Q# b8 s) j! y
  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
: t: s1 K& E+ W) b( d在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( W5 F# w7 g: r2 H/ }5 \# T6 x你用的编译命令行格式是什么?0 v% i! u4 `; K2 F  U
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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