查看: 16588|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 ~" I% X5 n5 u  i3 Y6 D, o
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 x' r* D7 ]8 S. }9 i, H
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  _+ C. f' y9 ]! s0 D' x' \3 [usage: himr <address> <value>. sample: himr 0x80040000 0x0" ]: Q( R; D( r) l
) B. i7 |. O8 D8 Z. j/ y. L
% r/ Z- ^7 [, p- r; n. [
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' L$ {3 k; {' N* l: n* f1 A2 Y
) d% K+ A: W; y7 p  x# N0 }+ B
补充内容 (2012-3-8 09:42):
+ S' I; D" R( \2 P- c/ vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
6 @$ {$ j: o/ @& ?这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。' U! ]% v7 B: P( q+ D; K

9 p& {# X: G: u% g" Fhimr <address> <value>. sample: himr 0x80040000 0x0
3 X* P8 Z; V% Q/ X0 h( u/ O$ u0 b# w5 A& u; e$ c$ B6 o
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
5 L2 E+ g& ?2 p/ @- thimr 0x80040000 0x00
0 J/ \5 }4 F/ U9 ]. R9 }* V5 Shimr 0x80040001 0x115 v9 S( O2 e4 v* c( l
himr 0x80040002 0x22+ \; l( q: j- @
himr 0x80040003 0x33
, B) F. Y9 u- B' W+ E( f9 z) P: ihimr 0x80040004 0x44
; {" R7 X, \8 W4 [2 \; X4 p- _himr 0x80040005 0x55
% F6 C5 e: y7 u; {* l1 n8 `  X( M% R' ]+ L8 C* n
SN也是类似。) Q6 w& S9 O5 `: S' N$ R: w# W) A

5 H6 r0 N' t" y7 s现在主要是,谁告诉我们MAC和SN的地址?; _; x: K3 W4 M, {
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 x9 W5 i. h; C* O! H( O) T
一直想找到运程修改MAC和SN的办法,苦于无解啊
! ?2 I4 D# L8 n$ t' |8 Y% z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : |  ]1 i7 a( |6 M2 T; @. ^: P

5 V: E: b) D3 l' x# B+ t修改的代码早有了。到今天不会编译。
0 }: |" C! u' w' Z8 |: T8 s* Z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 O/ t, b: {1 Z  P
  2. #include <malloc.h>( D. U$ c4 N- J/ q* Z0 o. q
  3. #include <sys/types.h>5 n+ {3 @* A" G6 v. z, P% U  l& N
  4. #include <sys/stat.h>
    9 V. L5 w$ D; w% w9 ]' E" O5 p6 y
  5. #include <sys/ioctl.h>
    & K$ W$ c* _2 k* g2 M/ P
  6. #include <stdio.h>9 L: d: X' ^4 h3 X+ Y) x
  7. #include <string.h>( h8 y. ^" D6 ^

  8. ) a  f; Q: l1 e% G' ~# k% ?
  9. typedef struct {! N! y+ r4 Z- H, s
  10.         unsigned int        e2prom_cmd_sub_addr;
    , f7 S5 i4 e+ z, {  V* Z
  11.         unsigned int        sub_addr_count;
    / g8 @( U, }4 }7 W7 g
  12.         unsigned char*        e2prom_cmd_data;
    $ G9 S4 i: \2 X1 x0 ]9 {3 M  Q
  13.         unsigned int        data_count;
    ! C3 h9 |+ u+ R! ]
  14. } e2prom_s_cmd;! T' r5 x* k  e: M" X

  15. 3 r$ t+ ]; }" d8 S$ P, B" }7 D
  16. #define E2PROM_CMD_READ 1  R* `3 A+ @$ v2 R! C
  17. #define E2PROM_CMD_WRITE 2
    ( o( N! H2 ~1 N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( ~) o  D0 }5 D. D2 E2 {3 n& K
  19. % p! W0 o/ f' b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 T9 {0 U" Z5 x. b
  21. {
    / A# c  D/ i* [
  22.         int fd, ret;
    9 X- x. W4 r/ N2 b+ K6 T; v: ]
  23.         e2prom_s_cmd arg;
    ) }- V' K8 {) \7 q2 l; U
  24.         unsigned char buf[0x18];$ V% }8 `' M! \3 f! H7 W
  25. 8 l0 K9 L0 R& t- {( n5 J, F
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 A+ @) {( Z* n$ u" M
  27.         if (fd  < 0) {
    , p' n" Q$ f9 x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 ]3 ^) G: v  Z/ _, I4 r
  29.                 return -1;6 g( I# E, V; d% x: B) L* P: Z
  30.         }! L& m* Q3 V2 D, f7 o5 H) G
  31.         arg.sub_addr_count      = 2;
    ) \2 ^$ ^' K9 h5 D( ~' H/ j1 h
  32.         arg.data_count          = 0x18;
    & R4 A5 r" @" P# b: V
  33.         arg.e2prom_cmd_sub_addr = 0x290;) [2 A* g* [. Q0 L' P' R
  34.         arg.e2prom_cmd_data     = buf;: v  \* z7 g" P9 X- ]; X2 p$ h% m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 ^2 e: j3 n) T+ T3 p2 r1 j' R
  36.         if (ret != 0) {
    6 {% i; x5 @* x( L, t6 z# ~
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ( S3 w8 N6 E, ?
  38.                 return -1;
    % h% t! w- N  O2 P8 K4 h
  39.         }) F1 v6 P4 M  D" D# q
  40.         memcpy(mac, buf, 6);
    ! S) j6 g, @3 H9 u4 l) a
  41.         memcpy(stbid, &buf[6], 18);) }( M+ E5 \# T/ D# F' {, F
  42.         stbid[18] = '\0';+ ^, ^9 a& d9 ]9 [: ?8 J2 f# x
  43. ) e- l. o" n$ u$ T
  44.         return 0;
    ! i3 [& V& \. W
  45. }
    1 _% w& H: h. [- X; X  a

  46. , }; z! j; J0 R; i# j! Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 n2 L& \; c8 o+ r) G1 b
  48. {
    ' T2 e0 [8 O! }6 D4 G. [9 F
  49.         int fd, ret;9 _" A# Q: H7 n' ?
  50.         e2prom_s_cmd arg;
    6 k0 x3 I+ u( |0 o- ]9 n
  51.         unsigned char buf[0x18];
    1 c4 n8 h8 U) v; l9 N. s
  52. , ~/ M# A7 o( A$ ^" j7 ?0 R
  53.         memcpy(buf, mac, 6);8 g" S6 o. I6 o9 K1 r+ S7 u4 Z
  54.         memcpy(&buf[6], stbid, 18);
    ) q  h2 U% l5 E3 X
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  J. v7 U* f. L6 S
  56.         if (fd  < 0) {
    1 w8 U  H2 C5 e& r4 F' W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 r+ v! |5 ]6 Z' y. Q4 p
  58.                 return -1;( j7 W4 L# y/ _5 Y+ s
  59.         }
      P' o1 @# w0 [4 n3 Q+ N2 |1 Z
  60.         arg.sub_addr_count      = 2;! N5 n+ r; ^0 {0 h
  61.         arg.data_count          = 0x18;
    ; u  Z. _' ?, @
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 I7 U: w& _0 n# G9 T8 m
  63.         arg.e2prom_cmd_data     = buf;
    % b0 H3 Q5 r1 b$ a6 E. {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 ^6 ]4 C3 I& F, F1 e  U) A/ C$ H/ _
  65.         if (ret != 0) {8 Z; j$ U4 e2 ]4 R6 i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ {' [& O, E! A) O; B
  67.                 return -1;
    * w9 u0 Y  R; ~! ?. Z( i: J
  68.         }
    # n' \6 J4 V2 |) J) e, R

  69. 3 G: {5 _5 t* E2 A# y/ ~
  70.         return 0;/ h/ J" R" [, P9 ?! H1 t. s
  71. }
    8 W, Y" s& S/ _4 V) w

  72. $ E  x3 q1 ?" V1 T" S
  73. int main()
    1 W; O& R; v8 p1 a, b- s
  74. {
    ! k. d9 P. p$ B- a5 o/ t
  75.         char c;1 ^- |* f+ n: N5 y. l# {- Y
  76.         int i, macs[6];3 }( Q7 M5 E) x: j
  77.         unsigned char mac[6];& c" X% _4 b7 G0 R, d8 t/ ]
  78.         unsigned char stbid[256];
    5 E3 ~) U* z1 f( i* `

  79. & I9 @3 P. s. D
  80.         if (readparam(mac, stbid) < 0)$ x1 @0 c# j  n0 n* A) ]- E# q
  81.                 return 1;
    ( v. S5 x5 I& r0 \5 b6 G; m* l' N  ^

  82. / `# q! }$ E8 V
  83.         printf("Current parameters: \n");! O  \1 q8 j/ W( S- g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! j- A- ?" Z1 |1 J/ X( J8 \7 b
  85.         printf("  STBID: %s\n", stbid);
    5 W. L% u1 b" ?9 D# y* Q# ^
  86.        
    4 N, v5 h+ I4 p, X8 w7 I' O- ]5 a
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & U% b8 Z$ L, X, N+ U" G0 s! ?3 i& T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ z1 q9 E, _1 W8 d
  89.                 printf("Input MAC error\n");: L: `0 ~$ l2 o0 P" P& @
  90.                 return 1;% |" Q' l$ y& A/ ~$ r) r
  91.         }
    8 \3 g' T; a: W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , X% ?; U( b' M+ s+ }" C5 L+ t
  93.         printf("\nPlease input new STBID: ");( j0 @# ^5 s! w& s$ {, N
  94.         scanf("%s", stbid);
    6 v6 ?3 u' q- f9 O0 Y
  95.         if (strlen(stbid) != 18) {/ P3 O( @5 d1 r0 d( |# ]
  96.                 printf("Invalid stbid\n");' W% m( G8 n: @1 n$ R
  97.                 return 1;- t( B# {: z2 L% ~
  98.         }+ q. i) b6 Q) ]
  99.         printf("\nNew parameters: \n");5 x/ `0 d( M- A1 M  H/ j, \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 p4 v  C5 \( P& H2 D5 p
  101.         printf("  STBID: %s\n", stbid);
    6 U8 O5 t* _) A/ I

  102. . R1 q$ }$ ]0 }5 _9 l
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % y  o) L5 M1 M2 J$ ]
  104.         for (;;) {
    % n7 L9 J; k, u% u: H9 x( s/ D
  105.                 c = getchar();4 Z( H( o2 I; k  \
  106.                 if (c == 'y' || c == 'Y')  n8 S, V8 P4 U
  107.                         break;, ^5 z7 P  P) T; a2 F3 D
  108.                 if (c == 'n' || c == 'N') {& u  s* ?, O8 M) e
  109.                         printf("\nAborted.\n");
    " b! {2 L2 U+ F$ z6 x
  110.                         return 1;* g0 `8 S+ V' m4 n% A. Z
  111.                 }
    8 P4 z5 s  D% o0 x2 M- A  I. H
  112.         }
    : u  T9 S) a" I/ n8 Y
  113.         if (writeparam(mac, stbid) == 0)
    3 h" y0 U9 U8 w! K/ Z8 ~( f
  114.                 printf("Parameters changed.\n");# G8 ?) l9 `. X9 M
  115. ( u2 b0 ~5 p; @( i' X6 ^; F
  116.         return 0;
    & S0 m" u0 [+ i2 Y1 e9 q3 l% S
  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
# a* v0 \! Q& n  n在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 k" e: S# I$ N  v' ~
你用的编译命令行格式是什么?
5 |* u4 T$ j  h! [; E4 H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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