查看: 16543|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 |0 S" [' k1 o) i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 R, w8 m4 O( v( H" ]0 d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 o3 v1 ]! q7 [
usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 I; q9 T2 S3 D+ Y$ ]8 J* V# K$ U) d

0 _  n' y/ |# Z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 D! D- S& I- s3 F

  p" M5 W" m2 v补充内容 (2012-3-8 09:42):- o& m  R! B8 t6 V% B; t5 r
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, z+ C- ?* ?4 W2 X/ c" Y$ B
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。/ Q( @" q9 m0 X) i$ A. z  d

, i& `1 [% M; \5 U% b. Y0 |himr <address> <value>. sample: himr 0x80040000 0x07 g7 Q# l$ K; H6 @2 W
! t1 s: z1 [( k6 m  F3 X) c0 c7 ]
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- a; E! f6 l& N; e+ c- rhimr 0x80040000 0x00
* v- p- C& X: [: Y& G# t: ohimr 0x80040001 0x11
$ b( ~) p* B/ B5 Fhimr 0x80040002 0x22
9 u$ R. Z6 ?# \' ?himr 0x80040003 0x33! E" t3 a3 }* b- W' J/ `, E$ k. [
himr 0x80040004 0x44
; Y/ D$ O+ _, ?4 ^1 \& L: A+ yhimr 0x80040005 0x556 s) u; O% t& @' p: t. B- i: o% q

4 K; M; p- V* ^8 ?0 DSN也是类似。* c- H, T9 S! l: i
: c( x% S& \7 L1 {* A6 U4 k
现在主要是,谁告诉我们MAC和SN的地址?
/ h# h8 M3 ?4 _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 j$ |" N9 k; u4 Y" X- u一直想找到运程修改MAC和SN的办法,苦于无解啊

+ q) [) i2 Y4 i3 a( R源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 # m# B5 d  j- k5 n) I. L
( I" J) [. C0 i. C5 U6 R
修改的代码早有了。到今天不会编译。9 f' j4 I. p% K* g5 L% u- U
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) O2 X  [% U: b+ D' h
  2. #include <malloc.h>
    6 _# y. ]8 E6 c. R7 B* Y
  3. #include <sys/types.h>6 [+ @/ |$ ]2 {2 ~& ~2 f
  4. #include <sys/stat.h>
    . |* u) l0 U+ H* C+ m" L7 e/ V( p
  5. #include <sys/ioctl.h>
    : T/ ]; a/ B4 x' d0 e0 d- h  J
  6. #include <stdio.h>
    ( \! Q. I9 o7 k( p* g
  7. #include <string.h>9 n' Y0 _9 |: g4 E  \5 X

  8. 8 A+ Q) ~+ O6 U  n
  9. typedef struct {. \  O) }9 Z& M! T4 |; X
  10.         unsigned int        e2prom_cmd_sub_addr;; q6 ^' M2 f, W# {/ ^! d9 T( B
  11.         unsigned int        sub_addr_count;1 n4 ~7 f2 U0 D
  12.         unsigned char*        e2prom_cmd_data;) B. s( s; l! _, x! G  N
  13.         unsigned int        data_count;$ T+ {/ w8 r* ^9 [  ]5 x! f
  14. } e2prom_s_cmd;' `. u2 \/ ^8 I. D4 G+ X
  15. # n- w! l/ ~! M9 S6 a! O
  16. #define E2PROM_CMD_READ 1
    * ~% o: x; ~8 s" \9 v- [5 |- s, ~+ i  ~
  17. #define E2PROM_CMD_WRITE 2
    9 @' Z. v6 `6 I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 [. Z+ y1 c: x" q1 b
  19. 7 e; L: `2 C! Z% C2 G3 G% {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( x2 P* w6 D- m
  21. {
    7 Y' N* H2 F7 a, |+ ~
  22.         int fd, ret;
    / f/ `8 v5 \8 I4 a
  23.         e2prom_s_cmd arg;* i3 s0 |3 x7 `) C, ^4 d3 q% g
  24.         unsigned char buf[0x18];
    0 O+ f; y7 Y% R
  25. 5 ^: j1 [, S' D# m+ B4 N$ z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ c0 c! W/ Y5 Q" T' y
  27.         if (fd  < 0) {
    - S6 m0 a  W  B( L$ q" I. o
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / P3 o2 i, a' X3 Z% X  N
  29.                 return -1;; a  |( i8 l9 V- k" {/ p  x# \
  30.         }
    + i$ ^3 L) \6 d" q/ U: I
  31.         arg.sub_addr_count      = 2;
    ! d8 k/ Y5 ?+ X; |* B4 l
  32.         arg.data_count          = 0x18;* h$ {) E1 Z. g2 K6 L+ f0 ?/ i% M$ Z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , @1 T6 E" ?7 W5 `
  34.         arg.e2prom_cmd_data     = buf;
    % \# h& d5 O1 p' R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 i* d3 I) G4 [' Y- l
  36.         if (ret != 0) {. q6 C  q. P4 p5 p( G3 r* t
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 b' M8 ?, ~% f) ~, ]  h- o* V; v' M- Q
  38.                 return -1;1 d+ t4 D( t& \/ K4 P9 t# Y
  39.         }' g* q# e& }: O: p2 u6 v. O8 `
  40.         memcpy(mac, buf, 6);
    1 N: H8 E' ^3 Z
  41.         memcpy(stbid, &buf[6], 18);
    ! H5 ^( ^7 I' E0 Y
  42.         stbid[18] = '\0';5 w! k& L, g; J
  43. ; m' R5 q* {8 k2 L# Y' |" p/ p8 C- }! j9 d
  44.         return 0;* \# Q: A( J" a6 P) s
  45. }
    / ?. d+ r3 n7 }* |- [, m( M
  46. , ^3 p# ~& N& T1 `2 q: q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 c9 S9 X4 e- w9 v0 i
  48. {6 @$ [8 @, f; x- R, q
  49.         int fd, ret;- p( b7 p7 r; K2 F1 y9 I
  50.         e2prom_s_cmd arg;
    ; O' ?6 s2 N: e2 s3 y
  51.         unsigned char buf[0x18];
    7 I. D0 _4 y8 g+ {; {

  52. 5 n, e; G) d) v# x- @8 z, k
  53.         memcpy(buf, mac, 6);
    ( W- Z" R2 C% x5 A  J0 K
  54.         memcpy(&buf[6], stbid, 18);
    * L+ A- f2 h; `: N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! h6 S1 U  e4 ~; L) j
  56.         if (fd  < 0) {( D% k7 z$ J* {, |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 ^, d4 z8 V+ ~; `( V% a
  58.                 return -1;  R6 i/ c: m( B
  59.         }
    ( X. m  L: f+ I) G4 ?2 b$ {
  60.         arg.sub_addr_count      = 2;+ c7 A5 L; q( t. s  f
  61.         arg.data_count          = 0x18;
    , l/ U" X$ G4 F9 `4 d4 [" a! v+ T* Y8 o
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 Z1 X* ?8 J; {' q
  63.         arg.e2prom_cmd_data     = buf;
    ! m8 h' N& p7 d% v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % Q4 @: L/ r* E# ~# K. t9 ?
  65.         if (ret != 0) {& ]( @1 @0 O! T: V- X8 _! D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ F6 ~5 M% z7 P7 W
  67.                 return -1;
    - q! D1 T! P! n6 n& D3 E, T
  68.         }
    0 K. r3 E0 [( Y- M4 Y2 a( ?5 \" G

  69. & R( |, ~  h) r7 E% O7 J2 j! w
  70.         return 0;
    # {+ }9 b- \3 }; B
  71. }
    ) i, ]( F2 W, W# F
  72. & U  T: W0 i+ U
  73. int main()) p' b/ r+ s( K1 @+ H( ~7 Y9 m
  74. {0 @# y5 B' J' }' K
  75.         char c;
    * Q. b/ t  c7 y) N+ I
  76.         int i, macs[6];
    5 z" C' P5 N9 o2 m; H3 o# S' b9 y
  77.         unsigned char mac[6];# L6 \6 a0 y- U- v1 Q: {5 ~9 p% }
  78.         unsigned char stbid[256];
    7 D+ U2 e4 e5 f) u8 P0 X# b3 h
  79. 3 k9 y* U! a& D1 h: [
  80.         if (readparam(mac, stbid) < 0)
    # u* l% n9 Z: b. O- u7 D5 r
  81.                 return 1;" ~6 n9 t* v9 y" o# o7 T8 T# d
  82. 8 E3 u( a9 ?! q9 c6 w7 R
  83.         printf("Current parameters: \n");
    5 m$ P' O+ h2 G2 v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* Q* p- Y# u7 d4 }: C
  85.         printf("  STBID: %s\n", stbid);
    # Z9 z( |% F0 w2 T' ~6 z% x  g
  86.        
    ! \# m# |! o0 C: |8 E' _" O$ f$ Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* S- u$ n9 o! I/ i2 U( W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; k( B  O2 J0 ?3 k% W' Q( Q" f6 [
  89.                 printf("Input MAC error\n");
    - e: P8 q0 h2 Q+ D
  90.                 return 1;
    $ T. `0 G( V! e0 S. x8 `% O+ @
  91.         }+ K2 s: P8 C" g" i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ D. B* p4 |# k3 g8 I6 B
  93.         printf("\nPlease input new STBID: ");
    1 N4 y. Q% ~& m" w% P
  94.         scanf("%s", stbid);
    $ Q8 h& f* C/ x8 ?/ O, l. K4 M
  95.         if (strlen(stbid) != 18) {
    & p" Q8 z$ Y* J
  96.                 printf("Invalid stbid\n");- T9 _7 H) q$ `+ j
  97.                 return 1;1 J- z, K. H0 X( Y
  98.         }
    * u# O+ a0 P, x* i* C  G, o
  99.         printf("\nNew parameters: \n");# N' E' _, b& \9 t
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; }0 S& W- G5 i7 M  A
  101.         printf("  STBID: %s\n", stbid);
      p% ]/ C# |3 p  {, |, l

  102. . O2 u8 W" E; I9 A% [  d
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 `2 ?8 B9 Y" M9 d; m5 B9 ]
  104.         for (;;) {+ e; x! z: ~& C
  105.                 c = getchar();( O& \0 z1 H% _4 q5 j  H
  106.                 if (c == 'y' || c == 'Y')
    & M4 I/ O- M  x( M( `% k+ m$ N! W
  107.                         break;
    2 o& L0 Z1 F. R: ^; f
  108.                 if (c == 'n' || c == 'N') {
    & P$ c: q4 p$ F  }7 N2 G' W
  109.                         printf("\nAborted.\n");
    2 a0 K' n3 ^# @
  110.                         return 1;
    6 w  W" w  q& l) }' L+ U
  111.                 }) C6 h- b7 t% U2 F) P. @" @. V
  112.         }9 n! Q4 h. N7 X5 T
  113.         if (writeparam(mac, stbid) == 0) ! p6 f2 P( d- R% @6 r
  114.                 printf("Parameters changed.\n");
    ! f. d* y: G4 l5 p

  115. ; d; R  p+ {* M& f- D3 K' H) }/ K2 m
  116.         return 0;
    ' i' ]+ E  {4 Z7 N! X" m( [
  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
- a0 {; |6 k, L+ c" {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& I, h; j! u. X0 V5 R5 B
你用的编译命令行格式是什么?. A( D# j& K7 P6 n2 u! Y% A% F& f
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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