查看: 16680|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) ~$ Q$ e4 u: }% H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % I3 M  }# X8 ^; w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% M% j* e9 t* k0 y3 o  `" L" G5 b: {% J
usage: himr <address> <value>. sample: himr 0x80040000 0x0( c! o- ]( @! {

% c: l1 p# ?/ i9 z1 @& G8 m+ \5 J) ^. e
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  ~1 ]2 S' a& W" ?
. a" i9 x' @! D补充内容 (2012-3-8 09:42):$ n, K% _6 b/ b% F- e& }5 t( F
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; F! s. K9 D' ~; x+ y7 h. g这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# @2 T& i' O- U# m' }4 ]) J# Q

+ N! z# G1 ?: a  e$ Phimr <address> <value>. sample: himr 0x80040000 0x0
% |2 a0 j2 g+ k; p  `3 T* ^' M; \# p7 G8 z2 q9 ^% R
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
/ @6 r) r. d9 l3 m3 m' u: R/ uhimr 0x80040000 0x00
! M( ^8 E6 `+ Q* c1 K: h2 Ghimr 0x80040001 0x11
7 C6 p7 Q$ [8 f9 [1 ohimr 0x80040002 0x227 D4 ?  n6 r* n# Y$ \- u5 @
himr 0x80040003 0x33* W8 D9 s# D( O9 o7 P
himr 0x80040004 0x44& T1 b" ?+ r, Z( _
himr 0x80040005 0x55- O$ s6 k6 `4 U% R: o( D* T

# y/ d: o+ p6 u3 _# {SN也是类似。) P. S  W* {9 c0 K
/ \, B' E3 O) J/ M1 t9 s
现在主要是,谁告诉我们MAC和SN的地址?2 Z4 a& ^% z& L/ a- N; _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" V$ m, y* }  c+ j, x( m一直想找到运程修改MAC和SN的办法,苦于无解啊
1 B' |9 D0 s/ R2 I6 b  ?
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 R/ W# G) e2 g6 m5 F( j% D8 |' K4 ?
修改的代码早有了。到今天不会编译。: l% E. g# }( x7 I( ]
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , v2 J* ]2 q/ U  J' u
  2. #include <malloc.h>6 ?5 p; n9 K1 y! a  o, C; i1 e
  3. #include <sys/types.h>- S2 \' r, x$ |  L/ P# \6 p
  4. #include <sys/stat.h>, U; E+ a1 s: L# V! r
  5. #include <sys/ioctl.h>: p4 F& d+ v1 V5 \
  6. #include <stdio.h>8 y) @7 i2 J3 ^
  7. #include <string.h>" ?& J- W$ E0 M/ W& ~( S  A5 i

  8. $ |- y3 H" O; z* M
  9. typedef struct {/ q" m3 K/ L( I9 P+ {
  10.         unsigned int        e2prom_cmd_sub_addr;3 ]  m# J1 j% g/ ?% ]8 }9 f5 q" {
  11.         unsigned int        sub_addr_count;
    " z, O3 K4 d/ X$ e) o
  12.         unsigned char*        e2prom_cmd_data;# d$ t1 F4 E) b$ Z' W' J+ j$ p
  13.         unsigned int        data_count;
    2 `1 Q. n% T8 S/ Y3 `$ u- F
  14. } e2prom_s_cmd;
    " u# d& w1 J1 ^! Y2 H# \0 {/ F

  15. $ Q$ s5 L/ U9 `  S" t) y
  16. #define E2PROM_CMD_READ 1" @5 h" l: Q9 d! Q, |& {# k( r% s$ w! w
  17. #define E2PROM_CMD_WRITE 2
    % W- \( x  l  s$ F1 e! B5 @
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16": z6 r) Y% a3 K: r) ]  g* z+ V
  19. 9 Y/ a+ ^4 z! w; u& M  @( E
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! f# u0 K/ r4 N$ I- n% x
  21. {
    $ u. V2 s( h3 r* ?1 v# d
  22.         int fd, ret;
    # K5 ?5 r- I3 Y4 C5 T+ ~3 Y  ~5 ]
  23.         e2prom_s_cmd arg;
    " ?% i& [. f  T: p( u  P( C
  24.         unsigned char buf[0x18];
    $ w& A( J: b; F8 U6 R

  25. ) v  w) C. s. C+ h* C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 W: a8 v  a- m8 L& g
  27.         if (fd  < 0) {
    % D/ E5 L# `# Q' R0 o2 z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 G" R) d  {- F. V, i0 p5 a
  29.                 return -1;+ v2 d3 q. ^  h5 i
  30.         }
    , C( J- l2 K( j8 \" K- h+ M
  31.         arg.sub_addr_count      = 2;2 Z! `2 }8 S# r/ r7 {& T
  32.         arg.data_count          = 0x18;5 J& @, I0 j/ H' a/ Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 A1 o; b9 f& \& c  P
  34.         arg.e2prom_cmd_data     = buf;# A  W0 t3 z4 W9 Z: o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ E% i1 _) O' a5 e1 Q& n
  36.         if (ret != 0) {
    7 t3 z$ |+ Y0 D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ |8 u" f6 ]. Z3 }
  38.                 return -1;
    ) [# K& r7 }/ y. x
  39.         }
    # C. V, P4 h/ u& h
  40.         memcpy(mac, buf, 6);0 R2 i0 V3 i. ?- x
  41.         memcpy(stbid, &buf[6], 18);
    8 p8 q. g1 N* o5 y4 \& S
  42.         stbid[18] = '\0';
    : J2 w# @5 F4 c. p0 g3 r7 F. i4 ^
  43. + |. j, h  X$ }' u
  44.         return 0;
    ! ?, s: H# d8 C6 D
  45. }
    . T" a( U& {; B; B9 Z; V

  46. 7 w' d% i1 A* U$ V# \$ W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 G/ n9 D( b6 ~$ f4 N* T
  48. {, q/ R, C5 J4 C, @3 T; t
  49.         int fd, ret;* ?+ A# L: v2 v( H
  50.         e2prom_s_cmd arg;
    / w6 K/ R7 m9 \/ [
  51.         unsigned char buf[0x18];
    $ g1 l: F- S0 L: `

  52. # }0 ?, v( L: q( v+ G
  53.         memcpy(buf, mac, 6);
    % C  J- r* }& U3 |
  54.         memcpy(&buf[6], stbid, 18);( J; {7 i) n$ \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 X1 y( r' {6 `
  56.         if (fd  < 0) {
    / x+ L* Y. k9 X+ u4 X0 ]! w6 V. y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. G, ?& {2 U/ P! i
  58.                 return -1;
    - d! |# Z' y" H  g. \9 `6 E+ ~
  59.         }$ G6 F3 s$ A, |# q) s
  60.         arg.sub_addr_count      = 2;& h4 e- o: K5 b
  61.         arg.data_count          = 0x18;" V7 U3 B; u$ w" Y5 a. _
  62.         arg.e2prom_cmd_sub_addr = 0x290;6 y5 v0 f+ a0 Q( p, N" ~; L( f8 V+ b
  63.         arg.e2prom_cmd_data     = buf;9 Y. r3 W" J" \9 A& g. S/ k- v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  |# z# A+ W& F" I
  65.         if (ret != 0) {+ s/ y9 L9 x1 L. K, ^1 M3 B# g( Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! V2 y) W! A& m! k
  67.                 return -1;
    , q6 V; Y: I5 ~
  68.         }
    , I. d% f: t2 G7 U' b$ L

  69. ) O- n5 X1 ^4 c
  70.         return 0;) R+ ~! q% H3 e$ y
  71. }
    ) y; b5 K, o' c
  72. 8 V8 f2 s" ~8 v/ ?8 ?
  73. int main()* b9 z9 _  y6 Z, j$ Q5 S8 c; L4 m6 H
  74. {
    - R. F4 O/ ^: D0 o
  75.         char c;
    . w. C3 W1 K4 ?  H: d
  76.         int i, macs[6];
    ; P1 E, y% i' ?2 q
  77.         unsigned char mac[6];
    ! g$ o. i1 \! ]1 ~& l0 a
  78.         unsigned char stbid[256];
    $ C% B1 D) _- x/ Q; [: E- b/ s$ i

  79. 2 {' Y& o" `+ O- P& x( D
  80.         if (readparam(mac, stbid) < 0)6 Q; V- I  j+ |: J
  81.                 return 1;# m* N) @- `; Y. f) [3 D; K' m' V
  82. 3 \) g7 O$ J9 e% z6 P! u# _: ^
  83.         printf("Current parameters: \n");
    0 C8 q7 g0 y/ ~. I
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( M7 I$ n5 L. f% |1 D
  85.         printf("  STBID: %s\n", stbid);
    $ m; S* V4 C6 [1 o3 l6 _# V
  86.        
    7 f8 {* e8 V; }  o0 ]) U! k; A" Q  L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 L5 @! q) j3 y. U% R
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ y3 I; ^; D2 J
  89.                 printf("Input MAC error\n");
    4 O9 G! T3 N$ S
  90.                 return 1;
    % L9 P2 D! h/ ~2 X" E
  91.         }* O2 E3 D- B, Y' p% ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , ?1 c; C/ U2 o% }
  93.         printf("\nPlease input new STBID: ");
    3 ^# T7 M+ f2 s7 l# A
  94.         scanf("%s", stbid);
    + F* q9 n) W6 V9 M$ ?+ p
  95.         if (strlen(stbid) != 18) {! |- U0 \8 \& ?# o( q
  96.                 printf("Invalid stbid\n");
    1 \9 O! K! b  `/ X. N4 |
  97.                 return 1;
    : ]4 k- F8 f( N0 J0 z" I+ E
  98.         }
    7 M5 d0 E/ k1 E  e% B& W/ m5 Z
  99.         printf("\nNew parameters: \n");
    - J. j" N9 k/ k" x$ O" a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! N2 z( E, t% P3 B1 W: z
  101.         printf("  STBID: %s\n", stbid);
    ; g0 {! H3 ~9 C0 }$ f5 D
  102. % Y+ \8 D+ R" h- b7 \1 \
  103.         printf("\nDo you want to change paramemters? (y/N) ");: l; U* X8 I6 z$ t& T0 W5 r
  104.         for (;;) {
    8 v6 x( e1 g# k" P0 V
  105.                 c = getchar();
    7 g" B8 X5 h1 Q# M" H- H
  106.                 if (c == 'y' || c == 'Y')1 J2 {4 g2 a# l  L; Q$ \2 C
  107.                         break;- R% N& B! }. N9 z
  108.                 if (c == 'n' || c == 'N') {5 y( C9 U+ Z9 z( j
  109.                         printf("\nAborted.\n");, p$ `9 u6 Y' b( I& @
  110.                         return 1;
    ' ]/ ^6 S5 J" c/ V8 F
  111.                 }
    5 c0 T* c) l* l' J$ r. i- J6 N. Z
  112.         }" S- _2 ^0 p- U: R( M8 d. z4 X
  113.         if (writeparam(mac, stbid) == 0) ' i7 Y# |2 A; S: I; N5 O& L
  114.                 printf("Parameters changed.\n");
    % H4 l  O( @9 N; _% w
  115. / v+ U8 y" ~$ ~( R) m3 M# {
  116.         return 0;+ y7 `1 G5 u+ w# g5 @& ]% N( K
  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% ], t- R6 _+ u  Z8 N在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ ]2 I5 `% {: W, r' }5 ?4 \
你用的编译命令行格式是什么?2 M/ |, ~2 Y0 ]( y! m  F) g
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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