查看: 17666|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    1 i, A" e- s$ k$ d8 \8 G; s( w6 H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* l' p8 j$ S. f2 F, T: _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ b* c& T9 G: ^- q9 {usage: himr <address> <value>. sample: himr 0x80040000 0x0
, X6 t& J1 F. ~+ \
* P; w; ?5 L  f0 \5 m7 O  k9 y
5 @* D' ^3 ~% x% f不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' l/ T5 e3 [( Q1 e
0 S. h3 ^9 l% \2 H9 E' a补充内容 (2012-3-8 09:42):; _3 `0 ]" S  X! R$ o
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 [! `0 W  |+ [' ^+ j
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。/ W9 ?. A4 {$ r# w4 Q1 A

3 Y4 ]+ h* Q4 _* g* zhimr <address> <value>. sample: himr 0x80040000 0x05 j- @$ f1 ~: b" M" r

% ?8 l8 ]5 B6 G. Z2 N3 a例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 @; q7 L7 Y. c2 `, [himr 0x80040000 0x00
! V, Y8 V' A$ ]himr 0x80040001 0x11
, z6 U& q" d8 B. \' a$ ]himr 0x80040002 0x220 l( s9 v6 ]" C, `5 E, }, i
himr 0x80040003 0x33
4 ]+ Z, |7 ~. w; Q9 |1 W$ {himr 0x80040004 0x443 _% r% _- r* _
himr 0x80040005 0x55: t" i# ]$ ~4 w, I

8 x! R* j9 S& I* U4 F! USN也是类似。5 T- [! m, k0 s# E( z
- T* O+ `/ M- Y0 _- v
现在主要是,谁告诉我们MAC和SN的地址?
/ s) k, U' Y$ {; p* ]/ M
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' W$ D2 B, m. ^' _" [0 D一直想找到运程修改MAC和SN的办法,苦于无解啊

6 Y) d% B- W: H0 [5 s源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 ^6 J6 |- }9 |2 }9 g
+ e2 T$ M) M, k' I# g( p# Q
修改的代码早有了。到今天不会编译。
4 Y8 f& |2 Q* }9 [/ S, M, F/ W需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # _1 ^; h, _+ t) {1 p
  2. #include <malloc.h>, _6 U3 V+ F3 p, h4 K, q) b
  3. #include <sys/types.h>  m+ q' r8 y: `
  4. #include <sys/stat.h>
    ' D. c$ _4 E5 P2 G) W+ e& i
  5. #include <sys/ioctl.h>9 C, g3 s! i( Q/ C2 D  W
  6. #include <stdio.h>/ ?3 _7 H9 x& K. W7 l
  7. #include <string.h>
    $ E: `, H( Y/ l9 F! s% }; ~+ u+ C

  8. 6 H$ \; o; D6 x8 o. @
  9. typedef struct {
    & H1 J  m& K- w. W
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) a) H; e) C2 G
  11.         unsigned int        sub_addr_count;
    : P2 |- z1 `1 k. e; j
  12.         unsigned char*        e2prom_cmd_data;
      @$ j* n% i* y& x5 Z4 D# Y
  13.         unsigned int        data_count;. _$ `: X9 G3 z; R- Q0 D$ y3 L
  14. } e2prom_s_cmd;
    " H4 j# i& F: U+ X- V  d, t- O
  15.   k) [; C; ^% v/ j
  16. #define E2PROM_CMD_READ 13 G7 |( O: z6 |+ n1 R
  17. #define E2PROM_CMD_WRITE 22 I9 T2 U/ n! G7 [; j* m8 C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 T1 D% R( V& |1 Q
  19. 0 k8 R) x2 B8 k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)0 i. F) V( Z0 a3 p' x
  21. {1 x6 E3 B% b2 S$ K- Y
  22.         int fd, ret;0 a; R: ^1 l/ f; q
  23.         e2prom_s_cmd arg;: [, r% |% u: f( s5 h# k8 ?: ?
  24.         unsigned char buf[0x18];' J! s- a/ n' f" ~5 t+ v) u  y

  25. ; U  [! {5 b! m2 d8 w
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + P/ |5 a9 k; d& a* c6 x$ g8 _
  27.         if (fd  < 0) {
    + l! f5 v. F. q2 U! T) e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) g( P! L! E7 f
  29.                 return -1;8 P" R+ @; f# h5 ]7 N/ ?) i* D  |
  30.         }/ c# t/ h2 N) h8 j
  31.         arg.sub_addr_count      = 2;
      u; W6 `: w1 u3 y
  32.         arg.data_count          = 0x18;
    9 |" g" O' }% I
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' X  h: ]- r, V; z$ [
  34.         arg.e2prom_cmd_data     = buf;
    7 M5 ]+ k) N. u2 Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);) ^0 N' Q. ]8 |4 F" h
  36.         if (ret != 0) {
    ! b( L' t) t+ j; v+ `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) y& T! S4 N* D- k; U
  38.                 return -1;
    . p  [: @( v* `, A% X
  39.         }- Z! Y1 n4 E2 g3 I
  40.         memcpy(mac, buf, 6);
      X  \9 n9 ]5 }) L5 ]7 E3 |+ o
  41.         memcpy(stbid, &buf[6], 18);
    5 k, o; O! J4 P: M0 H' i( q" Q
  42.         stbid[18] = '\0';; X0 P7 g! s* R- r7 T/ G
  43.   _( |2 ]9 f" Y8 N7 ?# i' d
  44.         return 0;4 {' C, C& k% n
  45. }
    . R% h( q* Y! a: o
  46. ; j! C0 h" U% c; x; k9 [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)2 Q. Z# p9 w0 v
  48. {
    2 _2 ]3 V* T, C: `' E; {- U, f
  49.         int fd, ret;
    $ K3 P3 L( X4 p1 ^( l
  50.         e2prom_s_cmd arg;) N5 f6 J; d  T, l  x
  51.         unsigned char buf[0x18];$ C5 r5 r4 M, f& p+ D. F/ A

  52. 4 W- h) v, \; u8 C% z$ {( Z$ \% Z
  53.         memcpy(buf, mac, 6);
    2 x6 H9 i' l9 f6 m9 c% {& v" e
  54.         memcpy(&buf[6], stbid, 18);) W$ p, x. `3 d( x. u6 N9 f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    + _, c$ E. b1 M, K# @/ T
  56.         if (fd  < 0) {, q5 _$ c* M4 T1 d: e( Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 Q7 V2 Y2 ^8 I, q5 w, b
  58.                 return -1;+ N9 O( i- L. t; Y5 j
  59.         }
    ' f( V# H. N0 |7 ]+ b; f
  60.         arg.sub_addr_count      = 2;
    % X- E) \: T: ]( E
  61.         arg.data_count          = 0x18;
    5 P3 ~! o5 u  J' X
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 L' J. }  e! U
  63.         arg.e2prom_cmd_data     = buf;; ?# M+ o* y  g3 m# k$ C  P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: I3 y4 V: t( S7 y
  65.         if (ret != 0) {
    2 _& X0 u6 o7 f0 g. C7 V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ t3 Y/ r( s1 A1 z
  67.                 return -1;, v: e+ x# h: m0 J5 r; O& x
  68.         }9 z& B" g2 m1 c& D

  69. + _5 |: S; t% M; Y, C$ L
  70.         return 0;4 l, J: [, N! B$ h' n+ S
  71. }' F* q7 O. z: W& D* j4 y, W
  72. ) I$ w9 U0 F$ u8 l& l" K9 N  u
  73. int main()
      ^: r; T8 ?% h  p
  74. {
    : c/ I8 L5 U0 X% A
  75.         char c;
    2 m& S" n3 |7 q
  76.         int i, macs[6];
    8 }, @1 J8 Q! W. ~; {
  77.         unsigned char mac[6];
    + Q8 O! T2 _% Z6 O8 ~6 u2 M2 I* K
  78.         unsigned char stbid[256];+ r6 O# m( w$ [5 \* h5 z
  79. ( |6 g6 \0 [! O2 ], Y. R# o3 Z
  80.         if (readparam(mac, stbid) < 0)0 E; i( w- x: _0 v
  81.                 return 1;
    5 \7 m) X9 o) Q1 t

  82. 7 m5 h3 c1 [  x) R
  83.         printf("Current parameters: \n");
    , c- o3 r2 I1 ~! P
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. ]6 s1 |- O" _
  85.         printf("  STBID: %s\n", stbid);! i: _9 @& m; U
  86.         8 i. J- R; B. I; p1 @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 I: W* L$ r9 H) k6 Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 u0 d& f4 m, E1 @2 S) o, c2 K( Y
  89.                 printf("Input MAC error\n");  r+ W; A- Y0 b- @, l
  90.                 return 1;
    , x. w8 T8 d/ }  |& i( ]
  91.         }
    + f8 X# H  t3 m4 B1 B+ g
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* W3 E" @3 p5 ~: b9 _
  93.         printf("\nPlease input new STBID: ");0 z# h) F, E/ ~5 {, `! P
  94.         scanf("%s", stbid);1 l" O4 r3 j7 U9 j
  95.         if (strlen(stbid) != 18) {
    . z: z4 v2 M% M  r
  96.                 printf("Invalid stbid\n");
      [7 `6 _& o& D/ k3 l- T
  97.                 return 1;
    3 y2 C6 J- S8 m' P
  98.         }
    7 W, A% o& u' `- Z* |
  99.         printf("\nNew parameters: \n");. \/ @5 F0 |" y  M% \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : n5 U5 Q% V- e2 c" ~+ Z
  101.         printf("  STBID: %s\n", stbid);; k+ |5 |. O: E! X1 k
  102. . T* X  h% |/ @; g
  103.         printf("\nDo you want to change paramemters? (y/N) ");* w$ D6 u* Y) y' ?* V2 M: W
  104.         for (;;) {$ n2 y9 @7 s$ [
  105.                 c = getchar();( g% F. [( `& A9 Y" d) x
  106.                 if (c == 'y' || c == 'Y')5 L/ O7 _; W# ?( x: \6 n$ [
  107.                         break;
    7 i3 A1 Q, L5 t7 L  F. v1 Z
  108.                 if (c == 'n' || c == 'N') {
    + \7 f/ D& w) `- D
  109.                         printf("\nAborted.\n");
    # i8 \4 j9 V0 q; A; ^
  110.                         return 1;1 q, e, e% Q; L; o0 I; Z1 z$ ]
  111.                 }  }  |: O: {/ Z4 G1 ]
  112.         }
    . f8 B7 F+ @/ S
  113.         if (writeparam(mac, stbid) == 0) & i; I  x/ ~1 H" ^) b) T
  114.                 printf("Parameters changed.\n");: O& j+ B8 j  P7 i! Z% r
  115. : Q) M6 S3 k' m7 w3 \
  116.         return 0;
    ; S$ y/ S9 Z# P8 d
  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
- s* B- e; Y$ g; b7 S) d- C  b( q在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 k3 v" i% b4 R9 J& ?
你用的编译命令行格式是什么?+ x9 v2 G- C/ I
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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