查看: 16736|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : F' ~; P5 W8 Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # L- Q. ~9 y/ ~% m6 C
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* ?( u& U7 I( B( u: [1 Y6 h( C
usage: himr <address> <value>. sample: himr 0x80040000 0x0
) q) T- P3 @7 b1 l/ B* L5 A  M
" t# p* ^) y6 L% ~2 ^1 @
, H9 [% [% \9 f7 ^/ L' a不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 \. B, }. t/ o, O5 i
  v# i+ d* ^* @6 \+ r2 t- }; B补充内容 (2012-3-8 09:42):/ S6 T; H6 c7 ~1 X, w! C# d
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; {0 W2 A+ W5 P0 {0 t) Z这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
9 a. `9 U. O8 u) I0 `  z( h
$ l$ `8 ]  H; m) ghimr <address> <value>. sample: himr 0x80040000 0x0
, V1 c0 t' c# j
. k2 z. b1 a5 w; J例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ I& V3 T  h5 v7 W9 A1 \( k. x: B" \* Yhimr 0x80040000 0x00
7 J0 v1 k& c7 b$ }himr 0x80040001 0x11' u8 l. e6 s8 J1 ]" j) i3 A/ q( e
himr 0x80040002 0x22; }# C- b- V/ K: O4 T1 x" b
himr 0x80040003 0x333 L6 J" M4 [" s, g# ?# _5 y9 q
himr 0x80040004 0x44
+ w# \& @, I5 l8 _$ Fhimr 0x80040005 0x55
1 Q# f* V' B: L/ ]. l
( O6 }8 u0 `0 N4 X% MSN也是类似。
6 a6 u  w( [9 }! Q! T" \/ L! R/ N. }! K4 ~# a& z8 I
现在主要是,谁告诉我们MAC和SN的地址?
$ A  W9 I! C3 b8 g% G
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 h# n3 R4 M  P3 o: m一直想找到运程修改MAC和SN的办法,苦于无解啊
  ^/ ^, W$ k, U- z/ v0 X3 c% ]
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
5 j/ W: u. a* y# R  l* J2 W1 X8 U
7 t1 M; l: Q; D% S修改的代码早有了。到今天不会编译。
) L5 w6 A" I+ P需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  Q8 N& _% W* F& G
  2. #include <malloc.h>
    ) F( N, K% G& q+ J2 z
  3. #include <sys/types.h>
    0 z! [2 {! u+ a& L$ J- u" \
  4. #include <sys/stat.h>& U" O/ f) p2 p1 B. \* N/ B# e
  5. #include <sys/ioctl.h>
    7 q3 s- r% p) z, R
  6. #include <stdio.h>( U0 C( Z+ D) [8 H; s" v5 \, |: o' T
  7. #include <string.h>' Q- f: j) x- d$ ~
  8. % i+ L  J# f/ G" H/ D
  9. typedef struct {
    7 w5 p0 I% n# \& r2 v
  10.         unsigned int        e2prom_cmd_sub_addr;2 g$ d" K5 J6 ]+ R( d
  11.         unsigned int        sub_addr_count;
    ; m# K. q; f7 C. B# L
  12.         unsigned char*        e2prom_cmd_data;: ?, j9 ~$ E. y1 I6 K. R- m% M
  13.         unsigned int        data_count;
    $ _8 l& ^6 h9 i
  14. } e2prom_s_cmd;$ h3 c1 K: P9 S3 A8 [2 ]

  15. 7 I5 ~' L" G! @- k& s
  16. #define E2PROM_CMD_READ 18 o- D8 n& y; K! n  ^, `
  17. #define E2PROM_CMD_WRITE 2: ]7 k! h) O9 ~# K" z" Q' e5 h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ @  b! ]' m4 h  g
  19. 9 b% a* v3 f- r9 |. J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! x% e! u! r1 r4 `7 v; V. H
  21. {
    ( J( m& ^- y) l  ~& ^8 D6 F% E
  22.         int fd, ret;4 Z& m( [  M: u0 b
  23.         e2prom_s_cmd arg;5 A) H- x. C, Z( q
  24.         unsigned char buf[0x18];. x8 E( p8 M  W
  25. 1 c1 I, V' H2 ?; \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  }; H* Y1 s2 ?' y1 w
  27.         if (fd  < 0) {
    4 v( o/ V$ c6 \' Q9 l+ r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      C7 R! ^8 g% w: ?; ]" i( K7 L
  29.                 return -1;
    ( O  `( e: f8 F' X5 \) Y$ d% l
  30.         }* F! p6 `: m# i. @+ C  Z
  31.         arg.sub_addr_count      = 2;
    8 I9 ^* Z! g6 n. D/ R2 j& O
  32.         arg.data_count          = 0x18;
    ; r2 D. D9 i& R6 t3 R( n
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 |4 u& N; c! W
  34.         arg.e2prom_cmd_data     = buf;- D0 G( R# j! y& z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 F  i6 t; v* }5 @; d  o7 N
  36.         if (ret != 0) {- \5 u5 F& y4 b+ q) g
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ d! ]2 O: @2 _$ T+ N8 n
  38.                 return -1;
    5 q8 j1 P! {+ E  q
  39.         }
    0 N8 m! f$ M$ T5 a/ X8 q. i. O/ V
  40.         memcpy(mac, buf, 6);6 g5 e) E7 M  e- J: Q* y
  41.         memcpy(stbid, &buf[6], 18);
    ! D% g: v. x) Y% l! G& z4 q
  42.         stbid[18] = '\0';! |: f$ q. R% N

  43. ! d' `5 w5 _: L1 ^
  44.         return 0;
    ) z- s/ U/ L3 W: A& F/ N3 h
  45. }+ s4 q/ |( S7 i7 f% U

  46. ; B3 o1 b( F- f" T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - T: |+ T3 @/ h2 e0 j4 i6 O) s& _
  48. {
    8 [9 H3 \/ ~& P! |) b
  49.         int fd, ret;
    8 t% r* R& B3 ^+ _" C; s8 p
  50.         e2prom_s_cmd arg;
      a4 G* {1 O# o$ z. p; D% \
  51.         unsigned char buf[0x18];' K) G0 J' I, R; Z

  52. 6 z( N, t9 ]/ W; i
  53.         memcpy(buf, mac, 6);( Y3 N- I9 P2 g0 R, {# {2 C
  54.         memcpy(&buf[6], stbid, 18);9 Z1 C' w, j  H0 N! V4 o7 h! t3 p
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; ^( L4 q3 l- d" V7 `
  56.         if (fd  < 0) {
    5 W% x' {7 q- n8 B; ~
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . [% @  N( p& [2 W/ E) x1 F% V# M$ y# ~
  58.                 return -1;+ e6 f* ]4 D4 I0 h! g, p4 a$ j1 y
  59.         }
    % s! m* k, R% [
  60.         arg.sub_addr_count      = 2;, i" ^" Z7 w  w5 Q: Z
  61.         arg.data_count          = 0x18;
    . X) {" S# `% @* u$ Z8 u# F4 E" r1 R
  62.         arg.e2prom_cmd_sub_addr = 0x290;" f5 y* u4 j/ v+ D! k- M  `
  63.         arg.e2prom_cmd_data     = buf;
    : m- |& p( ]9 W4 ^# w3 V) O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 P" D, C% y2 s
  65.         if (ret != 0) {& `2 X; D5 Z8 \" |( [! W. F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      I7 U7 g: @* {; M$ m' H
  67.                 return -1;
    & r1 \% W, y5 ?6 i. w& `5 |; y; S( V
  68.         }5 p: a6 m# w: f( T2 P" Y
  69. 2 @1 l* M1 M4 w
  70.         return 0;3 X* Y, w& _! E' l5 k$ [# l
  71. }
    ! t, M) t" G! {( O; v: N

  72. + S$ B0 W$ S0 Y  x! V' Q' _
  73. int main()
    4 t* ]- w. X9 I' ]* l1 d
  74. {
    # v: X* T; v" C+ _7 n
  75.         char c;
    0 [# T# u% Q0 u: o& P% R
  76.         int i, macs[6];
    . p1 s( d! u1 w
  77.         unsigned char mac[6];1 z3 V* k. ]" W5 B
  78.         unsigned char stbid[256];
    2 U3 ^7 e6 I$ k6 t& t1 G1 G

  79. ; p7 S/ @& F. x( O
  80.         if (readparam(mac, stbid) < 0)
    ! C" |& I3 U+ p& r
  81.                 return 1;
    * ^# B' n7 Z2 i/ `4 S; d

  82. " n5 e) Q) ]6 K4 S2 r5 P
  83.         printf("Current parameters: \n");
    8 o$ `, Q7 D1 K" S6 t# Y5 h2 q: i
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 a9 R+ B6 u! y- R! y5 n2 Y1 ~
  85.         printf("  STBID: %s\n", stbid);
    5 w3 T8 B+ N9 C' v! E  w% T
  86.        
    " i$ r: M. E& S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 Q6 V! A; \5 k# G3 d3 E( I- l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; R0 R4 P/ G+ }$ X% A+ y% l' N
  89.                 printf("Input MAC error\n");8 [7 J: l5 g/ r, d
  90.                 return 1;# u4 M% ]( a& l$ i2 _/ O
  91.         }8 V( O, v1 N$ d/ n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];1 l. b6 K; D- e6 w! A3 x
  93.         printf("\nPlease input new STBID: ");
    . Q( _# Q; r4 ^, k+ }1 m7 [0 y% z, N
  94.         scanf("%s", stbid);; T* G+ n8 B$ C# i, U1 I
  95.         if (strlen(stbid) != 18) {
    , i7 `- t9 C' D+ ?  ?! n
  96.                 printf("Invalid stbid\n");
    8 D9 U. s. q$ h. R. g
  97.                 return 1;. C' L. k8 _" N$ O; c/ s" A
  98.         }  ^! a. X7 n2 q% H& {8 \
  99.         printf("\nNew parameters: \n");
    8 U+ M: t2 z  X0 Q% I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% I0 E* R0 x+ L# U8 D& J6 b
  101.         printf("  STBID: %s\n", stbid);% C- ^# v3 H* S  |  ^* n0 X

  102. . E4 j# P4 D5 U. p7 z9 ^
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . I2 d. D3 ?  s( d6 ?
  104.         for (;;) {3 P- @  o: s/ c; c$ L( a& p
  105.                 c = getchar();- F1 l. O8 m3 N1 Y* S" h6 l9 z
  106.                 if (c == 'y' || c == 'Y')
    , J! w% z+ r* Q( G  R
  107.                         break;$ l8 e6 k6 f) ]: D0 I
  108.                 if (c == 'n' || c == 'N') {
    . W$ p) y. }  N% J2 z" z' T
  109.                         printf("\nAborted.\n");
      B+ x0 V0 Y8 P+ ?4 X( S
  110.                         return 1;
    * n  X& T6 b! y- j* ?  Z
  111.                 }
    8 o; h& v  o  [6 K$ D3 D  @
  112.         }, q- d: L* a/ b% P5 \. [" i5 F% Q; A
  113.         if (writeparam(mac, stbid) == 0) - A# A4 l1 G5 Z' E; e2 y2 ^
  114.                 printf("Parameters changed.\n");
    - H' Y; \; n# _! u
  115. 2 G3 }4 O$ \0 S# v& M$ a
  116.         return 0;
    2 b/ d8 k: `/ X2 h8 u5 d
  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
9 i  n5 ?' s& o+ W7 L8 M4 c0 h* L在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
) E5 F! {; {! S6 i7 d- {( N# u
你用的编译命令行格式是什么?# \9 D* A) u! c* 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客服返回顶部