查看: 16635|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. t0 k! U$ }+ d* t1 ^/ ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 S* s6 u5 Q& g4 j7 q( Z# R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; a7 {8 B8 _2 b! p4 R5 I+ K
usage: himr <address> <value>. sample: himr 0x80040000 0x0* F) N  k0 v% q; }% J% P. s
- f& `5 i3 V$ ~. t  K; W

+ A! w8 z& Q' Y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 N6 }, A0 X) @" H: S8 \  F
/ e+ j$ M+ K1 _补充内容 (2012-3-8 09:42):5 W. f$ L4 c. E9 E
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 s% i: B+ O" {这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- e+ l1 N2 ]% I8 E9 x4 ~" ]

8 ?9 ]' i! R- S# H; Ihimr <address> <value>. sample: himr 0x80040000 0x0, |7 x+ A4 a8 f/ W$ i
2 T( L5 G) f' w2 f3 c
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# U2 \2 i  ~/ r) |5 ~7 A: {
himr 0x80040000 0x00
1 |1 J) w$ S7 Ehimr 0x80040001 0x11( y# g' t" z! N' ]4 q. N
himr 0x80040002 0x225 Y' I( z4 I8 Y: C# x* ], {9 q* ]% Z
himr 0x80040003 0x33
6 Y) c% d/ ^% Whimr 0x80040004 0x443 G( Q. _0 }  a& f# j" g7 H* f8 f
himr 0x80040005 0x557 l2 c9 b3 s0 d7 p' N  ?" B/ V/ i) X
4 d: F! G8 x% _# u4 r3 I! w
SN也是类似。' o. w% z# _) \1 ^8 _; {

# ]' Y1 X4 _6 k! I5 F现在主要是,谁告诉我们MAC和SN的地址?+ c/ P3 |5 E! Y& P9 ^% K* [% R
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
* g0 y. ~+ _) P+ {: g/ M& K一直想找到运程修改MAC和SN的办法,苦于无解啊
' b5 x. |4 @( ^! w4 I$ S* A
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 W3 W# X6 `0 ^# V/ c1 C6 ?; s# k) l" U$ z& w4 N
修改的代码早有了。到今天不会编译。
' |. D2 R9 u" O/ T需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; u2 M0 e# n% z0 N
  2. #include <malloc.h>
    * N' u/ h  |) j5 N) m! @/ X
  3. #include <sys/types.h>
    7 P% i5 P7 h0 x8 P' }6 u
  4. #include <sys/stat.h>( s  e; c# z. b. l* R' W# g
  5. #include <sys/ioctl.h>; v# g% ^; S. o
  6. #include <stdio.h>% O! \- L. g& g) {
  7. #include <string.h>
    % o$ p8 @& F# q- ~$ \+ D, A8 C
  8. # m% W0 a$ j  e
  9. typedef struct {
    8 Z  Y$ [- D6 l$ Y- u# w% e5 k& b
  10.         unsigned int        e2prom_cmd_sub_addr;. V) s! |- Y) Q! Y
  11.         unsigned int        sub_addr_count;) H6 s3 n/ A8 m' `1 J8 L
  12.         unsigned char*        e2prom_cmd_data;
    ' h- e- m8 s2 k/ r' @" ~
  13.         unsigned int        data_count;! ]0 }, {. ?3 L) q% R
  14. } e2prom_s_cmd;
    * U0 @2 H/ T- K) F
  15. 6 j4 D) z$ v1 W5 E4 D  B
  16. #define E2PROM_CMD_READ 16 I' c. V0 O& K
  17. #define E2PROM_CMD_WRITE 2
    3 P/ h$ J& y8 h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 c2 ?* O/ u. z, e- Q  u' L) K
  19. ) l/ D4 j. d, f1 f2 X2 Q4 q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' C5 f/ P2 c! \/ P9 W& A
  21. {9 ]: i7 a8 }% O' u6 y# e* [. V
  22.         int fd, ret;9 e2 `4 e, e5 m. A% {# A2 A0 Q4 P8 a
  23.         e2prom_s_cmd arg;7 Z: H+ T' K1 k
  24.         unsigned char buf[0x18];
    ; i; ^) Y. l4 V) g; \/ V* A

  25. 8 e* }7 |. Y( x7 ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 d2 a! \0 b6 _  `( E, ?
  27.         if (fd  < 0) {/ h& d* k  [% c' g2 w+ _* w1 A
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 Y) V# G' L3 D$ R; Y
  29.                 return -1;
    ! a; r9 d* f# ^1 V0 v3 n
  30.         }+ G! t! j9 W; _% B. T/ X3 [5 \
  31.         arg.sub_addr_count      = 2;! X, u% {1 ?/ h5 @- K2 z2 ^. p
  32.         arg.data_count          = 0x18;: _8 K/ O) ^, a* S$ j2 M9 {
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % _& e- S) m7 K/ U3 v
  34.         arg.e2prom_cmd_data     = buf;
    + U8 ~% P1 [" |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " Y7 p$ H/ b4 G% [% }( a
  36.         if (ret != 0) {- u4 x! l6 o$ ]/ s' B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);6 q6 m$ D" d( k+ F4 d6 K+ |7 q
  38.                 return -1;, X2 i9 x% N4 k8 u, o) Y5 j
  39.         }
    ; ~; ^/ E* B+ @5 L; u* v5 J
  40.         memcpy(mac, buf, 6);
    0 s/ k- w4 `7 f
  41.         memcpy(stbid, &buf[6], 18);) f9 l( k7 m2 F, |3 \% s
  42.         stbid[18] = '\0';9 y0 h" s: |: T( U) P4 L+ `" m- S

  43. * F) g8 G, m2 P5 U4 J" D
  44.         return 0;$ o- Y8 C: ?2 g8 t- W/ `
  45. }9 |, e7 [# ]( W5 d; n
  46. & H5 x0 [% u9 w3 x$ R2 F$ E/ a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" V( q; t9 e. _% J6 Q
  48. {4 _" C( L0 G; F# [+ W3 }; X
  49.         int fd, ret;4 Y( s. ]: U4 V
  50.         e2prom_s_cmd arg;- [% M$ B3 v, n+ B$ H$ i) E
  51.         unsigned char buf[0x18];
    , e: g! W2 |2 d

  52. ) {+ y- y5 x' X5 W! t5 [
  53.         memcpy(buf, mac, 6);* Z+ ?, @6 g( P/ T2 v! \
  54.         memcpy(&buf[6], stbid, 18);( N8 u$ x3 b6 W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! ]! n& e1 c" j
  56.         if (fd  < 0) {- X" Z; L8 E) l0 i8 `9 P6 F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 e! g+ Q& ]4 L* c0 n# Y/ U5 e
  58.                 return -1;
    9 M% Y& `5 f. H8 y- n
  59.         }
    5 C8 k, d: M7 b4 r2 v
  60.         arg.sub_addr_count      = 2;4 L  T4 _8 u: P! ]
  61.         arg.data_count          = 0x18;
    5 E- k( ]! l+ t3 B3 m! b9 {% D
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 C$ N" S, ]6 `
  63.         arg.e2prom_cmd_data     = buf;8 T3 O( f2 q$ t* u+ _
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % ?2 L- L7 t' j+ f4 _1 u, A( Q
  65.         if (ret != 0) {
    1 h7 D  Z! ~) `% y. x8 B: C
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( `' U1 t$ ^+ w: {
  67.                 return -1;
    $ {5 D, v3 x$ L0 w
  68.         }5 [$ w, _2 _; m  c- d

  69. 1 l6 N, G9 l; E0 b9 c- H7 q
  70.         return 0;' a! t( n* z% E" _9 B. x; R& k3 k
  71. }5 T+ d2 @4 |3 e! H
  72. 1 m7 h: ]0 p/ x" l/ Y' ?8 p9 }
  73. int main()' n2 u) I  c7 H, s# s& I
  74. {" T! |9 ^5 S( _) A
  75.         char c;4 R/ v6 M' A. k; J- u- M
  76.         int i, macs[6];
    - A9 h# ?# n) G
  77.         unsigned char mac[6];
    ! O; a! r" C3 [* t2 q2 ~. @& a' [
  78.         unsigned char stbid[256];- X: g5 q- i. P$ D7 U5 I

  79. $ U9 I( z' A6 o1 ~0 R: N
  80.         if (readparam(mac, stbid) < 0)
    # H" f2 v. Y0 u/ c, l1 N* p, V/ @
  81.                 return 1;
    ( ?4 U$ f% {$ D' {

  82. % g5 W6 ]- @2 }% n
  83.         printf("Current parameters: \n");
    % u, K' U# I! o7 K: N
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 A2 y3 U2 x8 G& \  d3 L
  85.         printf("  STBID: %s\n", stbid);
    ) g, N+ A- Y' ~4 M5 c$ b. c; x
  86.        
    + R& A, a" `( [6 i; t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 h8 f  Q% Z/ s2 h. G
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 T* Y# _$ E. B/ g, O, |0 |$ M
  89.                 printf("Input MAC error\n");
    2 r. ^+ g# c2 x, u
  90.                 return 1;
    , a7 V: C6 f% s. F. N
  91.         }6 U. E, q5 k* Y8 r* `
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 u2 J5 d  o: C0 G3 J
  93.         printf("\nPlease input new STBID: ");
    # X! p5 Y- ?) ~& \5 N
  94.         scanf("%s", stbid);
    # @3 {7 ]" t( F5 A
  95.         if (strlen(stbid) != 18) {
    ( Y& T8 J: v, ~# r, {, O
  96.                 printf("Invalid stbid\n");
    5 `! G/ K: k& o) G
  97.                 return 1;
    % Z9 r% f8 E5 w# E+ o( t' Z) y
  98.         }
    & v1 ], x: |9 w- n6 W3 n: t- e- q- _
  99.         printf("\nNew parameters: \n");) d" y8 Z" g: u6 k, o+ `8 \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. g, K( O4 a; K2 j
  101.         printf("  STBID: %s\n", stbid);
    * s  J! Y( b( ~' F5 T- E: }
  102. 6 A5 K& y4 l; G: ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");5 T/ @, N* V$ d6 J& C) t
  104.         for (;;) {, L7 g! t9 x2 O$ J
  105.                 c = getchar();. r) _9 ?4 q7 j- p7 p
  106.                 if (c == 'y' || c == 'Y')
    7 Q. |$ z3 F0 e
  107.                         break;
    9 \, l6 _9 S  ~) _
  108.                 if (c == 'n' || c == 'N') {
    % r% t: Y9 a+ S- c
  109.                         printf("\nAborted.\n");/ u3 t' a5 X7 v
  110.                         return 1;
    1 U2 O' N; l6 E* M* V8 X/ Q% M
  111.                 }1 b! ^- i2 G3 r! v4 J
  112.         }
    5 N1 I: y' D! I1 u$ o2 l" ]
  113.         if (writeparam(mac, stbid) == 0) ! ?+ A4 M0 S$ g8 @; C3 X
  114.                 printf("Parameters changed.\n");
    ' N- |$ ~( E" L" l

  115. ; k# x2 r% o) K# `! X5 F
  116.         return 0;
    3 X& n+ A6 i- {: E6 i& m, q1 l( V
  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
) ?8 z$ |1 _: h+ G1 C( D% w在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ B2 Z' t) Z/ z  Y你用的编译命令行格式是什么?
6 n& o+ l: @7 a8 O" M
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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