查看: 16561|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 Q8 \. x. \2 r+ V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & U) d& a% s& T3 T2 G% o$ {
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
: v2 f& k! s2 Jusage: himr <address> <value>. sample: himr 0x80040000 0x05 y9 Q- ^& {: S1 m
7 t+ c6 o$ A, X- O& G

( ?, J6 d/ \1 ^0 q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 W7 K3 u" S# q7 ?' E: r* D  B5 H5 C  C( q/ p- {, \3 t
补充内容 (2012-3-8 09:42):( I& e7 B- d6 s) y) |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 _4 z# |$ D, B9 c
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& P) u3 K. D: }/ v2 K
- O0 e; Y6 _% _& X
himr <address> <value>. sample: himr 0x80040000 0x0
& w' `! L2 A; W% f7 m, G& H4 ^! }! @' t
, Y& T. b) T9 s1 u$ Z( u8 O% A1 O例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- x" m% h8 o, `$ D5 k
himr 0x80040000 0x00
9 }2 Q# k* e' rhimr 0x80040001 0x119 H( G2 B) J7 s3 \5 W0 ]& X# y
himr 0x80040002 0x227 U2 A% y& O6 T  f1 |) [
himr 0x80040003 0x336 Q5 Z9 l- E$ F
himr 0x80040004 0x44# g' r* Q# [- i0 j
himr 0x80040005 0x55
  W& ^4 z2 r5 B+ S$ S- ?
! j: I$ v5 k$ A# [1 Y1 j! cSN也是类似。
' T' R) N; b7 ^% ^! P/ S; M, m; G- @: M' d) k8 L
现在主要是,谁告诉我们MAC和SN的地址?3 E7 K2 j( s+ y5 I8 e9 V) {7 v
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ `8 n+ c# }" z  Q* e一直想找到运程修改MAC和SN的办法,苦于无解啊
9 R4 O- P; S$ n
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ I" V; X6 J" q& d/ I: O3 Z' L# b4 J1 h  T( Y/ J
修改的代码早有了。到今天不会编译。
2 v8 O  B/ @/ S需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( V. v% S" E) H& h& Q/ ?
  2. #include <malloc.h>, s- q% C: U2 r  X7 a& G8 d) a1 N: Y7 a
  3. #include <sys/types.h>$ F/ h5 v# P5 i$ x- a* N0 G# J
  4. #include <sys/stat.h>" T7 U( b+ q& ]* K7 I( @% L
  5. #include <sys/ioctl.h>
    0 g& c3 I5 x! M3 ]3 h
  6. #include <stdio.h>
    % a. G8 q7 y( t; d; g* ~$ _' r% `
  7. #include <string.h>6 G. M& W, q! h
  8. 5 p5 [- R0 D% `9 E+ l2 S* M: C8 z/ N! s
  9. typedef struct {. O/ \7 S% o+ [# M" t0 {2 N; a
  10.         unsigned int        e2prom_cmd_sub_addr;6 P1 w4 [) c" M
  11.         unsigned int        sub_addr_count;
    8 I3 F  |+ Z. s& [. s
  12.         unsigned char*        e2prom_cmd_data;
    4 K' f2 x7 t# z8 D( F8 S" J
  13.         unsigned int        data_count;
    , n8 F# u' r+ F' n
  14. } e2prom_s_cmd;4 d$ X: J2 u, L1 Q) @) d
  15. , a# u3 Q! Y3 y. [7 X6 r3 A
  16. #define E2PROM_CMD_READ 1
    : M% X& }# t+ b) [! w8 s
  17. #define E2PROM_CMD_WRITE 2
    9 I( I1 W! m, T7 @, A. p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ ^  O3 z0 V6 W6 v6 }

  19. # p; k0 N. _- \' K' L7 F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 {: ]9 r" S$ F9 F0 N2 r3 W' G
  21. {
    + P) r1 t2 w' A6 S7 K0 P( B
  22.         int fd, ret;  ~! @. H% u! }+ k6 P9 N; h% q
  23.         e2prom_s_cmd arg;" H: H: B+ L& `" N
  24.         unsigned char buf[0x18];
    : d4 V) e( z. |

  25. 6 {; K0 d! |, ^. T! a' k
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + _. }- h; q4 v2 V" i# ]
  27.         if (fd  < 0) {
    ; s/ r9 C) f% e$ R$ Y1 c, E7 J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; f# N; j5 H& F1 y: N
  29.                 return -1;
    % a1 @( u5 f0 R
  30.         }: Q( U# {3 l( U; H- R' W
  31.         arg.sub_addr_count      = 2;
    * y# ?4 [) D2 x
  32.         arg.data_count          = 0x18;) r: o* X) e& M
  33.         arg.e2prom_cmd_sub_addr = 0x290;- G) C* K" z1 [' F2 _6 L, J
  34.         arg.e2prom_cmd_data     = buf;
    : }3 O/ G2 A( h2 ~2 C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 K( W' H  b. s% _; n; Z/ p+ I- J
  36.         if (ret != 0) {
    1 z0 D: [4 c) @9 o* V
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 O  g* I3 _9 s; Y+ b- ~: w" q  v
  38.                 return -1;
    ) [. z- o5 x, K1 X' j1 K5 M
  39.         }7 u1 [3 z, j" R3 W
  40.         memcpy(mac, buf, 6);; S) h# s2 Z' b- F. V
  41.         memcpy(stbid, &buf[6], 18);
    3 C6 \' f# k- W$ W# m
  42.         stbid[18] = '\0';7 X; A4 h2 |# f

  43. ) e. ~2 W6 i4 v2 j
  44.         return 0;. J. t7 M4 F% O3 k/ E0 H
  45. }
    8 E( _7 O1 y. K$ P. K8 I
  46. 8 q! \% \. h- ~( G3 U, G) }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)) H/ ^2 ?- J  ^9 E: }
  48. {
    2 H3 W0 s' e5 V4 }. X
  49.         int fd, ret;0 a+ G2 F' a  j1 `! o
  50.         e2prom_s_cmd arg;, V' t' A! \5 Z  b! P
  51.         unsigned char buf[0x18];+ e8 t( {$ @0 n7 B$ f8 ?' U

  52. " w9 Y; E3 J' ~/ b4 o8 L' L
  53.         memcpy(buf, mac, 6);5 o: @9 w/ u) E/ R6 e' p
  54.         memcpy(&buf[6], stbid, 18);
    ( E9 |6 W/ r- h' o, f! ?, W( e3 ?
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 A$ M: i, P/ N
  56.         if (fd  < 0) {
    $ ~3 T1 u) `) s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  a" ~- s- x6 @$ ?6 j+ k6 `3 @, A7 Y
  58.                 return -1;
    8 n: y% g' a/ d2 d7 L" k  @1 Z- e
  59.         }+ W4 v+ q* Z7 ^& a
  60.         arg.sub_addr_count      = 2;
    ) @* f  g" ~1 e
  61.         arg.data_count          = 0x18;+ q" B3 y8 I0 ]& r2 ?3 x
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 u% V" N7 o; K. ?
  63.         arg.e2prom_cmd_data     = buf;
    9 T6 p! t5 Y& G/ s, g' x$ P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ' @- B! ]) r- O" F
  65.         if (ret != 0) {+ H  _/ G9 s" U4 a$ P
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 K+ l* C! d4 W2 l
  67.                 return -1;
    7 J$ N+ b0 J' g+ G1 \
  68.         }
    8 o" k% ]( h3 R4 U/ f- H
  69. ; [  \5 I" M, u
  70.         return 0;6 [& ]' E! t  `4 t
  71. }
    * ^1 H4 u1 K: _6 ]) ?6 d$ K
  72. . m0 J* c6 \7 o4 D  G% K: ~% J, x# N
  73. int main()3 L$ B" m# x. @; k' }
  74. {
    9 E4 Y) R8 u* \6 A0 `6 |  A% P
  75.         char c;
    6 J  }' J: b  v7 m6 t( K
  76.         int i, macs[6];
    9 t, [: a' J" ]) U: w
  77.         unsigned char mac[6];7 {* |" C% r4 |4 Y7 }7 r: q/ N
  78.         unsigned char stbid[256];
    - y) U* ~5 U6 ^0 X
  79. 2 _! |2 r* Z( R7 v/ Z5 e, P
  80.         if (readparam(mac, stbid) < 0)
    ( Z! B) q% O& i6 t
  81.                 return 1;
    2 P" B- \2 X  I
  82. 4 \1 u4 Y( u4 ?5 {
  83.         printf("Current parameters: \n");5 B) w5 G$ x7 Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) q' X6 A( {0 K
  85.         printf("  STBID: %s\n", stbid);
    + z* ^- {9 D' R, y; S# W8 u
  86.         3 Q0 `8 v4 Q2 M: u, E' ^0 c! W' l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* b# J# z' F/ n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 J3 Q8 O% ]3 D- A% i- p
  89.                 printf("Input MAC error\n");, ?6 r# N2 F5 b/ J. Z) [7 L: P* V6 W
  90.                 return 1;8 N7 D1 y: m, Z
  91.         }
    ( ~4 @! W# @" p: A0 f. _% d& I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" a2 Q( I3 V+ P7 y* B+ F
  93.         printf("\nPlease input new STBID: ");
    & I; T& a  L1 O/ N* i/ ]' m, S0 ~  N
  94.         scanf("%s", stbid);' z4 ^! b+ m, e$ R& w* e- E
  95.         if (strlen(stbid) != 18) {
    5 V9 O7 }- r9 {+ D* K
  96.                 printf("Invalid stbid\n");
      W; z- Q! k: S8 U3 p! U8 x
  97.                 return 1;
    # K: ^2 D$ u- j6 c. I0 o5 Z
  98.         }2 d$ {: q+ J3 Y0 H; x
  99.         printf("\nNew parameters: \n");8 R, k* s6 Y% V5 p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 n! r( h( G( k- x: W! w  Q
  101.         printf("  STBID: %s\n", stbid);
    , L( m% N' ^. \' m1 d$ u( y
  102. 0 M! [6 \- }) |$ P7 y- h" E' D- a
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    7 }( H+ q& a5 A# U
  104.         for (;;) {
      _+ g! A) b$ [, S/ e2 g' w
  105.                 c = getchar();
    + ~( o  Z7 e6 x& ?1 E
  106.                 if (c == 'y' || c == 'Y')5 G2 g( v# ^6 v
  107.                         break;( d& ?! U% d. o( U: e- F( [
  108.                 if (c == 'n' || c == 'N') {$ ?/ S$ W6 J" T- [0 ]1 P, u
  109.                         printf("\nAborted.\n");
    ; J' i  \6 z4 n1 d- J
  110.                         return 1;
    . h9 F( f% P6 A* y) [0 a7 |
  111.                 }
    ) Q/ \- n( j+ P5 Q/ N0 K! R2 I: c
  112.         }
    $ g: l, [6 R) Y* T+ H$ J* g1 M! p
  113.         if (writeparam(mac, stbid) == 0) 4 \0 d2 t8 x: A( F1 ^4 o
  114.                 printf("Parameters changed.\n");% k: W6 z# B$ ]/ a

  115. 4 y" L5 A* W% _/ P
  116.         return 0;
    - B# J6 T% \) t4 l1 Y4 ?9 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 . y% Z( z2 L6 D$ y
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ p6 g' B8 Q8 ~9 n你用的编译命令行格式是什么?' t& R2 J- C) Q# s2 O
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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