查看: 16441|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; B* A2 I2 M5 k. s9 z! ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
      g% Q/ n+ {$ t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ [  f; b# X, l' d1 husage: himr <address> <value>. sample: himr 0x80040000 0x0
( S/ [4 v; D) v! y% y2 l7 F4 r# U' O8 H0 m3 ?5 h, r, P2 t
' H( r: K( E+ e# b, r0 z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ J. G' J, h8 w$ W/ k+ H% w# o5 o0 v! f' k$ k( ~7 ?7 Y
补充内容 (2012-3-8 09:42):5 Q; J4 F# d! y$ ^
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
) X2 d8 d' w! w5 z这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
6 I5 i! \! ^, L, T
, Q0 Q( j9 q+ @* Dhimr <address> <value>. sample: himr 0x80040000 0x0! F9 o# Q* F( G- [

0 W0 E% M$ W; D, u; P. T, i3 `例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
! f9 B" Z5 b, f4 v" Y1 M* C# Hhimr 0x80040000 0x00
- ~, x' m- y' K$ J+ b; Fhimr 0x80040001 0x119 l1 {4 r1 o) j" j: O  k
himr 0x80040002 0x22& Y. J  E3 y8 X& E) ~
himr 0x80040003 0x33
5 k4 y5 }! M+ e7 `himr 0x80040004 0x44. r  S  d  `3 g3 I* {
himr 0x80040005 0x55, y5 B- I7 H8 b8 H! I* i
) B8 z: J. |5 Q/ F6 L; v
SN也是类似。! w, z( z! E. w: h) U! ?
  e, \, n/ q* F1 i% G" u
现在主要是,谁告诉我们MAC和SN的地址?
3 b' ]+ S6 H& q$ D$ I" k6 q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ X* @: ~4 J9 @一直想找到运程修改MAC和SN的办法,苦于无解啊

  k5 p, c9 i2 I6 l源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + c# m5 t9 V; c9 c  @

8 ^. q2 E9 y+ G修改的代码早有了。到今天不会编译。* P+ L  N3 c. b$ F$ E
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ Q" `2 a7 Z9 w
  2. #include <malloc.h>* P9 X9 x( [1 b- ~1 B
  3. #include <sys/types.h>
    , q1 ?8 Y( \- g9 J. p: K
  4. #include <sys/stat.h>
      r5 m6 a& {, w5 X
  5. #include <sys/ioctl.h>
    . f9 x1 n" M/ J7 N- G
  6. #include <stdio.h>$ _0 r- l6 z" C, L7 _+ I! A
  7. #include <string.h>4 r- S$ }9 P+ U( j$ n+ b

  8. ( O( e6 b6 ?" l( l7 \6 D0 G  E
  9. typedef struct {
    # F* s- ^7 ]: R" t+ m, j, P. x
  10.         unsigned int        e2prom_cmd_sub_addr;
    & U: G, c3 r( U5 p0 p  ^/ z
  11.         unsigned int        sub_addr_count;; m- A4 Q0 A  Y. d! ]+ [
  12.         unsigned char*        e2prom_cmd_data;
    5 d+ e' r) v. }- ^1 C3 H3 |' d
  13.         unsigned int        data_count;
    8 }/ @, T( D( _/ o  b; q
  14. } e2prom_s_cmd;8 k5 O8 i: V3 ~: M& t4 ^

  15. * D$ ], \2 N  r' W. G
  16. #define E2PROM_CMD_READ 1
    3 ?0 b% \# z3 f- U( e5 T8 N
  17. #define E2PROM_CMD_WRITE 2& O' L% o: _$ P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 ^0 l+ h0 q; J: X  K

  19. - |0 Z8 O( v7 H+ Y3 C. N# t
  20. static int readparam(unsigned char *mac, unsigned char *stbid)4 r; v2 `  a( K5 H
  21. {
    ( q4 Y* S/ R' ]+ K) W- h) l
  22.         int fd, ret;2 J  `3 a0 Z$ }- ^$ G4 V
  23.         e2prom_s_cmd arg;+ c( L. v" S( N" }7 n
  24.         unsigned char buf[0x18];9 |  x* j3 M0 L- Z% `+ s  w4 R
  25. , X/ `( N: w* E7 X- N% f+ h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; C$ o" w) n6 V* \
  27.         if (fd  < 0) {
    3 G4 I- t! G, C9 }: o. w
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - f$ Y) Q% Y9 D' [# c9 c8 _
  29.                 return -1;
    1 ]& o! m) L# W+ d: b; V. j/ v
  30.         }
    9 x& d# R* r( b/ A
  31.         arg.sub_addr_count      = 2;
    2 p! ]! g8 m; C+ O3 F/ ?
  32.         arg.data_count          = 0x18;; ]/ a5 L  r  X
  33.         arg.e2prom_cmd_sub_addr = 0x290;
      _' T9 t) ~/ r
  34.         arg.e2prom_cmd_data     = buf;/ j2 G" _0 t; y6 M" X6 |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' X4 G/ x) [! F; h
  36.         if (ret != 0) {2 w! a; N0 j1 X- v- V
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ O( s, t4 u+ m- e
  38.                 return -1;% p% j0 }9 ]( l4 L1 P) o+ Z
  39.         }! G6 }! Y5 a; w4 O: ]
  40.         memcpy(mac, buf, 6);$ j3 F& X* b' X- x# J
  41.         memcpy(stbid, &buf[6], 18);& Y( t6 x* ^' h0 }' T4 d8 x
  42.         stbid[18] = '\0';
    , h) N1 T6 y& ~+ }1 S- [

  43. 1 x* S- [$ N3 O5 \4 f% R
  44.         return 0;
    7 y" u8 G0 H% {2 ]1 _" r/ u0 V
  45. }- c( b5 T8 S9 N
  46. 2 z3 d* P4 [' d9 k) Z8 e9 ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 ?: j; i: x8 X3 }( Y
  48. {
    3 ^, [3 V4 d/ ?% M, e9 ]
  49.         int fd, ret;
    ( k5 k1 p" I! _) A9 G4 A
  50.         e2prom_s_cmd arg;
    1 p2 l+ p! g2 F$ w$ Q% ]7 J
  51.         unsigned char buf[0x18];
    ) \" E% n* ]) ^- f4 }6 O# y. d- a/ X

  52. % H& y0 L7 w# H3 ]# V$ g1 s" O
  53.         memcpy(buf, mac, 6);" Q5 u, e5 _: u! g$ y1 s5 U
  54.         memcpy(&buf[6], stbid, 18);- r3 P- Y3 q% ^# Z5 j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 V( {" l) g, l3 v4 ]. u
  56.         if (fd  < 0) {
    7 p3 l3 H9 \4 I
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . O6 e5 S( f# c: w: z: r8 n
  58.                 return -1;( o+ r; S4 `8 K7 k
  59.         }$ G4 L1 a. V) M+ L
  60.         arg.sub_addr_count      = 2;! P/ g4 R; N5 v  r( L$ D
  61.         arg.data_count          = 0x18;
    ) M+ R' ~5 z9 H8 `; d
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 F9 l8 I" e# u/ I: ^/ v- C" u
  63.         arg.e2prom_cmd_data     = buf;! R  m: t* k- [+ N9 k+ t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 E) e2 D5 B! D4 R) J! |
  65.         if (ret != 0) {6 R( G$ z3 ^2 a( ]* ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . [1 z" B4 Y+ Z7 s! o
  67.                 return -1;
    7 I2 n. e8 H2 d/ O8 X
  68.         }" v$ {. X% R; B$ `; a( F7 n- c
  69. 6 T7 P4 d( _# g( F/ p1 l( l
  70.         return 0;& l' g6 L/ t- F+ D# B- _, U8 Z+ u
  71. }1 |! x$ J$ B& G3 I  a

  72. - i+ `1 k$ @/ `# z( h4 j  n
  73. int main()9 O2 x, Y& o/ `, l
  74. {& s3 w, m+ k, v$ D, c. T0 E" m
  75.         char c;% E& x# K, i4 n2 z" |* \4 g
  76.         int i, macs[6];
    ) \0 P- g) K% r( x: ], _, Z+ H
  77.         unsigned char mac[6];
    0 e" C& d: X( s9 {6 V
  78.         unsigned char stbid[256];& B& C" g) M% x% v6 m/ X

  79. % ^4 X/ O: e1 [
  80.         if (readparam(mac, stbid) < 0)
    # F. `) i6 O! h- r$ I
  81.                 return 1;
    ; t0 D. m7 D& ]
  82. & t% u' G' t" `% f# k
  83.         printf("Current parameters: \n");! w: F& t" Z5 o5 ~& S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ f+ O$ @: @) |" D
  85.         printf("  STBID: %s\n", stbid);
    6 a/ U+ |) L  |' S: ?  O  b" k5 q
  86.        
    # g: `2 {2 F; ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 Y; f  |. n( j: K& x( v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 z- T6 F6 I- B: t& T0 ^4 p+ o
  89.                 printf("Input MAC error\n");4 @$ A7 F$ I9 n2 E6 n
  90.                 return 1;. C4 [( _9 W) I& Y
  91.         }, }- y( ?: F& G& B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' d9 K: b4 `2 }0 m0 ]4 G* _
  93.         printf("\nPlease input new STBID: ");
    " M2 M" Y4 _) b; [1 e
  94.         scanf("%s", stbid);4 V& P8 ~# N2 l' o2 P; n. N
  95.         if (strlen(stbid) != 18) {8 g2 v+ _, t' G8 E
  96.                 printf("Invalid stbid\n");
    1 @; ]6 Q* i4 m0 R/ H& Y  A3 i
  97.                 return 1;; `" V; ~/ B  W
  98.         }4 n- ]. T5 ^+ `" c& a0 g/ O
  99.         printf("\nNew parameters: \n");
    ( ]+ v& ]  q  [: B- s) I* z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 V7 q, c3 o! k( ]4 ~0 f# f+ J
  101.         printf("  STBID: %s\n", stbid);
    , i# ?8 n& e1 y! B. h& X

  102. - I3 r5 M, W! o. d$ M5 |* r+ |
  103.         printf("\nDo you want to change paramemters? (y/N) ");% [9 j) S" W3 z& X3 M% a
  104.         for (;;) {0 R+ V  J- s# J
  105.                 c = getchar();
    ) G' N* j7 P. Q( {  k) r
  106.                 if (c == 'y' || c == 'Y')* t: r( i) F' }+ p# D
  107.                         break;, I) W3 h5 l! P$ O5 q! E: j6 Z4 ^
  108.                 if (c == 'n' || c == 'N') {+ ]$ f& E( {) S8 H
  109.                         printf("\nAborted.\n");# Y" \- F( N; I! i5 v
  110.                         return 1;
    : `- A$ o1 t. E9 M5 @; H! \+ [" f
  111.                 }* P" `* \0 ]' k" z* ]0 z+ X/ `% r
  112.         }
    4 a' r8 w0 w' S
  113.         if (writeparam(mac, stbid) == 0)
    ! a. O6 h$ R# Q, {
  114.                 printf("Parameters changed.\n");
    : r; q- J8 c5 F" X' O! @
  115. 2 {! X* T. L5 }; b  _( U
  116.         return 0;
    6 Y- \1 `' c1 t) 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
' u" o4 Y- O; F( b4 V在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' E; N! N- z: K8 C1 c
你用的编译命令行格式是什么?) [/ U1 [6 ?$ K' q6 ]7 x
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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