查看: 16222|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 S4 ]9 c# a( t6 W9 H% J( Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 C; \( d5 D, y2 t6 C1 @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( A& j3 J3 _' Q0 ^" ]5 x2 E. ]( U
usage: himr <address> <value>. sample: himr 0x80040000 0x0; R! U% r" B) C; U+ ?$ N

3 E) d& c( n9 P/ q9 K" c# x# Q
9 U5 c* {$ U# I5 s9 \  h4 k不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& G( A* l5 z3 O+ k8 w6 S4 k
9 Z# D" {7 O# r5 w- f2 f补充内容 (2012-3-8 09:42):
* i" H+ q/ M# J3 H( J4 ~http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: V- e7 R1 r: S' f7 Q( _, _! O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
) v: {) Z9 c! p2 q  W+ h$ s
# T; r  S1 ^9 I7 [* F0 h6 r: hhimr <address> <value>. sample: himr 0x80040000 0x0; L% i- u+ c/ e) U  ^3 s, c
9 }- w& R" P: |* U6 H( \3 J
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 x/ l- g, \' T# vhimr 0x80040000 0x00
, S+ _, f7 O. k' f/ a- ?! U+ thimr 0x80040001 0x11; D8 ?8 n2 a* s/ [- p
himr 0x80040002 0x222 P( S9 E9 j+ j/ ?/ t
himr 0x80040003 0x33
2 e" J2 Z3 f3 G- y* e4 n% nhimr 0x80040004 0x44
" X" A/ k* ?: A/ G/ i( \7 ~8 Qhimr 0x80040005 0x55$ D2 X* k& R8 M' ^& x

/ a$ {; [8 n; j2 I6 G: u3 JSN也是类似。
. {, A0 i( k6 Y! s: S4 e
" ]1 `* }) }. Z+ @3 x+ c现在主要是,谁告诉我们MAC和SN的地址?5 N/ A$ w4 F' b
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 r$ x' t0 M" D. F
一直想找到运程修改MAC和SN的办法,苦于无解啊
9 Z" {  Q% J, S. v, L6 V/ S
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
+ I7 h3 p& P5 Q3 G# r
9 `3 E2 m. Z% o8 f: f! i* }, N修改的代码早有了。到今天不会编译。( B4 j* ^& F7 @; Z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 f& E4 t, v% N+ c- s( i! r. I/ B
  2. #include <malloc.h>4 @) C/ J) B. D; E
  3. #include <sys/types.h>
    0 {7 r- s/ g1 U1 }- o& z* A
  4. #include <sys/stat.h>
    : S" L$ p9 \0 x6 y
  5. #include <sys/ioctl.h>
    " \4 W  ^5 d2 g! F3 L1 ?' s- k
  6. #include <stdio.h>$ c: q9 }/ H  z1 p2 L
  7. #include <string.h>; G4 Q; ?9 [; g  m  L: g( R- o

  8. ; J. o6 d7 H- k6 G0 V5 k  U
  9. typedef struct {, x, w+ ]! `5 m- V
  10.         unsigned int        e2prom_cmd_sub_addr;
    " x2 l4 M- p0 F9 Q! n3 O( F. e
  11.         unsigned int        sub_addr_count;
    / ^. G* S! _" R0 f
  12.         unsigned char*        e2prom_cmd_data;4 `- g4 c$ p5 S, @/ Q8 x( W
  13.         unsigned int        data_count;
    % q" j8 A. Y4 I# C4 O9 y: {* L
  14. } e2prom_s_cmd;
    + I$ P/ A$ Q, D7 }6 _, [9 U$ j2 H
  15.   g) T6 d6 i* }+ `( f% K3 j$ Z
  16. #define E2PROM_CMD_READ 1+ w1 _% |9 X3 J* U6 w3 m  s) l! a7 n
  17. #define E2PROM_CMD_WRITE 20 r0 {( D" L; i) E$ C6 p& a
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 R% P/ p, Z, x/ X& H9 e

  19. 5 R. `+ {' y( j$ }/ B+ y5 A3 T
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 ~& O+ I" ]" x7 C0 H; `) {# h
  21. {
    $ F2 @1 Q( f3 L6 @4 K9 ~
  22.         int fd, ret;
    6 J$ C7 p! p3 c
  23.         e2prom_s_cmd arg;& i, X& R$ m  \  Z) k* a1 N' c$ v
  24.         unsigned char buf[0x18];
    % T) _4 U0 Q' u/ z  U" t% A

  25. 2 r& ?( x: ]9 d( ]) ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% [" l- r* \1 B) R" R* g
  27.         if (fd  < 0) {
    0 |1 W- X4 N- n3 X! w% y5 k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 _  t6 r# L3 f. ?, a
  29.                 return -1;
    4 J2 G+ p' Q0 \
  30.         }
    . r' t. e: U. m# y! Z" c  a
  31.         arg.sub_addr_count      = 2;1 D( _( S  \& I1 R  }3 x  [
  32.         arg.data_count          = 0x18;
    5 _- z6 I; R. J
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 ]6 U5 S  J1 ]' B+ n
  34.         arg.e2prom_cmd_data     = buf;. J: a- I2 N2 E* w+ C0 q. T. @
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 r- p; Z* n7 \* W" v' \- p( A
  36.         if (ret != 0) {
    + B7 A* n. l( _+ w9 Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / ?1 s# D* _0 k: \
  38.                 return -1;& r- G( ^% b8 G+ e% K1 m
  39.         }
    ! F  {. F% D+ @5 [2 k& e4 w
  40.         memcpy(mac, buf, 6);
    6 \/ c9 X# ]1 P5 X% G6 {9 ]1 m
  41.         memcpy(stbid, &buf[6], 18);% u7 i0 }) b. Z1 _7 e: W6 G3 _
  42.         stbid[18] = '\0';" ]& T& G  O/ h" p- G

  43. ! s' D% Q' Z& Y/ ~1 K
  44.         return 0;& i9 A, A0 G4 H7 L: u" d* P/ |
  45. }
    ) C, p* t/ f" N6 W3 g/ o% d9 X8 A
  46. & ?4 y" S- ~0 A- P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  i/ V9 S! w' I- P. s. ^) {, z
  48. {
      _9 N& X4 }3 l' q
  49.         int fd, ret;$ G  ?6 J+ n9 l5 d5 _
  50.         e2prom_s_cmd arg;) b; S; o3 i! P8 n" q4 B( |, N
  51.         unsigned char buf[0x18];
    4 U7 t( g, o+ F6 `# C: b9 Z( O

  52. # g6 x; h* x* h* k. s2 Z4 K
  53.         memcpy(buf, mac, 6);
    0 V  Y5 K" K% p9 |4 a; o
  54.         memcpy(&buf[6], stbid, 18);
    + Z; `/ n8 C6 ^9 t) ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 r, r7 v* t. v# |' u/ ]1 ~
  56.         if (fd  < 0) {
    8 a  v; y# W3 Y1 n* q8 ?+ D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 G. O" X- D8 c6 q' s) K  }
  58.                 return -1;
    8 v8 _0 \; c; Y# P" g2 V% M
  59.         }
    ) B1 J6 p0 `# F% D
  60.         arg.sub_addr_count      = 2;
    1 D6 p0 H: F- `/ U5 a2 s
  61.         arg.data_count          = 0x18;- I. d  D0 X6 s) G
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 R7 f. @4 ]4 }/ @7 W1 P
  63.         arg.e2prom_cmd_data     = buf;
    : A0 m& S) X0 X! J, z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( Z) Z) u5 C+ H- `( \: d
  65.         if (ret != 0) {  J1 K, l7 L  [, F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! E7 V( v, {2 Z, q. z
  67.                 return -1;
    - @! ]$ ^. _; ~' J0 F. w6 I
  68.         }
    $ G! q: M# v4 v6 n
  69. + `9 P1 Y6 \" i6 F, C, K
  70.         return 0;# M# D# U: x2 J# A
  71. }4 P0 |& H7 ^" U/ D  g! ?) W) H

  72. - g7 o; l: B. Q+ |' @
  73. int main()  C7 r0 ^5 T4 H3 d- N
  74. {& _- @0 f& H& i) C5 ~
  75.         char c;
    1 ^! U; {5 N- N2 Y6 V
  76.         int i, macs[6];
    6 j7 i8 `' q( T) K2 O
  77.         unsigned char mac[6];5 B; X5 k8 g# y) u; Q+ m( x
  78.         unsigned char stbid[256];
    ' v4 x9 o8 l; b
  79. 2 M" {- V8 x, o' p8 N
  80.         if (readparam(mac, stbid) < 0)7 W$ B; F! E& `* t6 D5 n  H$ n
  81.                 return 1;. H9 K9 U6 X% l0 ~' [4 m

  82. : t* ?% s3 n$ j% k7 a( c) C" X0 O" s
  83.         printf("Current parameters: \n");' Y/ Z$ ?1 L  }: @) [7 E6 U
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 z3 A; J& M1 J6 J: D3 {. x
  85.         printf("  STBID: %s\n", stbid);
    3 n- N$ K/ A5 @3 \  F( F
  86.         ' u5 V% J; ?. T3 b" c) w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 o2 T9 n8 A" C/ L1 {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; J& R3 p* I! D& ]
  89.                 printf("Input MAC error\n");
    . w! b* j& h# O7 Y! t& |
  90.                 return 1;% k  ?' Q6 X0 q3 B7 H0 m* n
  91.         }! G( [7 y6 K# \) R  ?; [' N4 i4 h$ R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 c  l2 ^( F/ \# O3 T# f5 ^( Z
  93.         printf("\nPlease input new STBID: ");+ Z" A9 T4 f* Q0 T6 R
  94.         scanf("%s", stbid);
    ' _' O/ p/ b4 ]& J
  95.         if (strlen(stbid) != 18) {4 m4 H+ O: y* m8 m8 f4 W% X9 J
  96.                 printf("Invalid stbid\n");
    0 K8 V6 u8 E) C( V9 y# O4 Y
  97.                 return 1;
    2 b% B( x2 r% s7 o
  98.         }. H4 ?- }! {' w" D% g6 z% O9 Z
  99.         printf("\nNew parameters: \n");, z/ Q/ h7 o9 W8 J5 G: W8 v
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  j$ q7 l  g2 {0 p6 {
  101.         printf("  STBID: %s\n", stbid);1 M( N" V& @7 ~! i( L. |4 |

  102. ' Z0 e* \$ u& ]0 f! E& Z6 w
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ) p  J, Q" B# d0 f
  104.         for (;;) {8 u# I' R! H, v" I8 {* _4 \
  105.                 c = getchar();
    ) K5 n( y: a- M
  106.                 if (c == 'y' || c == 'Y'). V1 @5 r8 l* z( P
  107.                         break;
    : b3 m+ [  S, f. c$ ?1 k
  108.                 if (c == 'n' || c == 'N') {
      Z, c5 V3 ?9 N5 O$ R6 i
  109.                         printf("\nAborted.\n");
    9 I# c1 m" U8 Z) a
  110.                         return 1;/ C8 k2 S1 B7 A% I# n
  111.                 }
    ) q! R4 T6 Q. o/ g) L1 b0 q
  112.         }) T3 x7 Z) B; x/ A( i+ X# ]4 Y: {
  113.         if (writeparam(mac, stbid) == 0) 0 \' k2 }( s1 ~
  114.                 printf("Parameters changed.\n");. }9 O8 n/ K, J. i: @2 i
  115. # d$ r7 H' t( J& s
  116.         return 0;
    - f0 s+ i: a+ \1 e2 Z+ q$ F
  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
* H8 o- b/ Z. u2 z1 x" P6 y" J0 ~: Q; \在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- I# M( L% p/ n1 @1 i) j, F6 y你用的编译命令行格式是什么?& c' ~" v- t' s6 Y
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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