查看: 16570|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( L9 S+ P& C: G3 |& x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% Y2 E+ x, {+ G* r7 J" G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. x$ F/ w1 I; g; I- ]' Q! ^; k
usage: himr <address> <value>. sample: himr 0x80040000 0x0# M7 |1 D4 v+ w- x8 u0 [. G
8 I$ j3 E* J9 g: R9 g
0 `, y8 {& K" j" H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ m5 |( I6 W4 K4 @8 D' w3 A0 L1 P" Z
补充内容 (2012-3-8 09:42):3 O! Z: k9 L& G
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ d5 M1 j" m" w9 s& Y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- O7 S* @$ L9 I- h4 L# r% j, Z

3 h# b* A9 V. ^, qhimr <address> <value>. sample: himr 0x80040000 0x0
$ W7 R5 [2 h# W$ F* j2 B) B3 x" b6 G2 [1 f2 W! D& E
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- Z3 O! B5 _$ J  o9 chimr 0x80040000 0x003 N; q% f2 C" N$ D/ I) D8 ]
himr 0x80040001 0x11% m, A2 d; ?! {+ u) V/ |
himr 0x80040002 0x22
, l( `- Q& p0 Z) o  J: U/ ]% Q& Khimr 0x80040003 0x33  y4 [( ^) `* H! J4 ^) M" L
himr 0x80040004 0x447 e$ R. c) K  g! S  V4 X
himr 0x80040005 0x557 g" n3 U$ s7 J% h% i/ f2 A" p; @
& t* R; i- v. j3 O
SN也是类似。. G3 g) E9 |' c$ p

0 B/ G, e! w- @3 k* u现在主要是,谁告诉我们MAC和SN的地址?
$ _7 ^) V- c3 Z4 n) m+ a: Z; E4 G
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" ^1 r# }# G: F. p! p) s一直想找到运程修改MAC和SN的办法,苦于无解啊
* W, d. J/ t& p
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ n2 p  A$ M' [5 F% ?  J& Z' N' t$ f8 Q! d6 S, ~
修改的代码早有了。到今天不会编译。
' f" U; E  x: ?6 Z, P$ i& m* T! N# D需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>. J1 F* a' W+ `. p, ]4 \- Q+ ?
  2. #include <malloc.h>/ e- i" a: v6 f
  3. #include <sys/types.h>
    5 s0 I, ^2 M; s! K
  4. #include <sys/stat.h>) }# O9 n" W! b' w/ E& U
  5. #include <sys/ioctl.h>
    9 M, {7 p  E) k7 U( l0 n# u
  6. #include <stdio.h>) ~! r6 \7 D2 U, ^* s# N8 I# r. ^
  7. #include <string.h>
    ) J, a: q& ?9 {8 Q5 z9 A

  8. - U. \+ \- @9 K# Q0 R9 |# u
  9. typedef struct {
    ' Q4 p# b* X) k( M0 ^1 D
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 `0 S. ?+ V! h
  11.         unsigned int        sub_addr_count;
    ) d! {$ u$ `( x7 Q
  12.         unsigned char*        e2prom_cmd_data;
    , I: j* D/ K2 I- F, g
  13.         unsigned int        data_count;! \0 o8 h) j: G  z
  14. } e2prom_s_cmd;+ R4 `" u' U. C# d' k

  15. & D. V8 y5 |" @
  16. #define E2PROM_CMD_READ 1" p4 q' ?) s* E/ `  C
  17. #define E2PROM_CMD_WRITE 24 h% w" K# N* P* B' ]5 W6 I# g
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 F  O# j7 x+ N0 Q2 i, |

  19. 5 d% J& N" s7 S/ {& Q7 j$ e6 H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ b) g6 F" D5 A' P
  21. {: g( P1 d$ U" L
  22.         int fd, ret;
    * y/ r( k) G9 Z1 P) p
  23.         e2prom_s_cmd arg;
    " N. ?) Q3 r+ _
  24.         unsigned char buf[0x18];8 r3 \* N* `+ d4 X. s& R5 u

  25. " U$ S/ G+ V; D/ y" ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) I. d# }8 H4 K6 K/ ]+ Y3 _
  27.         if (fd  < 0) {
    0 O' Y( M5 G' K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ A( P! v2 x' w3 d' r
  29.                 return -1;
    9 Y8 ]; k2 L8 F* ], f0 B% N9 A
  30.         }# u$ L9 X) g& [7 R9 y. }( `
  31.         arg.sub_addr_count      = 2;
    2 W4 \4 H, u" B0 s9 X5 _/ `0 ~
  32.         arg.data_count          = 0x18;
    ) T& E7 S8 E. b1 {& g+ B+ L! Z
  33.         arg.e2prom_cmd_sub_addr = 0x290;! r% D0 w) ?5 d" c4 z
  34.         arg.e2prom_cmd_data     = buf;9 @/ Y  M0 n7 l8 s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , }1 J( B! x  ]4 A8 a# M
  36.         if (ret != 0) {) Z- ?$ W; e: F( L2 T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 ]! I' {8 b" |1 |3 T# J3 s
  38.                 return -1;# M4 R% [9 U- n% O# e
  39.         }
    ' x: O. H- [, l0 v# q/ z0 j0 i
  40.         memcpy(mac, buf, 6);
    8 Q- F4 n- e  O9 u, z& [( A3 q
  41.         memcpy(stbid, &buf[6], 18);$ P$ k" H* Y& \* I4 f4 a$ a9 C# n
  42.         stbid[18] = '\0';. Z* ]; `) \( N4 W, P% A$ |

  43. ' _) o$ J6 }+ s
  44.         return 0;
      R( y8 J) k7 w9 j) ?1 z+ w5 X. d
  45. }: D1 p2 Z" n1 H, |

  46. + H  [7 k( B. J% T/ Z7 w% u( m5 g; T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! X. P7 b) t' O
  48. {
    6 I! T: z* \% ]. u3 }
  49.         int fd, ret;
    9 h# |* P/ D: D  @0 S! r! ]
  50.         e2prom_s_cmd arg;
    5 ]! o8 Q3 D2 q3 r( E  X5 o* P
  51.         unsigned char buf[0x18];
    1 g. ^4 [7 R) |' R: k

  52. " \5 V9 ]7 Y. K# J
  53.         memcpy(buf, mac, 6);
    * y8 ~9 v* t1 t% X. a- ^( f2 |3 |9 L
  54.         memcpy(&buf[6], stbid, 18);
    , @' @6 O: n. a5 U7 Q) I/ y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . E, q4 X( S" n; z; G. m. k! E7 x4 E
  56.         if (fd  < 0) {) E2 A, R; K) `" b; ~9 }
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; j& ]1 x  @% \
  58.                 return -1;  _2 T# i0 n7 i! z
  59.         }4 s3 g' H# I. H" z2 @) d- [) u
  60.         arg.sub_addr_count      = 2;
    , e" G4 x. Q, ^1 j) d& [
  61.         arg.data_count          = 0x18;  ?# b, c# j$ T; X5 k, J' Q, d, K! O
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' N: A* N4 n  C. j2 V2 D. T) o2 T
  63.         arg.e2prom_cmd_data     = buf;5 M/ O+ M, g. v' v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " h9 M1 [! D: \* C) e
  65.         if (ret != 0) {
    + k2 {6 e" r1 p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- ~: b: x/ I* h. f% x3 g6 ~
  67.                 return -1;1 d1 k+ t9 x6 B8 ~
  68.         }- `, l0 c  {- D0 D

  69. : `' h2 G" s% N) _2 ?/ l
  70.         return 0;
    9 W5 @- o" }+ Q6 }
  71. }
    + Z; h" ?) s/ c; v7 `9 K

  72. / v' \- l4 z* R% q! [, j% `: ], r
  73. int main()' x: V7 Y) b9 U8 }
  74. {  n/ H/ X5 w' E
  75.         char c;& \5 G6 h2 H# s" L- |7 g; q
  76.         int i, macs[6];
    1 P, w& ~. J* R* e
  77.         unsigned char mac[6];
    2 d5 {* T+ t# F+ c; u1 L5 L
  78.         unsigned char stbid[256];
    5 Q& x& m8 D, `0 w1 J' C0 ~# a

  79. 8 ^. I$ U3 w" l
  80.         if (readparam(mac, stbid) < 0). _+ \7 \+ _3 c9 M. _
  81.                 return 1;$ g4 Y* F: B: h0 C: Y& L! C- v
  82. + v- l8 F5 x. C& f7 H2 T
  83.         printf("Current parameters: \n");8 k8 c6 C; F: K  z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ J5 t' n0 h1 Q( N
  85.         printf("  STBID: %s\n", stbid);
    . v$ Q- m4 Q8 z2 e* T7 R
  86.         8 j/ d( |: ^; P! M* n0 f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 F; Z, B' C* j4 o, A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - d' h% _% T) E9 V1 J
  89.                 printf("Input MAC error\n");8 v" f% B2 @+ R" t- t! X
  90.                 return 1;' c! h2 Q- ^+ R6 [
  91.         }  z" a) E. I8 S- c, s" e9 T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, h3 o+ v( X% Y; s# A
  93.         printf("\nPlease input new STBID: ");
    . A% |% A; L# {( ]
  94.         scanf("%s", stbid);
    0 s0 p% u3 o' C7 Z
  95.         if (strlen(stbid) != 18) {3 f$ L; p) h+ m: Z
  96.                 printf("Invalid stbid\n");0 J+ X* j  ]6 o
  97.                 return 1;" A) C2 g* L0 N& z  }% P3 O/ `
  98.         }
    ; j/ v9 A! l/ C4 D+ `" k
  99.         printf("\nNew parameters: \n");# F. i, R+ K  g- o8 `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 x$ _' v9 u& _& k7 h6 `, M
  101.         printf("  STBID: %s\n", stbid);9 t+ f' L4 u  S* _
  102. : T0 W" k# R) L4 O* r& Z/ p# `
  103.         printf("\nDo you want to change paramemters? (y/N) ");# e4 z5 b' y. c$ F" O1 t
  104.         for (;;) {
    3 X1 P3 [" F7 _$ R, l2 ]) ~; V
  105.                 c = getchar();
    3 M7 j/ Y7 ]9 F$ G# o1 D. a, h" o* W; I
  106.                 if (c == 'y' || c == 'Y')
    2 O& x% j/ @5 V
  107.                         break;
    ; Y0 C) e0 Q! ^  ~' U" V) I) Q
  108.                 if (c == 'n' || c == 'N') {
    2 N4 S  H! x8 ?$ D' p) i: l
  109.                         printf("\nAborted.\n");
    ' }) g( j9 T' r* h8 u" Q2 f1 W
  110.                         return 1;
    # k& c2 m0 ]+ u9 C) U( _* D
  111.                 }1 f4 }4 N  {/ S, \
  112.         }
    . V" m9 Q' P9 m6 Q4 x% O( D' R
  113.         if (writeparam(mac, stbid) == 0)
    8 Z% }) a1 Y/ S
  114.                 printf("Parameters changed.\n");) Y# |/ h* V4 W: _, @: t' s6 j$ n

  115. 2 o2 j  c! ?3 d% \
  116.         return 0;# `4 r2 f3 H. |
  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
& p; w  H- o, z; ?. b在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- v- {3 K; {2 M1 v5 X: z7 E4 h你用的编译命令行格式是什么?. L  {4 N* J0 n
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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