查看: 16624|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ S6 L( ~7 J) c( g+ K# U$ C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - u0 X# i+ i5 D( |% c
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 p% e; ^# D4 j, N* }1 }1 u' M; r
usage: himr <address> <value>. sample: himr 0x80040000 0x0# d7 M2 \3 U3 w5 d

2 u4 \! P% C( G3 E
4 u+ j6 u3 E, \1 l! ~; Z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# |- U7 x$ m0 a+ x, L% M$ z  k
  Q5 a$ I* j) c) r( i: G$ v补充内容 (2012-3-8 09:42):
8 L: E' a* @9 ^  U7 u( [) Ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 f: P8 Y2 J0 P- Z( d9 Z4 u# r
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ _6 o9 d0 Z1 Q9 @+ I$ U' {7 l. G, V# E$ m% Q% l
himr <address> <value>. sample: himr 0x80040000 0x0/ y8 O' a( D9 {( Y. r

- p6 u8 ^1 s$ u! G6 p8 M) l; t例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. l- P# d6 B* |: k( q) p# K
himr 0x80040000 0x00
9 J, Y3 n9 W) V) }- Mhimr 0x80040001 0x11
8 `; a- n( D# |4 @  P' }himr 0x80040002 0x22  y$ K! C0 y8 R) o( E7 c. }
himr 0x80040003 0x33
1 H/ K$ E. A2 n' V. n/ J$ ]himr 0x80040004 0x44
2 B; {, }% z  Uhimr 0x80040005 0x55
' J4 p9 h; T5 w- H1 U. `9 [' Z3 y5 m5 j
SN也是类似。8 \2 h& I( o. I* P$ s$ I0 c

8 Q9 R; z- b$ F, M1 q4 V现在主要是,谁告诉我们MAC和SN的地址?
! O; ?' J/ n0 L* P
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 q' C' w# V& v7 o# G' T% c一直想找到运程修改MAC和SN的办法,苦于无解啊

. O( L3 e7 z$ x  b; t源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 r! p1 `0 q) E, y$ o& r! x
6 W" Y0 a+ }7 Q+ H( v5 T
修改的代码早有了。到今天不会编译。# t7 A# V8 q, L' {- c6 h8 f, ]
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  d( h4 v4 ~% b/ z, H. H. o2 s; O
  2. #include <malloc.h>* @! i" M+ v% v7 x8 s: r. k
  3. #include <sys/types.h>
    # z1 G5 g  a* q1 E" K
  4. #include <sys/stat.h>
    9 k+ r! x- P) @9 W' t8 h
  5. #include <sys/ioctl.h>
    2 A2 V2 e9 N4 {7 d- `6 Z
  6. #include <stdio.h>( M4 D; Y( \$ q) R2 O: l/ P) U
  7. #include <string.h>9 Y2 e' }# Z- C# E- Y6 B8 D
  8. , T. r0 Z& I# }" J1 c& B% T+ k
  9. typedef struct {: X7 X" s* F% ~- M( a2 s- W3 W
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 w/ l/ b5 K2 l% B$ j& {: x$ Z
  11.         unsigned int        sub_addr_count;* k2 c# w2 J5 `8 z% t6 }- ~
  12.         unsigned char*        e2prom_cmd_data;1 a3 {. f9 ]2 E1 |, L, L
  13.         unsigned int        data_count;
    1 P# Y4 f0 L) f) }4 s0 f9 p
  14. } e2prom_s_cmd;9 F; J6 W% R( Z/ l1 o" H9 N1 k

  15.   e5 y( i. b; J2 I1 P: M
  16. #define E2PROM_CMD_READ 1
    ; F+ N5 u7 I  j
  17. #define E2PROM_CMD_WRITE 2* b% u4 |; b+ c) s( Y1 G" i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # {& [2 B7 C: Q% O6 I" x: D
  19. ; |  j# y4 `. s( a6 e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + L& S* v* `1 r
  21. {1 I5 o# _* L$ O. Q- m  n
  22.         int fd, ret;
    * \+ [- |" Z" D" P
  23.         e2prom_s_cmd arg;3 k4 |3 {8 E3 Q0 F4 S
  24.         unsigned char buf[0x18];- A0 L$ U# N) P7 p
  25. 3 j$ |# A) U$ W; @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: H  n% l! O* k5 h0 F
  27.         if (fd  < 0) {
      z- r! d' _# x$ ^% j% t0 B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & D( [+ ~% q. d" y  |
  29.                 return -1;9 N/ x" |# X( y3 z+ y
  30.         }. _% R3 z* i0 v6 v+ @$ s2 q
  31.         arg.sub_addr_count      = 2;
    . A; n, R$ Z" n1 h6 N+ w) ^
  32.         arg.data_count          = 0x18;) q5 p+ B- m* n. ?8 f
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' a2 j' ?: U$ e1 n3 ^2 E1 x
  34.         arg.e2prom_cmd_data     = buf;5 B/ U- ^7 J! }$ N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);8 j6 ?' e) |0 Q6 C4 |; `
  36.         if (ret != 0) {
    : g; D  C) C7 v) i4 q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; A$ f& ?0 E  A. H& Q
  38.                 return -1;
    # U: ^" q6 d7 \
  39.         }
    ( M# e6 {, p5 T
  40.         memcpy(mac, buf, 6);
    ! b8 s9 r8 w3 c6 @  [1 N
  41.         memcpy(stbid, &buf[6], 18);# @% u8 K) Q; o. Q; i- p
  42.         stbid[18] = '\0';: h1 ?$ L) Y, |+ W. z; q* C

  43. 0 b; O: \. M% T, ]  r2 Z! {
  44.         return 0;2 k. K% b! `$ W8 c
  45. }
    $ a% Y# M" \% o- |2 n1 S9 I9 j
  46. ) b% ^6 `5 z8 J2 n
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 A/ F" L% ]7 H0 ^% X* o6 {
  48. {2 {& C2 |3 h) V5 N
  49.         int fd, ret;
    - L  g2 _1 }! F3 `
  50.         e2prom_s_cmd arg;0 |# N+ h2 ?5 \, S: v
  51.         unsigned char buf[0x18];" n  _( L+ ^/ F* T9 c" i$ s
  52. . `1 j: q2 n! x  h' J! i( i0 v
  53.         memcpy(buf, mac, 6);
    ( J3 R# h5 v8 T5 ?
  54.         memcpy(&buf[6], stbid, 18);5 B# j/ {/ |3 F% O' n2 }" H1 {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 O- I$ T5 _( c, _$ `
  56.         if (fd  < 0) {; ^! a  f+ Z. q  [* [: n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + R+ E$ L" f  {
  58.                 return -1;4 H7 C' i! f. _. l
  59.         }
    , w9 z, ^' l1 Y% R
  60.         arg.sub_addr_count      = 2;6 f  ^3 `# z4 t0 f8 t- E
  61.         arg.data_count          = 0x18;% s0 V% }+ y* f+ h6 ?1 w
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 {5 ^$ }. t4 e, I
  63.         arg.e2prom_cmd_data     = buf;' C: d7 S/ I, R5 h5 A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 `. ~3 k5 \4 I) S; D. m
  65.         if (ret != 0) {
    5 p  `; d' C) Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 |& p  x- Y( i9 Z$ ^
  67.                 return -1;" u( g9 i- P& @/ K* \5 ]# W
  68.         }* G( U/ P- J. I/ a9 Y
  69. % ?. p  K* M  \
  70.         return 0;
    , d5 k! F8 X' E" Q
  71. }
      _& |) j2 S$ e: ~" |- j
  72. * Q: _: p: w4 \# c, k9 @
  73. int main()
    4 t) s0 h' h* t; \
  74. {
    8 d% o  |* v9 O8 }! E
  75.         char c;+ T6 {- s* l/ H- f
  76.         int i, macs[6];! [3 ]( A" E* n
  77.         unsigned char mac[6];, L" d, b, ^( Q" \8 I1 K
  78.         unsigned char stbid[256];
    ; q+ W' a9 v5 I8 J9 ~; q
  79. : H/ H" ^) ]% _0 W2 d8 s
  80.         if (readparam(mac, stbid) < 0); m' y1 M* J0 a" t% x
  81.                 return 1;
    - k" A0 K* f& V- Y5 V1 E1 T1 T
  82. 1 Q2 p) h0 t) G& B( O
  83.         printf("Current parameters: \n");$ C+ o" B$ P# _# ~" u7 }* g8 ~( i5 y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ q3 U1 K, b7 A7 D* K
  85.         printf("  STBID: %s\n", stbid);
    9 F0 O9 C+ A) }; q, }
  86.        
    3 y$ x. J: I! J& m9 m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      _8 ?6 k" S, T' q# G! b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 N9 E+ j' |& E2 ~6 M
  89.                 printf("Input MAC error\n");8 W/ g: g8 S0 Z, }$ g2 Z1 w
  90.                 return 1;* D& L* O* o3 t: `! i+ f/ d
  91.         }
    / C  P1 A, ^; y( N8 a6 J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( q4 N1 a4 ]2 {1 x6 @( d1 I
  93.         printf("\nPlease input new STBID: ");9 D4 _3 I6 W/ G" Y" q
  94.         scanf("%s", stbid);
    ' H3 }2 m% m1 u
  95.         if (strlen(stbid) != 18) {
    7 n5 ?# V* I# H$ p/ p: n
  96.                 printf("Invalid stbid\n");
    2 _3 a: M: ]: a0 \4 p
  97.                 return 1;
    * K/ s2 h+ l' U2 Q9 J
  98.         }6 a5 X  h$ N$ R
  99.         printf("\nNew parameters: \n");
    % ~6 O) \) [3 B1 q* U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # ~. X$ Y; ?% x. w
  101.         printf("  STBID: %s\n", stbid);2 X( ^7 |/ r$ ?* n, V0 T) A# b
  102.   ?6 o9 F6 \* O# b* t: c* N
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # @! W0 J7 w. D6 R1 s2 n
  104.         for (;;) {2 O3 T, W& J5 B- R1 Q, z
  105.                 c = getchar();# f0 R# T  C! T& u- S0 A! F
  106.                 if (c == 'y' || c == 'Y')
    8 U( \2 j; N7 [2 U. H! n# ]" f
  107.                         break;
    - Q. S$ n3 }% l
  108.                 if (c == 'n' || c == 'N') {
    . Y4 u6 S# @5 W* m0 L% q
  109.                         printf("\nAborted.\n");
    ) T$ u( F3 b$ Y- ~, \9 n: Q
  110.                         return 1;2 r: L3 w' _+ `6 Z8 \3 h) I: a
  111.                 }! c  L8 O; \3 k0 y+ \( n- r
  112.         }
    7 a" P4 V# H8 G$ T1 w* Y6 }
  113.         if (writeparam(mac, stbid) == 0) & L; r8 n6 ?: e& K
  114.                 printf("Parameters changed.\n");
    , J( k+ ]# J+ n" ^& Q8 X
  115. $ b0 t  S5 y+ Z5 ]* @$ R5 r- [! n
  116.         return 0;
    9 \& I( d) O( B) l6 K/ j0 z3 k
  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 & x, M2 g/ I  e7 N4 [
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: E9 g  i6 i" [( G8 |你用的编译命令行格式是什么?
; \  A" Q0 e9 R& y' G: T; W& `
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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