查看: 15967|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- A/ j( ~6 e' d; C# C  Y6 ?9 e, Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 p9 b5 u7 z# G$ l
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& j7 q3 b, |6 c& W; susage: himr <address> <value>. sample: himr 0x80040000 0x0
4 u0 S$ Y* p9 f. G, z5 }3 n; u4 x7 n; a- U: Z. f  @+ f6 G

: T4 p* m- m: X* O2 Y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 i  I9 w) j- B3 |7 l% A
4 T) h2 w* H7 F3 r1 L& v  e
补充内容 (2012-3-8 09:42):
, N6 `( L" X& \2 o4 g& j2 `http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数; ^1 h% b1 z' ~7 X* z
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。( X& v  ]1 z( A: P, P

! y" F. J3 p4 o! s- G3 _7 U7 {himr <address> <value>. sample: himr 0x80040000 0x00 o/ q3 Z* n) F' o3 R
0 Q# j$ h8 _' [$ E0 x4 [
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 o5 ]3 @3 y; D5 p( ?himr 0x80040000 0x00
$ ~2 P6 \/ O; `( V" f7 ehimr 0x80040001 0x11
4 ?; K8 C  z" _( K4 |, ?5 Ohimr 0x80040002 0x22
  n; s7 z" y9 Ahimr 0x80040003 0x33
% K( b) G# y8 |9 Jhimr 0x80040004 0x44
& o+ Q# M$ l) q' l& ]himr 0x80040005 0x55  q% ~6 t: S5 ]+ o# {5 {; H9 p! _
4 v7 r( D" f0 S7 e9 H: M7 \5 c# s
SN也是类似。2 ]) A) m& q! f& _: T" ~3 ]
2 a* c# G5 k6 ]9 J. W) U, r& [
现在主要是,谁告诉我们MAC和SN的地址?3 r- D4 L7 I* J5 D  d* T
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 8 o. D$ s8 A/ K& @9 W; x
一直想找到运程修改MAC和SN的办法,苦于无解啊

& ~5 L' n  U. ?) j$ I3 S源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' }0 A9 o# k& c2 ?- h
# b8 J: s- s/ s修改的代码早有了。到今天不会编译。
5 I. W* r# Z6 x需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 S5 C6 `6 [" Y7 E
  2. #include <malloc.h>
    9 J. d' R1 g2 p5 O8 s6 k- J1 m
  3. #include <sys/types.h>
    $ t' I$ W  o8 m. ?! ^4 @! S
  4. #include <sys/stat.h>+ h! b0 [( n- A3 ^! o+ `# m  y; ?
  5. #include <sys/ioctl.h>) l4 T/ {" g; \2 Y- I4 w, y
  6. #include <stdio.h>9 y2 r9 Q) V. l3 _4 n8 ^) a
  7. #include <string.h># |6 a5 u4 ~  |. d1 R1 u( H$ ]

  8. 3 X. O/ L. T7 t7 `
  9. typedef struct {' Z, K* _$ w- h8 I* ?0 A- h
  10.         unsigned int        e2prom_cmd_sub_addr;/ F6 S% t$ U8 g! q
  11.         unsigned int        sub_addr_count;0 b% L) ]# ?9 D
  12.         unsigned char*        e2prom_cmd_data;8 K7 x  M: b& x
  13.         unsigned int        data_count;
    & Z4 Q. `, i8 p8 u' {9 S
  14. } e2prom_s_cmd;6 G& J) |& I, s
  15. $ ^! d' c- S6 ]! l% G% K. A
  16. #define E2PROM_CMD_READ 1( Q! ^% a2 W& q1 Z9 {/ N# x! ]
  17. #define E2PROM_CMD_WRITE 2
    4 u" o0 a% y# Z4 v$ [, t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". W% e, o. q6 o6 \
  19. 2 b: R$ a0 \6 v  x! F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 i- M4 x7 ^9 U3 s
  21. {
    ' |( S9 W1 }3 o, S9 A
  22.         int fd, ret;
    + `" ^: ~3 q, n8 C* J6 R
  23.         e2prom_s_cmd arg;
    ' q. U8 J+ s9 M* t+ m+ r) M
  24.         unsigned char buf[0x18];* n% l- S/ Y3 s
  25. 3 a' ^: e% s! @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- T( j# m" I. i( R  r9 J5 {
  27.         if (fd  < 0) {
    5 m- Z! t, J# u3 ?" u
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 y( U8 o; R7 Z" Z5 j6 E
  29.                 return -1;
    . |- n7 d0 W. S( O! h7 s
  30.         }
    9 b1 o' k# [1 S% i
  31.         arg.sub_addr_count      = 2;7 j9 b0 U! L& I% q4 g
  32.         arg.data_count          = 0x18;8 Q. e8 o+ v2 a
  33.         arg.e2prom_cmd_sub_addr = 0x290;) \+ c/ b4 e9 Y! n5 i- y
  34.         arg.e2prom_cmd_data     = buf;
    2 D! M* _) p( ?6 q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ L3 G: e/ }1 h* b  H$ o
  36.         if (ret != 0) {
    ! Y6 I1 L9 k( s% s6 U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);6 K7 F+ r9 E) N
  38.                 return -1;
    : c5 o6 Z* t$ d* V! g( N
  39.         }$ Y" h( D3 O3 l- s" v5 H
  40.         memcpy(mac, buf, 6);
    1 t0 {5 \* A" \2 G! j. E
  41.         memcpy(stbid, &buf[6], 18);3 U- g1 E- i; H8 M2 ]4 R3 U$ m) D
  42.         stbid[18] = '\0';' x6 _: M" n; S% M# E8 Z$ A
  43. & J/ W$ @# b8 z& S9 P
  44.         return 0;
    % ~6 ?: o" i$ \
  45. }
    9 S# i0 [. g( z. ]# g

  46. 9 S. T. S9 U3 {" ^! ~, g
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 p6 `: T- q4 A9 }
  48. {8 P# g: v) `* v% W: n
  49.         int fd, ret;+ [/ F6 X; `+ H; m: a) p, i5 t0 p
  50.         e2prom_s_cmd arg;( E! o2 s# Q# z. c5 k
  51.         unsigned char buf[0x18];* F& m% D3 P$ h' r3 {! \

  52. / w, K, q. ~( f* r' I
  53.         memcpy(buf, mac, 6);! T; W* }+ c3 n9 U' ~% h
  54.         memcpy(&buf[6], stbid, 18);3 O: H7 N) f7 Q$ ?- ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; M6 D7 S5 x: p& G& }0 [% i' z& o
  56.         if (fd  < 0) {
    + ?9 g  [* ]( T) T
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , P7 v4 K( G: Y' D' T% J
  58.                 return -1;
    & N& t/ B& S4 G) g
  59.         }5 t* n6 R' {7 X* H0 T& q
  60.         arg.sub_addr_count      = 2;
    1 e- e9 J' g/ B
  61.         arg.data_count          = 0x18;
    6 o7 i7 {9 ]5 H. a* ]
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 Q( U2 C$ ~- B0 w
  63.         arg.e2prom_cmd_data     = buf;
    ' o2 Q- t& [; G  K% \, L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 \7 U% V/ Q7 e5 O# I" y/ L8 k* U7 ?
  65.         if (ret != 0) {$ J& M6 X( G( n, R, m% m8 O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 S. Y: G1 d: f" x2 W: u
  67.                 return -1;
    ) I' {3 P5 W; [! z, a6 b
  68.         }
    8 W8 m: f" b' x+ l1 H# Q: f

  69. 2 [+ {  d( z9 j0 z& N& D' \) n
  70.         return 0;
    . n  K( s, S5 |: U; h- j" [; G# H
  71. }+ n# k3 j5 s. s3 V1 W# ~4 h
  72. - v  N4 Q9 t7 v3 h
  73. int main()* F3 T3 Q& M( J) m$ l% f- ^% P# K
  74. {3 f& u' Y; R3 y" J2 F2 e' ^* N
  75.         char c;
      F8 p( r# V3 s4 n7 t
  76.         int i, macs[6];- {3 E% G, ~: J  U* x
  77.         unsigned char mac[6];5 y: A3 o. a( Y3 {
  78.         unsigned char stbid[256];8 ~* n- o3 n/ K1 J$ F* I: \

  79. 3 n7 ]' O+ N  a7 l: @
  80.         if (readparam(mac, stbid) < 0)
    9 k1 c% D5 z) [0 b5 n/ c; [
  81.                 return 1;
    # x+ Z: s) C, t4 X/ u

  82. % W. l0 Y  D! e1 m* F2 M* V
  83.         printf("Current parameters: \n");
    5 N1 c- w5 E* u' k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 m2 Q( `3 x) p. V
  85.         printf("  STBID: %s\n", stbid);
    7 P: O1 M. a4 ?4 H( B* \4 L
  86.         / f& \% q0 d, j$ S& N6 m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 a* H$ f0 F  e1 L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ \6 h6 D. i1 Z% X* N2 n9 q0 Y
  89.                 printf("Input MAC error\n");$ H$ M# `1 `$ n5 ~' x& R9 d/ ?4 i
  90.                 return 1;
    * V0 S: p  J4 r, L5 Y
  91.         }! h6 z: _% m- A! [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 \# y+ `7 n/ `9 R
  93.         printf("\nPlease input new STBID: ");* p4 Z; ]# l# Q9 m, Y& D% k/ e
  94.         scanf("%s", stbid);
    + N! ^. r5 H9 E$ a6 ?
  95.         if (strlen(stbid) != 18) {
    1 j7 a3 b/ K  M6 d0 S
  96.                 printf("Invalid stbid\n");" V2 p6 m& X6 n9 h1 n% Y
  97.                 return 1;; v+ P6 U2 h) g1 ]( Z
  98.         }+ a( q# G2 p+ k  x6 I9 ?
  99.         printf("\nNew parameters: \n");1 X8 }0 `8 b: N# d1 e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. O* A8 Q7 e8 N& S2 g/ Q
  101.         printf("  STBID: %s\n", stbid);
      n2 n' _# s% |
  102. , d$ o8 R. \& K, u" |) e$ Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ! p5 c$ v0 E& z# |3 p
  104.         for (;;) {/ `, y; K" s% e7 r/ [8 E
  105.                 c = getchar();
    $ p0 R3 i0 v* z7 X1 V! g. m" w) O+ k
  106.                 if (c == 'y' || c == 'Y')# b( X, }4 S4 {9 Q+ V
  107.                         break;5 t/ I4 I* I! {% ]  s
  108.                 if (c == 'n' || c == 'N') {! E. ?: d  \* Q9 s& G0 u! M) p3 y
  109.                         printf("\nAborted.\n");
    8 W) H& B2 Y1 Q6 M# \
  110.                         return 1;6 h1 w$ U! I- U
  111.                 }
    3 E* x' o- j& i
  112.         }0 N" P- u# q/ O6 f9 R9 y
  113.         if (writeparam(mac, stbid) == 0) * }* U( }2 r8 r$ Q5 ?
  114.                 printf("Parameters changed.\n");
    , N3 b: h0 y5 d3 O; N9 Z
  115. 1 _; i' l& J0 r9 V6 F* B) ~) y
  116.         return 0;% D: o* ]; a' J
  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 # S1 e+ o( Q8 i$ u  o
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# s8 h7 z* x1 e  C# c/ r+ o% F, _你用的编译命令行格式是什么?
) r+ o7 n# ]3 t/ K% r' k" R" K
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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