查看: 17761|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . u! d# y: G/ e( k" j" s+ h/ f. L1 Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - T4 O8 O" U# `! _- I7 @* A: y( u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; _, i8 v- d; s
usage: himr <address> <value>. sample: himr 0x80040000 0x0
( H1 F9 z) q/ o8 |; O
& J9 L" q1 ~# g- U( R) K3 Z5 h5 f( c  P# ?+ U
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. p4 [, \) C- N+ h5 e* k. ]
; ?( [' d* W/ T1 A/ j
补充内容 (2012-3-8 09:42):2 z9 Z. d: R; [/ i' X
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 M9 `, W0 R$ g) U! d% i, f这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。3 L: P" ?8 O' j! R% b
  O0 T8 ?# ]2 U% e) h! t7 h
himr <address> <value>. sample: himr 0x80040000 0x0  L, ?9 W9 V5 W# \- R% \9 ], Z

/ o$ h& H9 W% i8 Z4 |8 H, i例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" l8 R& y7 K' b
himr 0x80040000 0x00
9 ^3 C7 J8 X% f! bhimr 0x80040001 0x115 @) i8 `$ p7 N8 E: _/ o! |- M0 L
himr 0x80040002 0x22
* G# W  S. a$ `himr 0x80040003 0x33
/ @, W. _) e7 ]8 I  Hhimr 0x80040004 0x44
6 U  |  X/ a* j3 r1 H3 V( b4 y5 qhimr 0x80040005 0x55
+ Y9 ?$ u# m0 L) f
" q) V  A) ?7 h9 G0 I# U7 BSN也是类似。
/ d  }% p( j; |5 N  s
1 [; H/ s9 u6 D- H4 U现在主要是,谁告诉我们MAC和SN的地址?
5 l& Y5 M. y% [/ z# o5 k
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( D" p6 G, Y3 l- Q
一直想找到运程修改MAC和SN的办法,苦于无解啊
7 t! u6 p: i' D
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
+ s) k0 X/ [5 a: q. M
) e! g0 Y7 S6 h7 U5 Z修改的代码早有了。到今天不会编译。* S4 m9 \) q! a4 Z9 ]: o% B
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + l2 [+ _# L! I% C
  2. #include <malloc.h>
    & D: O, f: m1 v& [$ `. M
  3. #include <sys/types.h>
    ; o( y+ O& L9 ]+ B# l, r5 q2 y
  4. #include <sys/stat.h>) g) u$ O  c$ j( |; i9 C
  5. #include <sys/ioctl.h>. |  Z' Q  D& T1 W3 Q7 G. i
  6. #include <stdio.h>
    3 w: l5 b' C; ^- t/ u) z+ F2 U: M
  7. #include <string.h>
    % m/ O- @: A7 w8 ~

  8. . d4 X7 O( d- `$ V- k9 y
  9. typedef struct {
    ' e. y( h/ ?' w; X4 V0 z) L
  10.         unsigned int        e2prom_cmd_sub_addr;6 A7 c9 Z$ ?, R# b& B3 Z
  11.         unsigned int        sub_addr_count;
    ! T' `4 c# P5 V! F7 ?: W
  12.         unsigned char*        e2prom_cmd_data;
    7 L/ A. I# D3 q0 N1 o; j+ c& l
  13.         unsigned int        data_count;
    + |# f/ w1 y2 \( Y2 Z
  14. } e2prom_s_cmd;' C) K! b4 X7 Z

  15. & D9 Y! i0 Z! p& ~; e
  16. #define E2PROM_CMD_READ 15 l3 ]" G: x4 R$ V1 b* F% p
  17. #define E2PROM_CMD_WRITE 2
    5 p" a  [, e6 k! G
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / f; g7 }- t. x/ S
  19. ' v2 M: m4 h# H9 g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    # Y' E* z% X; g3 ~7 H
  21. {, Q6 g7 `9 p3 O
  22.         int fd, ret;/ n8 J& D1 I1 ~4 O; p, Z! p5 v
  23.         e2prom_s_cmd arg;: |6 ^! I: @! o1 ?. ]  i4 B
  24.         unsigned char buf[0x18];5 k* L8 g8 V2 [' w8 r% C6 q
  25. + N% ?8 \4 ~* _4 Q& I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 N% T3 G" X4 F! U! }4 F2 e
  27.         if (fd  < 0) {% f# X5 N9 q' X7 B9 R+ |
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 R( E5 C3 S+ R
  29.                 return -1;) s% a5 r! W/ e6 J
  30.         }  }1 @! p3 [+ H  l9 U- y
  31.         arg.sub_addr_count      = 2;6 f! l' }! K! F% M- H& ~. L
  32.         arg.data_count          = 0x18;8 U9 I. }0 X" L, H3 `2 O
  33.         arg.e2prom_cmd_sub_addr = 0x290;) L8 w8 C9 ^  k
  34.         arg.e2prom_cmd_data     = buf;
    , l+ w% l# M: Q7 i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ( s1 s- o, U" P) J/ U0 [1 M* r
  36.         if (ret != 0) {
    . V. G- p4 @$ \* p( l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , M$ Z5 x" `; R% X! Q
  38.                 return -1;
      m/ k6 Z* s* S
  39.         }9 K3 X& J# m+ {/ Q* |& i- S
  40.         memcpy(mac, buf, 6);
    " U# ~8 M. j! T( }9 e* ?) ~
  41.         memcpy(stbid, &buf[6], 18);
    ' a! E: B  V# c. U
  42.         stbid[18] = '\0';
    7 u8 ^4 U: g* |+ ~
  43. 4 s4 P9 @- p& @0 p: I2 A
  44.         return 0;; {. v- k) H8 ^9 ~. j
  45. }: U) e: @) N9 q& f' t0 x/ [
  46.   N8 h6 [: _7 M, y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 W5 H) Y1 e8 [. V) p  @! E3 O7 n
  48. {
    # b4 D5 X$ V2 f
  49.         int fd, ret;
    4 l% v2 E/ C! z4 z5 P$ Q
  50.         e2prom_s_cmd arg;) n. v. c3 s2 g" o, \4 M
  51.         unsigned char buf[0x18];, ~0 z3 V/ h+ y* s

  52. , s; K6 b' k1 I5 S
  53.         memcpy(buf, mac, 6);% R7 Z9 m. L7 M6 a& g  f( {
  54.         memcpy(&buf[6], stbid, 18);2 A( _& i: z/ k, [0 _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . U- l# T+ t6 L6 H4 w
  56.         if (fd  < 0) {
    5 B; ~: j# Q+ k7 p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * ^' g4 p# H6 d) o( B( [+ t. x, O% @
  58.                 return -1;; P9 F) E" W, I& v  r: i
  59.         }5 b/ D, ]  [+ s% s
  60.         arg.sub_addr_count      = 2;" ^" {( R4 @. o+ J4 i6 c$ k+ X8 t8 w
  61.         arg.data_count          = 0x18;
    . u) e5 Y+ g) m$ |0 S$ V
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % A! ]# {1 {) \2 [7 e% P( h" T
  63.         arg.e2prom_cmd_data     = buf;! U5 ?' ~, ^, N' ^6 ]- L: Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);( j) W$ M; \( P% P1 \0 I
  65.         if (ret != 0) {0 {) {7 u9 ^% i0 A6 m7 r5 F  O5 S0 z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ M. R4 ^* m, s
  67.                 return -1;8 B; v. _( o: w( d. s
  68.         }
    + E+ t0 y  v; y8 L# x
  69. 1 X! j7 G' J" G  ]0 T! g
  70.         return 0;+ ?" G" @2 ^+ r1 G0 D/ F+ z
  71. }* j, ]0 J+ x; p

  72. 2 Y) u8 Q, N& o5 ^7 F
  73. int main()$ _: [3 S6 T( ?- s! j
  74. {
    % p% k" F! i- A# m0 N
  75.         char c;
    0 |3 [5 b5 f  t/ Y
  76.         int i, macs[6];
    $ v% o+ d2 R1 L* a' l
  77.         unsigned char mac[6];
    ) i0 z& K2 b+ z, ?' K: }9 v
  78.         unsigned char stbid[256];
    0 I* F6 k8 i' a" s1 A+ ?6 Y* t

  79. 6 C- y  R! g* q3 ]5 D- n2 i: ]
  80.         if (readparam(mac, stbid) < 0)% _- a1 r; E" I9 i4 P
  81.                 return 1;
    0 V2 g1 ?& {( K" G. N+ E( J

  82. ) T6 n3 a( }- r. \# Q- W6 G: w
  83.         printf("Current parameters: \n");0 H7 ~" v2 ^0 m
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% t; A* ]" \& a. V3 N$ m
  85.         printf("  STBID: %s\n", stbid);- D; S% g7 j+ U- ]0 u2 n
  86.         6 w( b" o% i1 D% f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - n2 k, u/ x# p( j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & f, W2 x% s( o
  89.                 printf("Input MAC error\n");2 t3 [  W6 h" r5 a  d% C0 S, D4 N! J
  90.                 return 1;: q" c/ @( w. J  W$ Q
  91.         }3 l3 d5 h! z5 ^+ M/ [# \4 ?( i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 r. X; U0 T6 X5 b  h' j) j6 h& X
  93.         printf("\nPlease input new STBID: ");
    4 \4 m6 r3 Y' _+ k
  94.         scanf("%s", stbid);8 M  E- _" O# u# u" B5 |2 ^2 F7 P
  95.         if (strlen(stbid) != 18) {" u9 R, k% Y; a- K
  96.                 printf("Invalid stbid\n");" ]; B1 H  N, b& l5 j! U4 H( L
  97.                 return 1;
    9 n/ x+ Z7 u* k, k+ u) j$ k
  98.         }
      C, P* {: {4 F+ J
  99.         printf("\nNew parameters: \n");
    ( A4 D; ?3 [7 p* v' h' X/ C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" s& a" X0 M4 D& D( ~
  101.         printf("  STBID: %s\n", stbid);
    7 m5 V4 g3 r5 x8 j* H
  102. 8 Y. X, o4 h. t/ s5 y" G2 _
  103.         printf("\nDo you want to change paramemters? (y/N) ");  x% u4 P4 G6 U  L' I1 ?
  104.         for (;;) {
    1 q, D& B+ O8 N3 p3 ?& m
  105.                 c = getchar();
    / N) y# t0 J8 [7 J8 H$ V
  106.                 if (c == 'y' || c == 'Y')
    " l6 L1 A; f- M2 D: F, A; }& h
  107.                         break;* Q7 ?  K8 g/ `6 y. `6 q. ]* {
  108.                 if (c == 'n' || c == 'N') {6 ~5 [9 s! V- C% l8 a9 U
  109.                         printf("\nAborted.\n");
    ) z+ V# ~9 m+ a7 Y! C
  110.                         return 1;
    7 V& f: N1 g4 F) q
  111.                 }
    & W9 w7 o* {4 k$ }' P+ U( S
  112.         }
    9 x- k( }6 `# w7 R; u- T. g0 o; l
  113.         if (writeparam(mac, stbid) == 0) , n" K; d/ A; d/ u2 |
  114.                 printf("Parameters changed.\n");1 C5 U7 q# U  u  t  h' z

  115. " S+ ?: ~" T7 N- @3 G6 r' d5 x% L4 ]2 n
  116.         return 0;: N( L' P+ `- z2 O8 b
  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 4 M& _1 c. e6 l
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ a; k# c- a! b3 B- ^( V% j你用的编译命令行格式是什么?  j; l+ r  \0 M; c
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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