查看: 16709|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : Z) T0 v$ o/ C0 ?% ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' K& X; O. c" e$ U4 `# }. x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! D, b3 ~: r9 d6 }usage: himr <address> <value>. sample: himr 0x80040000 0x06 J$ ^9 D- q' U- C5 r& @
7 G2 s( l. y, m+ E% r' O

, R$ T% ~/ z5 S1 r  _% R不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 t( Z7 V+ C! }& H+ t
0 }6 m+ W1 s# N. v0 O$ E
补充内容 (2012-3-8 09:42):
4 V6 k0 a* O) ]! @http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. U& ]) d# t: M/ |" t! l这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。% S5 H0 X2 M; ?6 V8 z) w

4 t! t$ n. K" v. V$ w& j0 S1 ?himr <address> <value>. sample: himr 0x80040000 0x0
) }3 i9 v: Z) }8 h: z8 o7 J2 t) o5 f3 h
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 z) a; I% U5 r' P, X$ U
himr 0x80040000 0x00
0 R' ?0 ^  v, I& s( `$ O& X7 Jhimr 0x80040001 0x11- l4 O" X: B0 R+ R
himr 0x80040002 0x225 v. ^* @" }( U
himr 0x80040003 0x33
8 d8 e. J" {$ j7 y& fhimr 0x80040004 0x44
8 |) m6 Z& [: y8 i' r' P( hhimr 0x80040005 0x55  i, ]3 D6 S- `# _- Q

/ ^1 Y5 l* s) U$ ESN也是类似。! u8 c2 B6 I% J$ T
% m. K: ^$ k8 q5 y+ j
现在主要是,谁告诉我们MAC和SN的地址?
* f9 f5 H5 F) p' d
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 8 s9 X: B- P; `3 l
一直想找到运程修改MAC和SN的办法,苦于无解啊
& G$ h5 H4 d; \# m0 ?
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* O5 E$ \9 A) J  X: @4 D; v% H1 k$ [% j( |" t1 Y
修改的代码早有了。到今天不会编译。
- R9 |( Q& j6 A: H& h需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 r6 w0 S  g& G
  2. #include <malloc.h>6 r  \" }6 @3 T# V8 D
  3. #include <sys/types.h>
    ) G9 j5 p: }1 I: b/ l1 H
  4. #include <sys/stat.h>& r: r1 O. [% b1 P, j/ u
  5. #include <sys/ioctl.h>7 Z1 y) E' R8 T8 S1 p" D! ~
  6. #include <stdio.h>
    ' P) A) ^& t) g1 s7 q$ ?
  7. #include <string.h>
    0 e7 p5 y' Y: Q# i# x+ y- j& S* k

  8. . c, X: X  ^+ [5 D7 a# Z4 Z% X
  9. typedef struct {
    " E2 c# W' k4 Y9 Y$ ]
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) o9 w1 e" w3 W4 i( O( v
  11.         unsigned int        sub_addr_count;
    0 z& U. H+ Z4 ^6 M' z2 p- n1 A
  12.         unsigned char*        e2prom_cmd_data;
    & R( C: I' J" A/ t8 X
  13.         unsigned int        data_count;
    6 |2 |! B) R2 V
  14. } e2prom_s_cmd;
    9 C* S, w3 D/ S8 Q6 B7 @

  15. 5 d! u8 V7 m  r4 k. C! T
  16. #define E2PROM_CMD_READ 1
    + n4 n1 s) r% ?2 d1 Z; |5 l
  17. #define E2PROM_CMD_WRITE 2
    # l. f) @5 z. t) K8 y6 U6 m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 f' u! ?" K/ u3 r- c' v( l3 r' n

  19. ! [$ m- [5 H( m: A: k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ n3 F" X5 w/ m+ B
  21. {4 X0 @% Q1 C8 ?  r+ T
  22.         int fd, ret;
    ' n( V2 \) `, C1 G  O
  23.         e2prom_s_cmd arg;& s( z* E; s! ^/ b9 ^4 s9 `& [9 n
  24.         unsigned char buf[0x18];
    5 ^5 M6 z! I- ]& a8 b9 Z8 F

  25. : H/ g& G( a3 _5 q# M2 g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' S: E" Y/ l% v2 d) i
  27.         if (fd  < 0) {
    ! P# z! r( }3 U5 e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. }3 f- {' h+ @9 _) v
  29.                 return -1;
    " Q& ]' `, V+ b: |% [/ x
  30.         }' |2 M6 W' o; }7 z  F
  31.         arg.sub_addr_count      = 2;- K4 H0 W0 `/ M9 n( v9 o- n
  32.         arg.data_count          = 0x18;' d& D6 n" H$ H) U  G/ A
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : j7 V' B2 H$ ^
  34.         arg.e2prom_cmd_data     = buf;
    - N3 T& r7 h5 M" o" v) l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ W" D8 L/ f3 p5 \* q/ R  D8 `
  36.         if (ret != 0) {
    $ r9 f' s# X" e
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; A! V/ P5 Q3 }+ C$ u4 g0 \
  38.                 return -1;8 z7 m$ S, j/ Q; ~. z& i8 T
  39.         }
    ! L7 r# N0 Q0 p+ S
  40.         memcpy(mac, buf, 6);+ X0 H5 G1 F, P& p& M& d
  41.         memcpy(stbid, &buf[6], 18);
    6 r. k3 r2 W8 B/ B- ^$ w6 G& l5 ^
  42.         stbid[18] = '\0';) [( F. Q- Z5 `# K, I- [
  43. ( S* F9 s" `9 s, I# ]) g
  44.         return 0;" |" }& ?+ x  x0 O5 m1 x2 _
  45. }
    ' r$ N- n6 Y5 G* J
  46. + N7 Q# m' O* l3 Y/ c
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ; b* R/ g" u; q5 [2 b
  48. {3 O) ~# z. O: e9 l8 l4 b+ |) u
  49.         int fd, ret;( f% {# l% }2 c, r
  50.         e2prom_s_cmd arg;
    . P# G4 n( c  d3 p' L8 A
  51.         unsigned char buf[0x18];
    / `1 M9 P' c4 c7 `/ f7 e
  52. - b# t3 Z; M' R8 @: q1 Q
  53.         memcpy(buf, mac, 6);/ x( H" X6 L' u+ ]. u* V# D
  54.         memcpy(&buf[6], stbid, 18);" V  t- c+ C# S" a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 L2 U+ C* S  F3 k
  56.         if (fd  < 0) {
    0 D. O5 Z( G: o  x/ U' s2 D: W1 D/ Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / F9 J8 Q. Z) X. M
  58.                 return -1;" x* L) h2 V6 _5 D/ J
  59.         }
    2 M) |  j' g% D
  60.         arg.sub_addr_count      = 2;
    9 c9 U$ a& c+ y8 j; C
  61.         arg.data_count          = 0x18;
    * P8 f3 T' w: w) m4 ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;  y/ n+ n$ \" f# c4 V, ~# }) c5 u
  63.         arg.e2prom_cmd_data     = buf;# U3 C+ M, X$ S! n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 ^' n) y3 K+ x& E. R
  65.         if (ret != 0) {2 ?$ ~  k9 F3 L5 U7 ^" C1 h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 O' z9 ~3 I1 i4 a
  67.                 return -1;) C5 `# \$ U5 _- W) Q. Y
  68.         }
    ! e+ d2 O0 }9 Y. b

  69. ' G+ M* u4 U) i
  70.         return 0;
    # M6 L+ ^1 s+ g" ?+ D. _
  71. }) P! t# w) ?1 Q, |3 d/ M% |! X3 Z
  72. 2 Z, \: q# x# Y" ?; V
  73. int main()* f8 ~5 F" d- x* M) |* \* B
  74. {! t1 b1 q) Y/ J1 ]$ j
  75.         char c;
    " h; S9 Q, s; D7 }' M7 X7 s( P
  76.         int i, macs[6];8 ~$ Y  M; j! ?9 l, l! A) q
  77.         unsigned char mac[6];
    * E- N) ?9 u! R, G
  78.         unsigned char stbid[256];
    8 [& S0 n8 C$ Z' C9 G! r
  79. . m. v5 ~% H, y7 X" L& ^
  80.         if (readparam(mac, stbid) < 0)
    2 h( j5 L8 \$ [/ _1 b; ]8 Z
  81.                 return 1;. |% \' z2 @  T9 B6 V, T' Q. r$ Q
  82. 7 X5 [2 A$ z+ ]/ a
  83.         printf("Current parameters: \n");; R/ P, s& o7 i- w8 ~: k) ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( a3 n  S( I9 e1 @9 d! N$ q: x
  85.         printf("  STBID: %s\n", stbid);
    4 n6 z5 I- c  S( r" r8 W
  86.        
    / |* R7 {$ o+ D7 l( ]
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) b: z. `9 ^0 \8 U# O! F
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. W9 ]7 T) W" _1 ?4 \9 a/ C$ H0 T
  89.                 printf("Input MAC error\n");
    / E$ Y" a1 ]; x
  90.                 return 1;
    - \' k9 v3 R" ?" ~# V5 _
  91.         }* z) z! v7 ?% l" y: a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- t1 O9 V& @8 Y5 v! Z1 ]
  93.         printf("\nPlease input new STBID: ");+ e1 {' Y" z/ n1 L, V
  94.         scanf("%s", stbid);
    2 z/ G6 v1 y6 O5 d8 ~; I8 g
  95.         if (strlen(stbid) != 18) {; V9 b! g! C: H+ S2 u& N; ]$ I6 a8 T
  96.                 printf("Invalid stbid\n");: K: z; e. F  F" N& d. y2 h! S
  97.                 return 1;: L3 X0 q, |- i
  98.         }
    # w& k" A( H6 R! j3 c
  99.         printf("\nNew parameters: \n");; p/ x9 T% c- ], d' R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 a, G$ ~8 U: _' R2 r  A
  101.         printf("  STBID: %s\n", stbid);
    2 T1 P- @% k- ^; K- V$ d1 ]

  102. , H9 e: b. g' h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + |, \/ @0 R1 U" }3 d* T6 l/ j
  104.         for (;;) {- ~( e' t' q  ]! t
  105.                 c = getchar();
    8 i; g8 K5 I6 [- \, D1 T
  106.                 if (c == 'y' || c == 'Y')  u7 g) y8 d3 ]; P. e
  107.                         break;
    ( \7 ^! L% _7 s; k
  108.                 if (c == 'n' || c == 'N') {6 X2 P# Y( k2 E2 e- {7 A9 C0 r
  109.                         printf("\nAborted.\n");
    5 o  E3 E+ n" r" A3 W
  110.                         return 1;
    * k/ |7 @; j, T3 ?, q  q" {& E
  111.                 }
    % }" N7 l+ t3 M' L$ a+ N
  112.         }# @3 }6 o% P- u7 v+ q! s8 ]
  113.         if (writeparam(mac, stbid) == 0)
    9 J3 U; E5 Y& y+ P7 n
  114.                 printf("Parameters changed.\n");2 A9 {) M6 d5 M, a% @

  115. * ?6 X. s( o( p; i* v, t
  116.         return 0;
    , m5 y  }8 Y8 P! ?( C
  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
+ `9 P) f6 [* C3 K$ R+ V在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: W7 T- Q! g! `( J你用的编译命令行格式是什么?
! O+ C2 a3 n# 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客服返回顶部