查看: 17631|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) {; o7 Y! Y( E" t$ x. N3 o7 G1 O* ?$ }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 D8 Z; J' X; u- n# q/ q: [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 U* r1 T* B. d3 i* [+ F" nusage: himr <address> <value>. sample: himr 0x80040000 0x0
0 P& I# ?7 k; a/ [0 q# k! B: S- n6 q
) Y; l7 x6 k/ X( A, D
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 N1 ^* E+ s8 h, B' y6 X6 h+ q" X
7 w( J' l- ^1 Z# c& E2 M
补充内容 (2012-3-8 09:42):
" A, V* s; D! z5 [( khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数8 }- l5 \6 e3 b8 U( ?, B
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。! E2 U; y( J' f
9 q8 f5 m/ c- M4 E* I
himr <address> <value>. sample: himr 0x80040000 0x0( D! @  R+ n' u, u% G

2 ~7 p  b, V% Q" j例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; s7 Z/ e8 u3 f0 ?. v3 ?himr 0x80040000 0x008 n" p" i+ H2 y7 v
himr 0x80040001 0x11
! D7 ]8 p6 o: G. D0 Jhimr 0x80040002 0x224 ?! R4 ~3 |4 h3 M4 M
himr 0x80040003 0x33
5 L, ~; R) `- `) {3 w, u* d; Xhimr 0x80040004 0x446 \9 _( f- V6 I
himr 0x80040005 0x55( x9 L) ?; ~1 [! n

4 V4 ^& A" n/ ]  wSN也是类似。4 w6 |, r: A6 i8 W( R

3 a7 ?5 N  ^" O0 N( l, e# d现在主要是,谁告诉我们MAC和SN的地址?
' J, q, p' ^) s1 l; s$ D
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- S' H0 Y$ |* X2 m) J一直想找到运程修改MAC和SN的办法,苦于无解啊
, ~- _! R$ T6 M* o% F( Y( u6 Y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( z8 X; @% R4 P! J

: n! R! O; _; b) a修改的代码早有了。到今天不会编译。
1 _: k* q5 [2 F( z5 u4 `需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, W( s2 J+ K! r  C3 R
  2. #include <malloc.h>$ b" R2 A( J9 x2 [3 G4 f5 V9 f
  3. #include <sys/types.h>
    / K7 ~5 G, A) {. P3 c1 [! P
  4. #include <sys/stat.h>
    $ [( Y% Y# ^. L8 J1 i  l
  5. #include <sys/ioctl.h>' l6 c7 C9 g0 I0 ~
  6. #include <stdio.h>: z9 W! [4 z% b* i. A
  7. #include <string.h>4 ~$ l# o9 ]( \* F

  8. 0 K& y, s6 A8 I  S4 j
  9. typedef struct {
    / J& ?: [3 V6 r1 n
  10.         unsigned int        e2prom_cmd_sub_addr;1 j7 G1 `# k5 F0 \
  11.         unsigned int        sub_addr_count;
    ! w! Z; K# @2 Y8 u/ W
  12.         unsigned char*        e2prom_cmd_data;% q+ m, G( P5 }& n, p. ^
  13.         unsigned int        data_count;5 v! l+ r, M. @- _# D" s# d
  14. } e2prom_s_cmd;# w7 o4 j# L2 |* _" `5 A/ D

  15. 0 b0 k; ~) e( \- @" v
  16. #define E2PROM_CMD_READ 1& h7 X9 t# {8 H/ x. f- h" J- A; W
  17. #define E2PROM_CMD_WRITE 2" i2 t" b( x. `
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    " z# X1 d7 U( @# S  g6 d% D

  19. ( J  O0 D2 i& g- t* t
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    - h( x- q9 [+ T6 [, e' ?
  21. {' m5 r( n- {# _* @1 ]7 \
  22.         int fd, ret;! a( y) J  w' N' @# E+ h
  23.         e2prom_s_cmd arg;
    / j/ c& F( |3 L' [3 T8 t
  24.         unsigned char buf[0x18];( i0 O( P' O0 m. c0 K$ D

  25. 1 r7 C- r) K9 ]6 \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' Y* w% f1 T/ Z8 n$ P; D
  27.         if (fd  < 0) {
    # ^9 R# j6 `& i  H& K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % R7 ~& T: `( @/ d; Q8 X! K4 V
  29.                 return -1;
    / s6 R4 p; z: ^$ t( u( E
  30.         }
    4 m; O1 f% O' T: Z4 e
  31.         arg.sub_addr_count      = 2;
      S/ e! {! q% _/ Z5 f' F
  32.         arg.data_count          = 0x18;4 D. G, A5 x9 P: q. G: i! q6 ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 T9 ?2 S9 ?. ?, i) s' O
  34.         arg.e2prom_cmd_data     = buf;
    6 {6 m5 J7 i- s: w+ _% \( c" _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 l, t8 S+ ^4 J( G: [8 L# l
  36.         if (ret != 0) {
    " l8 P$ s0 H$ U" G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 L$ C- e8 B1 E2 Q
  38.                 return -1;: K7 [  h& [$ U( p- `4 j
  39.         }4 f/ S! s# R" ^3 u9 |' v& o
  40.         memcpy(mac, buf, 6);
    / {0 v( j. H- R8 ^6 x
  41.         memcpy(stbid, &buf[6], 18);2 o- n9 K" ^$ P& `( z# v! d! \
  42.         stbid[18] = '\0';
    ! s: Z2 g4 |9 ~0 P

  43. - o: ]! w2 F  A7 e# k
  44.         return 0;" [+ A+ \2 K$ l) c& K: f$ b; t6 u
  45. }' Y; |+ T- u5 I) X: o5 c/ U, J
  46. : x% s# h- `, t4 J: b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! p8 a, o0 Q, m& A& o& n* r
  48. {) v; K: q+ N7 _& P% U1 U4 r7 b
  49.         int fd, ret;; u) T* L/ [6 i- u5 N
  50.         e2prom_s_cmd arg;
    / Q4 E; {' x1 H/ t+ v7 x
  51.         unsigned char buf[0x18];
    7 {+ t1 n, y& |3 k1 s

  52. ' U- s) X0 V$ z, `9 Z1 V- D9 u
  53.         memcpy(buf, mac, 6);) `9 `, s3 k* `9 U8 C- f
  54.         memcpy(&buf[6], stbid, 18);
    " k/ A8 B# z& M9 v4 U4 y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      F/ x9 N3 y5 i9 \2 c* C/ {
  56.         if (fd  < 0) {
    ! e0 ^* l( U. u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 }& z" j$ b+ Z: F* d# P4 ^
  58.                 return -1;' E5 W: Z) T+ S
  59.         }
    * }  b" ^: o# n2 V$ F2 ^
  60.         arg.sub_addr_count      = 2;( j- o5 w! G2 J+ H
  61.         arg.data_count          = 0x18;
    + y- q. _" C: m% a$ R" e
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " e+ C, [$ O4 F5 S2 p4 E0 q* ]
  63.         arg.e2prom_cmd_data     = buf;
    ; h4 Q6 U8 [  \' U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# a$ Q1 J: E* ]! d( a& w
  65.         if (ret != 0) {0 a/ y9 M$ ?" q! Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 B, k4 `- ?+ m, o( ^% N
  67.                 return -1;
    4 k9 Y" D9 @. X9 K) h* [
  68.         }
    7 b5 |( i# k3 F8 _3 l  J) E: e- w6 H4 N
  69. * b  @1 ?* _) ?% Z  K: ^- |0 r
  70.         return 0;  B9 Y4 Y. c- B* o( Q
  71. }
    6 t" F" U) u0 E( r; w- z% c

  72. ; e- I' `; R' o8 U" h
  73. int main()# N  ~) ~5 B5 ?- M( F
  74. {
    - o# L9 O4 r: V. _% g  A  ]
  75.         char c;
    1 x+ m* ?( o% B1 _
  76.         int i, macs[6];
    - B0 _/ E( G. S  b, L1 E! o) `
  77.         unsigned char mac[6];
    $ i+ M4 `7 X6 U( |% e
  78.         unsigned char stbid[256];7 A4 [) E  H6 A! v2 ~  W

  79. 3 K( r0 Z5 l  X4 T; f# e# o: x" X
  80.         if (readparam(mac, stbid) < 0)2 I$ k+ M" q9 o5 b  A
  81.                 return 1;$ D$ ~8 Z  w# x- Z, {6 e

  82. 3 J$ p- j: _/ f+ Y
  83.         printf("Current parameters: \n");
    4 O1 f5 ]* e; |" k4 t4 U: ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : ^& S% j8 t( b/ O, S
  85.         printf("  STBID: %s\n", stbid);
    " a+ @( b; d; m( r% ]
  86.         - _5 H/ D: N5 B7 N8 Y; u0 _$ r
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& H, R+ m. {' T  ]! b' s7 |# Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 i8 m/ y. F3 I  [# f, o: [
  89.                 printf("Input MAC error\n");
    1 ^+ t, a6 h% Q) j* A
  90.                 return 1;
    ( H! @8 p1 Y  G* {( @/ V
  91.         }
    ! z; h5 v6 w0 [. Q5 }* m: C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 u) b5 o: r5 E! p! O& L. D
  93.         printf("\nPlease input new STBID: ");) F( U# x7 n" @1 H7 B: |* r
  94.         scanf("%s", stbid);
    + h5 P, W+ w2 q1 {* g0 F
  95.         if (strlen(stbid) != 18) {4 B# W& L% d& d7 B' e* ?8 k
  96.                 printf("Invalid stbid\n");
    . p: n, Y, L- d, c7 D& {* Q
  97.                 return 1;9 ~2 F% G. Y; F/ `1 b6 d7 `- Z
  98.         }  H% ~4 y8 k* o& e* D
  99.         printf("\nNew parameters: \n");
    9 R# T+ k; o8 e! k1 k5 l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- V' a) Z2 G4 ~0 P- Q
  101.         printf("  STBID: %s\n", stbid);
    / H& Y, [, Z2 X* c3 ^- e

  102. / ?7 A+ O. D. N" l5 I0 w
  103.         printf("\nDo you want to change paramemters? (y/N) ");. P+ Q- [- U* t- d/ I$ L2 |
  104.         for (;;) {
    1 {! \( m% l* `
  105.                 c = getchar();  }' \2 g" \- F- C5 D8 k3 w
  106.                 if (c == 'y' || c == 'Y'); x2 k' l" Z$ O* L. u, j+ k, P
  107.                         break;- R+ N. @/ \. `6 S4 ]  C
  108.                 if (c == 'n' || c == 'N') {
    2 a1 v' U, m/ l, I
  109.                         printf("\nAborted.\n");
    ' q3 V* G1 `; ~! h4 ?- L7 d
  110.                         return 1;  B. o  z! {' R
  111.                 }
    " K! l! X4 o7 b8 b% w
  112.         }" K9 P- o! g, ^: d' y  f
  113.         if (writeparam(mac, stbid) == 0) 0 i5 i6 B+ ?: c8 e: k
  114.                 printf("Parameters changed.\n");% ~5 W8 C8 @2 x4 R

  115. & h0 w1 u3 l1 C# D0 _
  116.         return 0;
    4 ^- N  {* a) Y+ E0 M
  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
8 \9 x3 h# g' G- X3 v在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) W1 ]5 m0 X* r5 L9 \( J0 L你用的编译命令行格式是什么?/ [0 i( K. `( p8 C+ 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客服返回顶部