查看: 16113|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) J& E5 W8 P! [( z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 p! O4 f7 U% R7 D+ P' a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& b' B/ E5 R6 z  ^! Iusage: himr <address> <value>. sample: himr 0x80040000 0x0
8 k& \2 a* y, V. M1 X  x
% r: F1 J6 E: q5 g! ^; r; q3 Z0 J2 \0 O7 E' W( `
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! S8 u% {' g% I7 {
+ Y3 b/ I$ c0 M补充内容 (2012-3-8 09:42):2 r) l' Z$ S/ o0 N
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数: f( V7 W& I1 ^
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
6 ]8 _+ x% T% U8 }
- m4 h) R4 p4 l0 Jhimr <address> <value>. sample: himr 0x80040000 0x0
# Z8 }- i0 |* E$ l5 \& n, m, ~- F2 o* `* x$ Q- i; z% @
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 a1 R, d% G! `
himr 0x80040000 0x00
9 r0 s. l- ]+ G9 r; g- {himr 0x80040001 0x11
& I3 ^4 ~% i2 x" G( Phimr 0x80040002 0x22
* ~5 I$ M0 F: e! a! P5 o& s/ ^himr 0x80040003 0x333 {' x0 ?  ?( ]/ r2 I, D4 q3 a! \
himr 0x80040004 0x440 |7 H4 B. r6 e/ x3 ?' z
himr 0x80040005 0x55$ r; k; s5 h* z1 J: V: X. y3 s8 j  p
6 H- D# M- R; @3 J# j- y
SN也是类似。( I( a  E7 A7 w3 s
5 I, o5 t# y5 n
现在主要是,谁告诉我们MAC和SN的地址?
# P5 \$ X( T; M  F; V8 I. E! A, U) M' K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 O7 W2 ~' Y* e, @3 \8 A0 ^一直想找到运程修改MAC和SN的办法,苦于无解啊
% |; S. R" Z) y5 G8 s( J
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / Q6 G; `& \( \) q  p' |; s5 y
: s* b+ A5 R! O$ f
修改的代码早有了。到今天不会编译。
( _# Y( N4 Z) q* l+ d" t& T9 s+ B需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ F! K; `* @/ [$ r* O, v' O0 K  c
  2. #include <malloc.h>
    8 c0 g) m* J  M& _& l" ]  @! u8 O
  3. #include <sys/types.h>
    $ M  Q# O+ i& Y1 {, v% |1 {
  4. #include <sys/stat.h>
    + |/ n/ X3 u" D9 B& P7 }* L% U
  5. #include <sys/ioctl.h>
    ; S6 l6 Z6 ^: N5 a
  6. #include <stdio.h>
    / x3 W2 J4 Q; A" K% H
  7. #include <string.h>
    1 ?# V% S+ ^! V9 D3 c8 @

  8. 6 p9 a& }/ M- B0 E
  9. typedef struct {
      H1 l( i  ?9 `& c1 B9 C% K
  10.         unsigned int        e2prom_cmd_sub_addr;' ]" Y) G6 t) r6 r) H: D  B
  11.         unsigned int        sub_addr_count;
    ) h4 |& d0 O, x$ H0 ?/ J& K( Q( Z
  12.         unsigned char*        e2prom_cmd_data;
    6 {8 O! q5 r, v; @4 J
  13.         unsigned int        data_count;
    6 s+ \: M" }8 V+ [: z6 J
  14. } e2prom_s_cmd;( ~- s  z5 m0 \" z" H4 K
  15. % `1 m$ G) s3 C) ?" \% b* d, f
  16. #define E2PROM_CMD_READ 1, K" \2 \: r/ f6 |, ^$ x. k
  17. #define E2PROM_CMD_WRITE 28 S& r4 f7 j# ]% p7 p! D
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* B# S1 u; V0 R  c4 Q6 `% J7 ]- x

  19. 3 r6 g3 x% t4 w: |3 f! Y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 O8 \$ s2 K9 [9 H6 g
  21. {" C% v4 A( P: g' i7 [
  22.         int fd, ret;9 o$ E% o3 h8 D0 Q3 _) t2 B8 v
  23.         e2prom_s_cmd arg;- d! L- |. e2 d
  24.         unsigned char buf[0x18];
    ; O. @: S+ `, M6 L9 D/ Z
  25. * D; G* x& _: V( I5 j$ S
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      A! S) l1 r' l6 D+ z: d& f4 u
  27.         if (fd  < 0) {. c+ Q! e+ j: f: f7 d$ V0 R# j
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  A. S! i" a/ t* I' M) W  T
  29.                 return -1;
    % a7 [" D, O( D, F) P
  30.         }
    ; B- e' O" o& |0 a  n! X
  31.         arg.sub_addr_count      = 2;+ j& P, A& t( ^& s
  32.         arg.data_count          = 0x18;) c4 s+ r8 y) ^1 J+ w0 `# D
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + T0 X7 o0 s( G" T; B$ M; V  c* i
  34.         arg.e2prom_cmd_data     = buf;
    , m, H, K( O; K' F6 J: G! e- i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 r0 ~# J( m8 l1 @; w
  36.         if (ret != 0) {! X/ f! |" O. q' v9 ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- L5 p) K& [9 O" I: \# M7 C5 p
  38.                 return -1;
    4 i) H. n2 B% g& R& ?2 [- K
  39.         }/ k1 p/ h& I" b4 h
  40.         memcpy(mac, buf, 6);
    0 `' e: S2 @0 @  q9 j
  41.         memcpy(stbid, &buf[6], 18);, f! t( K# T: _2 N% P
  42.         stbid[18] = '\0';
    2 b4 o6 b; B! h9 o- O% D" |
  43. + V& P( v; _! F6 X+ ~$ u7 E
  44.         return 0;
    ' m# ~* d9 r4 x0 K& T$ O" p4 n
  45. }) m' x; v* H# k( E4 Y
  46. , y+ d: w7 m; V4 y$ V" u& v" s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- B& {% c9 |5 R' J+ y0 m
  48. {
    0 I" x" o, a, s
  49.         int fd, ret;
    5 S) f( I1 J+ |) ~( \1 ?8 g1 d# J. L
  50.         e2prom_s_cmd arg;
    1 h1 {3 C& J/ F# ^2 t" ?5 l2 P; l
  51.         unsigned char buf[0x18];2 ~9 W4 ]  H1 y# N. _* l

  52. $ C9 _% c9 V: _
  53.         memcpy(buf, mac, 6);! B2 q0 M6 [# a( |7 L0 l7 i
  54.         memcpy(&buf[6], stbid, 18);# A5 M+ R0 d' q8 c" Q+ S2 \0 V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 n' T5 T6 R+ U8 a( N5 ~; R+ b" B
  56.         if (fd  < 0) {
    9 a7 s9 k+ Q$ k2 U; o1 Z6 r3 K$ d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* |9 C. G5 v  V$ A- F0 z7 a( B1 }
  58.                 return -1;
    ( u: g+ V$ {& ?+ w+ l' V/ H
  59.         }: o: _/ p& C) E# ]  [8 F  @
  60.         arg.sub_addr_count      = 2;
    # U2 V5 A& r) J8 a1 k; W7 c% C5 `" M
  61.         arg.data_count          = 0x18;$ a% F0 ^0 Z$ ?# S2 r
  62.         arg.e2prom_cmd_sub_addr = 0x290;# f1 _# K" [1 b- \5 B* Q
  63.         arg.e2prom_cmd_data     = buf;
    6 K% y- x1 _% n% _1 h. M
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 |2 L; l# x  g
  65.         if (ret != 0) {* H* z, F7 [: _  P- }8 l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 J2 h1 E+ T; E) A
  67.                 return -1;
    $ T0 }; f0 U1 s4 f+ U: ?
  68.         }
    4 d) z- y, {$ Z5 a( w  A
  69. % K# m0 n9 x% M
  70.         return 0;
    + p6 c1 y: ?$ B: j9 I% f- F
  71. }
    " _* E' [# X$ W* K2 g9 S3 y9 c

  72. 0 k6 C5 q0 R2 R3 m, O
  73. int main()# x8 G7 A8 E3 O! m( S
  74. {- ~, n$ q1 [. Q& G
  75.         char c;
    . ]# Q: k9 V  I% @- w
  76.         int i, macs[6];
    4 e4 G$ A5 e( X& y6 F
  77.         unsigned char mac[6];
    ( K/ g; p+ `. g7 ~. [% m5 h' J
  78.         unsigned char stbid[256];! c" Y8 Y8 z3 ~! q0 }- t% L
  79. 7 m6 E5 X3 h, S, R
  80.         if (readparam(mac, stbid) < 0)# i, z  P) J% U# K0 j9 N# W
  81.                 return 1;
    8 `1 @, |) H* t7 Q
  82. $ j, |: s! a: {" {
  83.         printf("Current parameters: \n");
    4 O6 K- X( v8 r6 A" C. S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 ^! n+ h- z- M; n/ L5 f: a1 o0 Q
  85.         printf("  STBID: %s\n", stbid);
    ! V9 {! U: O* [
  86.        
    5 S8 G  E' S$ f# \8 D$ @8 W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 c. v1 {$ W" W, O1 U
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : y* f, `' m0 E
  89.                 printf("Input MAC error\n");5 r1 `% b3 V% d3 @' `7 g
  90.                 return 1;
    & L: [# A) H6 E" v8 Q  m! F
  91.         }
    * M! w* S. W7 I) I: T+ w% M
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      D- ^/ |- n! d9 a+ t, [) i
  93.         printf("\nPlease input new STBID: ");' s) f- ^4 S  z% [2 Z. N
  94.         scanf("%s", stbid);  Y/ i6 X% ?6 a) r+ D0 d) A
  95.         if (strlen(stbid) != 18) {5 n) e* {7 X2 g% H5 I
  96.                 printf("Invalid stbid\n");! Y( t0 u; r  j9 e, F5 {# k3 s
  97.                 return 1;
    0 [! H0 F' R$ p5 d/ w0 a
  98.         }
    2 s2 `' J# ^5 `# _( r! h
  99.         printf("\nNew parameters: \n");. \+ I/ k9 J) k, g/ M3 X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . z4 V' t$ Y" O
  101.         printf("  STBID: %s\n", stbid);0 S# E  e: D0 Y8 h
  102. . F! Q' `8 U5 O! B5 v
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 l0 W* N% Z! O- x
  104.         for (;;) {& j& O; I3 \) E7 u, }
  105.                 c = getchar();
    5 U$ V* m! ~5 J" D3 v* d8 Z
  106.                 if (c == 'y' || c == 'Y')! o. b# M! ~& Y- f$ H
  107.                         break;, x+ W$ B9 L. h# d& X
  108.                 if (c == 'n' || c == 'N') {
    # q9 X9 u: m$ l$ v
  109.                         printf("\nAborted.\n");3 |  C! H+ J5 |* T- p7 y
  110.                         return 1;9 o5 t# y, }" W0 _  I* @1 b" m( H
  111.                 }5 `/ F1 t4 i6 P
  112.         }
    4 w8 F0 q0 y3 \3 v4 \: @7 ?
  113.         if (writeparam(mac, stbid) == 0) ( b0 ?* D) c) ~% T
  114.                 printf("Parameters changed.\n");
    0 B! I7 f& s9 F" m: n# E2 A; a

  115. - I; t1 X' v, ^
  116.         return 0;
    ; ^4 g( X8 r2 F7 w% z
  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
) `0 R9 M# X( }5 S3 y5 u- N# C在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ \3 q, ]- c2 d" u
你用的编译命令行格式是什么?* S, K& i0 S7 y$ B' O7 b
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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