查看: 16217|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' U' y( B' k4 Q+ A
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig/ f( o, b9 {, D& W6 `
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 B) \5 o: L& W9 X2 l0 T
usage: himr <address> <value>. sample: himr 0x80040000 0x05 i+ G( T) V' Z' Q) A2 F
# P9 ]/ D" |' V6 B
& J/ {* R3 m$ ]3 s3 ~- [" d  ~$ a
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- O1 T* {. {3 k

% p3 V& M- Q; q8 m4 j  ]( q4 E补充内容 (2012-3-8 09:42):
2 _( R2 B/ Q  h6 i" x/ khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- l1 ~: t; v9 L6 F# ~这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
; B( c  o" x* I' S. t5 X3 j
8 }% r  f) g% y/ Ghimr <address> <value>. sample: himr 0x80040000 0x06 c( J, V2 p) F5 O1 w9 v5 d; h

) r3 Y5 S' Q0 z. B' l$ w( Z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- K0 t& ^' Z1 \- G, f
himr 0x80040000 0x00
# Y# `5 g" T3 S6 Uhimr 0x80040001 0x110 @: j& k+ h7 ]/ V$ p
himr 0x80040002 0x22. b% {+ N) B$ \" S0 r- y
himr 0x80040003 0x33+ \2 u9 }/ O. e
himr 0x80040004 0x442 O" {+ [. l* d4 Y& ?4 {
himr 0x80040005 0x55
7 D! T: [. ^7 w
2 D0 c: _8 h1 M1 f; tSN也是类似。
7 P( p% T, |3 @- E) r' a* c7 Z7 H
( J' V7 f" a) r' e) H6 r: I现在主要是,谁告诉我们MAC和SN的地址?$ d0 E6 c: W: C4 h  p
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 n: q) z- D% f
一直想找到运程修改MAC和SN的办法,苦于无解啊
! T& a4 q6 ^2 m& i2 q  o) Z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 R; t6 ?* `( O/ a
7 \" l0 g/ @- \
修改的代码早有了。到今天不会编译。' i+ ?4 ]- z; D: t4 N
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 h! F9 c7 ~* l" L* d, |8 f
  2. #include <malloc.h>
    : Z' u" j/ u/ |/ _) K& q
  3. #include <sys/types.h>5 d- ]9 _% t/ r9 j' G5 ?
  4. #include <sys/stat.h>
    . F% Q6 R3 O* `' N3 s
  5. #include <sys/ioctl.h>  a# d" M3 D& H9 A
  6. #include <stdio.h>' i/ S+ o/ Y4 H, w; Z5 @; d& c
  7. #include <string.h>: D& _8 A7 h+ x; w, q$ U8 \
  8. 1 a' e. t' M9 ~% L: p, Z$ b& o
  9. typedef struct {5 e1 E3 Y+ m5 o7 R! Z
  10.         unsigned int        e2prom_cmd_sub_addr;) N/ D9 J3 c" d; p  I9 p1 l  Q! ?
  11.         unsigned int        sub_addr_count;
    0 R& y* L1 F) a6 v% u5 w: C) A
  12.         unsigned char*        e2prom_cmd_data;
    ; H4 o2 S3 h( p4 J
  13.         unsigned int        data_count;
    . z7 Z, _5 {$ }( U. n8 J' ~
  14. } e2prom_s_cmd;: W" y$ i6 M- z3 F+ J
  15. " m5 _# Z0 h# c; s1 C" M) m# z
  16. #define E2PROM_CMD_READ 1
    & n( O7 N" g/ L8 j5 s6 H
  17. #define E2PROM_CMD_WRITE 2
    ( y: ~2 Y. e& T- d; s1 N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % ^1 |" N2 E8 _/ ]0 k  }
  19. 4 M% B8 a5 U) o- C3 v
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ P" {/ Z( e) j6 G# n! S* c
  21. {3 i  m5 i* p& j4 a" _
  22.         int fd, ret;& j/ k( X+ m9 R4 I5 o
  23.         e2prom_s_cmd arg;. m; r1 b3 n; Z- o+ H
  24.         unsigned char buf[0x18];
    3 A2 w. B! v6 g6 E

  25. , T. b. M/ s5 j9 e  R
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) [, u  H* I8 l' V( C4 @
  27.         if (fd  < 0) {
    - {. z1 i  _( ~; _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);: s5 y9 F5 g/ m
  29.                 return -1;
    - [9 t# M& p. @0 Y  I* u
  30.         }, y2 K: S( ~" I9 Q8 i+ s$ S
  31.         arg.sub_addr_count      = 2;
    - c) ?+ h( i$ g/ k, R# ]5 r
  32.         arg.data_count          = 0x18;7 ?& i! b  `2 C2 |: }
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 t7 ^' @& H, J$ m1 v. V
  34.         arg.e2prom_cmd_data     = buf;9 ?( h! }: @# d$ D4 h: ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 `7 |. K/ @- g. F* ?) H
  36.         if (ret != 0) {
    ) o9 N" T0 ?+ F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 }- j& ?7 n1 W8 N: V) I
  38.                 return -1;8 @! \9 Q1 y" N- m, Z6 P
  39.         }5 `* A% |/ d, M. \4 o9 b* y6 X' }
  40.         memcpy(mac, buf, 6);1 W- D. E/ S, T4 p* l! p
  41.         memcpy(stbid, &buf[6], 18);# x  G. x+ j; |/ f% c
  42.         stbid[18] = '\0';
    ! @$ b% K0 x# i) w  h

  43. $ |$ s4 V0 I: e6 u# n- k9 V
  44.         return 0;1 L4 s+ g' J/ k# }6 J: T4 q
  45. }
    " X& M) W/ `- P9 {- Z# q+ o

  46. 5 _1 j7 [& S, H- `# R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % K1 q/ r/ `7 ^
  48. {
    . Y  |: ]5 X4 M
  49.         int fd, ret;
    3 f, n. q( ?( p1 F) U
  50.         e2prom_s_cmd arg;
    - a+ n: P1 v0 s5 |1 |
  51.         unsigned char buf[0x18];
    . A1 l$ J5 h1 C' |* h& A

  52. * ]2 m; @( r: J; d% X5 \0 a
  53.         memcpy(buf, mac, 6);; L# j$ o6 |6 \9 A
  54.         memcpy(&buf[6], stbid, 18);" ?; N) u& u  P% G( r+ d
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" ^4 \& V* U2 d; ^: n2 }6 i$ {) A& D
  56.         if (fd  < 0) {! }! ~4 ]. F5 E0 g
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ A! m2 z) N0 v
  58.                 return -1;
    - G  ~4 Y- R- u* f
  59.         }
    1 \) Y! Z+ a1 p$ h
  60.         arg.sub_addr_count      = 2;* p. B  a& _8 R  \
  61.         arg.data_count          = 0x18;
    8 K' a& [5 r$ u/ |: R3 h* T+ D
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 `: @) s2 k$ A4 N1 K8 \
  63.         arg.e2prom_cmd_data     = buf;: ]( y. i8 U3 l5 z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 J4 J8 s1 [  o* L' S; k
  65.         if (ret != 0) {
    % Q) {( t1 }% [6 i$ C1 b1 W0 u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # j, P  W, J5 I; J" p) o+ `! U. k
  67.                 return -1;8 F' n8 t% N  }) v, _5 \1 P: j
  68.         }# n" ~! t+ N. Z6 M& g) a
  69. 5 q( f: G4 U* j) K. J2 A. W) |
  70.         return 0;0 h- l. |% s! a8 B* i
  71. }
    , ~* {& }& j7 N5 J8 |8 [0 Q5 v

  72. 0 L: O5 d/ `- u- D- N8 S
  73. int main()5 J. X6 {: m( y4 _' a& g6 ^8 Z
  74. {/ U8 o1 b1 D% r9 Y
  75.         char c;; g- ~0 H* E& L% F6 U' }6 w
  76.         int i, macs[6];1 R' F0 v5 f3 c; {  Y
  77.         unsigned char mac[6];
    7 j4 t* B: F' l5 Y
  78.         unsigned char stbid[256];
    , M8 o& i& H  M% o
  79. ! J/ e0 ]0 ~1 s9 f
  80.         if (readparam(mac, stbid) < 0)
    9 e% e9 m- I' T
  81.                 return 1;) O+ @" f) S9 A- I% w# w

  82. % b7 U" r; E9 L& q
  83.         printf("Current parameters: \n");+ @: C; c1 V( D- z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, ?' L0 K* J: g% U2 c
  85.         printf("  STBID: %s\n", stbid);
    / l6 k2 o( \) ~) C
  86.         9 }$ D, l* @2 w& ]5 {% m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + m! ]2 [2 d, b/ q; e* ^* a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * V& Y# L' N# m( q* o0 J
  89.                 printf("Input MAC error\n");
    1 B; u$ g6 P# o4 E
  90.                 return 1;
    ! s/ V. B! f9 X: a$ w  s
  91.         }) z" {& w. [  m2 I. ~3 C; c0 C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 D1 x7 U' `: @% Z# D
  93.         printf("\nPlease input new STBID: ");0 i0 p5 E7 k' p; u$ T
  94.         scanf("%s", stbid);
    3 w/ t4 E) W4 A
  95.         if (strlen(stbid) != 18) {
    4 p. d7 ?# ^! C& {8 k! c
  96.                 printf("Invalid stbid\n");
    ' B) a* p! j2 i' I" i
  97.                 return 1;
    6 x1 u9 D% M' {  T' W' J
  98.         }
    4 O4 V( B8 C" n! T" l; y* S
  99.         printf("\nNew parameters: \n");. i: \6 l; Y' Q" j' |7 U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. y, e- E+ f7 h) f  o0 j/ K
  101.         printf("  STBID: %s\n", stbid);
    . V$ S0 {# \  u% \: g, M
  102. ! e% z+ w6 Z1 K. U) P
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 c  `: j5 G0 h4 M! ?/ g8 A
  104.         for (;;) {1 q: c" ]4 G! |$ `! ]3 i3 h
  105.                 c = getchar();
    * @: Z5 ^0 k% y5 V9 b2 u
  106.                 if (c == 'y' || c == 'Y')
    1 f+ P8 G+ d) `; `/ L! [
  107.                         break;
    $ \6 p7 G/ F' w3 m& \: ?
  108.                 if (c == 'n' || c == 'N') {5 o1 B9 ^( U+ V5 Y" n, b
  109.                         printf("\nAborted.\n");6 P- U/ _9 o  F" ~4 Z; Q5 n
  110.                         return 1;
    7 t3 o$ A% h/ G+ H7 I" d8 n
  111.                 }+ }9 E2 I5 D; r& ?& g/ J
  112.         }
    2 O  s3 D% {/ P
  113.         if (writeparam(mac, stbid) == 0) ; ~* R) Z" ?, ]; S* Z9 R- F
  114.                 printf("Parameters changed.\n");2 n, S- ?6 A# \. W
  115. & V5 Z* N+ g/ w, T
  116.         return 0;
    6 ]+ o* p8 u7 J  E/ e% B& B/ D$ 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
/ V4 S6 n& B% N! L6 G4 ]2 K$ {, X在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& l9 y1 x( s+ Y; c5 E! j
你用的编译命令行格式是什么?3 s. Y, H# Q- R4 C: T. R! }! T4 F
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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