查看: 15956|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  H* y9 [) b+ O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& _2 n2 l) c4 Q! Y$ H
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
) @0 p1 D# N/ A4 c4 wusage: himr <address> <value>. sample: himr 0x80040000 0x0' D; s" @4 Y0 a$ o, _/ g, R) L
! M" v/ y  y- k9 ]3 {1 C$ n2 ]+ \

) s5 g2 X+ o  ?5 C$ ^( d, x不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ L) l$ V# Z/ @; W+ y7 @
+ O; Z' Y8 w9 o0 B2 f9 F补充内容 (2012-3-8 09:42):* Z" C9 t) B: x" |) D
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 @; B# B& t+ `! W( w  ^0 M这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
# T  g7 }+ |' s) X+ [2 b2 o/ G! }9 |- I. {! `9 k
himr <address> <value>. sample: himr 0x80040000 0x00 X- Q& [6 X# f; p+ c

/ ?: }7 O  r% L. }) R例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 `+ F. [2 T, `+ L+ Z
himr 0x80040000 0x00
4 b9 C$ P0 y$ ?2 g8 ehimr 0x80040001 0x119 K6 ^* n) T# Z8 K4 w. ]: S: T" E# p
himr 0x80040002 0x22
3 O" l. T, L$ qhimr 0x80040003 0x337 {8 G+ r! Q9 r+ ]
himr 0x80040004 0x44
8 N) M8 r! Q( _/ _himr 0x80040005 0x55
1 M" n+ e/ Z4 |+ M0 G  n* l( M# {' U* {8 T3 @. i
SN也是类似。
) I! r+ c: ~1 }0 A) U% ~: O% X- C$ P* \  F& d
现在主要是,谁告诉我们MAC和SN的地址?' y& @, u  t' H! d5 W8 ?
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # c% R2 {) f6 u5 B/ [
一直想找到运程修改MAC和SN的办法,苦于无解啊
( S) i7 O& R" P$ A( }! p1 e6 Y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 C% {' G& F7 N$ O* p. d" y5 u3 O9 K" ^! y/ _. N
修改的代码早有了。到今天不会编译。
: `3 u3 v' a, y需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* Z+ [) I3 H" H$ I- o( I4 E8 b0 e
  2. #include <malloc.h>
    , h% D: }* K) `/ I
  3. #include <sys/types.h>1 ?, c1 _+ ^8 L' T7 p7 f  X) W1 z
  4. #include <sys/stat.h>
    ' \9 t$ R; @9 l! ?9 ?0 m, W
  5. #include <sys/ioctl.h>
      _2 Y" ?& @0 |5 C
  6. #include <stdio.h>* u% ^2 Q7 y% R3 L3 J
  7. #include <string.h>
    # i6 |- U% s! T
  8. . |: @# U+ ?2 r3 r2 Y! G0 L
  9. typedef struct {2 S# W# L4 u$ M3 _3 V8 Y/ ^
  10.         unsigned int        e2prom_cmd_sub_addr;0 ~3 B0 n* N/ w
  11.         unsigned int        sub_addr_count;
    ! I' @  q3 t0 c1 Q
  12.         unsigned char*        e2prom_cmd_data;
    * S, V( g3 ]# ?, N7 S2 q, S4 g" K7 Q
  13.         unsigned int        data_count;
    ( y5 g* r: O9 I  h& p6 j0 E- m
  14. } e2prom_s_cmd;) Z" {) q+ w$ _# X7 X& z; h- V+ F
  15. * }  T/ K8 _2 F- l
  16. #define E2PROM_CMD_READ 1
    * E( ^& o$ I' @) Z" s3 ?, z4 z
  17. #define E2PROM_CMD_WRITE 2
    9 n4 ]1 W) u5 t3 v' v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / ~6 Q% `: @: a$ Y: q

  19. - j5 h7 p* n, M) T; l+ f* A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! E7 Z' ^. K$ H5 C
  21. {
    2 G0 ^! m4 F+ [; _! \" q8 G- S1 j
  22.         int fd, ret;) a- _3 _8 J9 E
  23.         e2prom_s_cmd arg;% N1 O  ?( n9 \5 k- ?) F
  24.         unsigned char buf[0x18];
    % s3 f1 {! h) S* h3 G3 \

  25. 4 c% k" F3 N1 V( _' r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    # t* B) k* w5 u5 j$ R( j
  27.         if (fd  < 0) {2 V1 r$ Q3 {4 B3 X* y/ u' f, F, p$ |
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 P8 [' z( d* a/ l8 I
  29.                 return -1;4 K- h* Q4 N: j5 C8 e! ]
  30.         }
    ! G6 l' Y5 o7 {
  31.         arg.sub_addr_count      = 2;! [8 m+ P6 @5 i2 O8 u; a3 d1 A
  32.         arg.data_count          = 0x18;
    0 M0 U3 @# W/ c2 B- z. v
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 \  x' t2 r  C+ w% u5 R- {' }
  34.         arg.e2prom_cmd_data     = buf;
    / C) o& X( Y0 _) n9 A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' S  `3 m* e+ h1 w" W8 c% R. _7 k
  36.         if (ret != 0) {; q# b4 o/ D* a6 l: ^  J. i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 F$ z3 s  ^! {. G8 U* ~" A
  38.                 return -1;
    6 @3 L8 X. g: r, \- K: F. ~& f! `
  39.         }: h! \3 W- u9 ]" k; ]
  40.         memcpy(mac, buf, 6);
    : j- o4 ]- A& C$ {1 Z
  41.         memcpy(stbid, &buf[6], 18);
    ) D7 \4 f$ r: G4 W  z, p: z
  42.         stbid[18] = '\0';+ k$ V2 m" l2 s, h! y

  43. 6 D" h) R7 g/ L9 S4 p
  44.         return 0;
    ( N  D% \* X* A& N3 k4 \
  45. }& v" p( R/ N( V5 G
  46. 8 C1 l7 l9 E# _6 ^3 R4 |
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 G3 M/ q; A1 f! M3 `
  48. {
    8 ]7 f* M) ^8 m
  49.         int fd, ret;, f' ?, e( M- s4 R
  50.         e2prom_s_cmd arg;3 _+ m3 F. s; q8 a" R3 `! m
  51.         unsigned char buf[0x18];7 z9 G/ Y- r. P. }6 B
  52. 4 |% }4 f+ p+ I( `" C* @
  53.         memcpy(buf, mac, 6);
    & V+ I6 Q* w8 f
  54.         memcpy(&buf[6], stbid, 18);" U8 g$ w4 i7 M2 H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) }9 m2 ?* ^" b0 G0 R
  56.         if (fd  < 0) {
    + Y9 ~3 {# L4 }! v; p& N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ Y0 A6 O* z3 H, }  h% b9 j
  58.                 return -1;
    7 D! {7 Q, M; W5 \. {% |8 p
  59.         }& d0 e' u9 |$ O8 w+ P  e! y
  60.         arg.sub_addr_count      = 2;
    + N; c0 N) p" M9 k1 ^# N
  61.         arg.data_count          = 0x18;) I- _; e( B6 n# ^0 M3 x6 p
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    6 m2 p' P+ _/ d% b- ^: Q6 O4 Q
  63.         arg.e2prom_cmd_data     = buf;
    5 S- O1 s, w. i; t" `0 d) \5 ^0 V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: d5 Z3 Z$ a( B
  65.         if (ret != 0) {
    0 k& G3 I0 D/ \8 t/ C+ K7 C- _+ Y, h" i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; f* h5 \+ |) [
  67.                 return -1;
    + @: {  D5 p' F* v) z  x
  68.         }
    ' \+ M, A6 A# t, c
  69. / V" U# f2 y/ q, K
  70.         return 0;
    0 B. \6 j: K9 L) N! L
  71. }, b: ~$ F  M0 e

  72. & G1 t! L3 d9 S0 a/ B
  73. int main()
    7 K8 N8 \& {. B
  74. {
    9 X  a6 `# L, l! Q4 ^' l9 i- Q
  75.         char c;
    # H- P: T+ |  |9 R  L
  76.         int i, macs[6];
    ; a# O! [' C" J7 P' z- k
  77.         unsigned char mac[6];
    . @/ `3 E' H5 b
  78.         unsigned char stbid[256];
    5 F1 H7 W$ M5 u% @& r+ M
  79. : k* y5 v; {) B0 M9 N2 T1 t
  80.         if (readparam(mac, stbid) < 0)
    2 O" d/ X. ^: X' [  k+ F7 E6 g) b
  81.                 return 1;
    0 B& |  i/ R3 n6 s8 z+ {
  82. % `, E1 O' c0 u# T5 J) m
  83.         printf("Current parameters: \n");5 k& \0 ~; w/ ~7 y7 L) k2 T
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( C8 e; h9 \  g* W5 s% S) v! b' l
  85.         printf("  STBID: %s\n", stbid);
    " j* v* e1 \* h6 h% o
  86.         ) M2 T7 l$ v  @& N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 y" Y& p# }- d$ Y$ j& i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + O. ~. R0 d6 N- w  z
  89.                 printf("Input MAC error\n");
    ) F1 ^0 s+ o' Z3 A) S
  90.                 return 1;
    # k5 ~5 ?; d2 ~% w& X4 p
  91.         }  h5 r8 k2 g( G- _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( N+ J9 u0 O2 `) c4 z
  93.         printf("\nPlease input new STBID: ");% Y( w( a, {. \& j+ N: |
  94.         scanf("%s", stbid);  p' t% }2 @; t/ V1 ]0 P
  95.         if (strlen(stbid) != 18) {5 j5 b/ o: ^7 s3 e/ s- L! v& G* _
  96.                 printf("Invalid stbid\n");
    5 H/ h+ H& P3 ~6 C. G) P  X
  97.                 return 1;# g" z* l9 P. ^, b; z2 Z  [; j1 w
  98.         }
    ( ~4 B+ ]9 P0 J: l7 N  Q
  99.         printf("\nNew parameters: \n");* ~- E$ p1 [) y* g/ a& J& j+ C8 g
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ n. [& }4 b- \: r. b; X6 x& U( c4 R
  101.         printf("  STBID: %s\n", stbid);
    ) Z& o1 @$ V4 i$ [& X
  102. * E. J0 [( q3 o1 \; q% h. e2 N
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / N  Z/ j, e; A1 Z  J
  104.         for (;;) {$ @  g/ C! B1 Y' m' _# C, I
  105.                 c = getchar();* k# ]" T9 Y2 z. ]
  106.                 if (c == 'y' || c == 'Y')
    / `9 M* W% |: U) N& l
  107.                         break;
    8 |) ?- e/ g  w- \, k, Y! k
  108.                 if (c == 'n' || c == 'N') {& l* @1 u8 n# p* e$ f
  109.                         printf("\nAborted.\n");
    # [# o; R: n" p4 L8 E3 l9 J% N" W9 K
  110.                         return 1;
    : z1 L! p( n" j( C8 D; {3 @
  111.                 }, E8 K- X5 M7 ^7 F, K( u/ a) Z
  112.         }
    3 m- k6 {5 T$ o- }  X
  113.         if (writeparam(mac, stbid) == 0) & [7 z; x! ?- C1 c
  114.                 printf("Parameters changed.\n");
    0 y0 f. V* L( t! Q

  115. : C1 x" R) n* s
  116.         return 0;
    5 D  x9 M- D& b1 l  O
  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
; X$ H% {* C6 L, j' d! s在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( B. a+ L/ J& _4 J* p, r$ d( t
你用的编译命令行格式是什么?
0 n( y4 g3 x# p  l
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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