查看: 16555|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . n6 p! S9 M' n; z0 `6 _) p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, V: O6 g! B4 I3 K0 q* v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# i5 Z7 p4 ?2 v* i& v1 s! yusage: himr <address> <value>. sample: himr 0x80040000 0x0
4 I# [8 V7 F5 ]/ o1 x: ^; R% s' J% y) i# B8 p$ o; a4 G

* Y; q* o7 J" |6 |+ l不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ s0 J6 m  T' ?' X2 q1 U. F; ]! j$ r; y0 K- g1 P: T
补充内容 (2012-3-8 09:42):
- ]& N+ @  A# P) E. X+ Shttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 `5 z  W  G( {& b- T' n5 c3 _* ?这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。% K: J% k, \- C% K  L% K' a2 P
8 V  p- F/ p" z+ c
himr <address> <value>. sample: himr 0x80040000 0x0
6 F# z7 p6 {1 s5 k
% n0 I. M$ p' L# ^; p/ n" B% C8 @- A例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 q2 `% Z3 _4 z0 P% E
himr 0x80040000 0x00! K: Y; M7 V" ~9 n/ S* r$ p
himr 0x80040001 0x11. _0 Q- H1 X6 Y8 t, z
himr 0x80040002 0x22
: @* I. j% q( E5 t9 `himr 0x80040003 0x336 _* O. [' d- j
himr 0x80040004 0x44' l! e: E  h* u; u2 ~6 I# R
himr 0x80040005 0x55% s' ^' ~. k' B7 L
3 N2 C8 K1 ?& {  a* ~* t
SN也是类似。: ^! v7 \7 H) k6 c* G
- K8 X$ w, E0 f1 @3 h
现在主要是,谁告诉我们MAC和SN的地址?. J, B2 Y& W/ u& T! C, u3 E
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ h& D) L4 B6 G: i6 `一直想找到运程修改MAC和SN的办法,苦于无解啊
5 w; C0 V1 i/ W
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& l  L+ B  N5 T) N; k) b+ e. N" }  n5 l
修改的代码早有了。到今天不会编译。
  k" b$ J6 u8 F4 Y需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>! h8 q; h( ]$ I  l% x% w5 s
  2. #include <malloc.h>) x: D% F) Z" d) z  d" m
  3. #include <sys/types.h>" R8 E5 t4 j6 P
  4. #include <sys/stat.h>0 k0 }$ h) _2 a- t6 s/ w' i
  5. #include <sys/ioctl.h>
    3 h  Q( i3 J  S" W
  6. #include <stdio.h>4 P) r, R3 {7 ?+ B. [
  7. #include <string.h>
    ! [4 T$ {; a5 f. P+ t4 K  y; w! A

  8. 1 n8 C  U" e- ?  |! h8 Q1 y
  9. typedef struct {6 f2 l# O, z/ a0 c) c
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 H2 y: R, g6 v3 s
  11.         unsigned int        sub_addr_count;# s0 V% H. w8 C8 w1 s
  12.         unsigned char*        e2prom_cmd_data;0 ?/ e' d1 D4 U4 ^* s# ?
  13.         unsigned int        data_count;' Z" c: U1 j0 l- o; _
  14. } e2prom_s_cmd;, A2 M/ N8 W0 t
  15. 4 b+ ]" D4 I% e& y4 R+ L
  16. #define E2PROM_CMD_READ 1# `4 I) a$ h; o/ I. r
  17. #define E2PROM_CMD_WRITE 2
    ( X' h+ X" Y9 S; V3 _' z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 S6 B3 p# o/ r8 K0 w# e
  19. 3 i2 @% b2 L3 a: P& s* \) O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . n: V* w3 ]) V
  21. {
    / I7 g* V4 a& L
  22.         int fd, ret;9 q5 c3 z. o# G
  23.         e2prom_s_cmd arg;
    3 k" c2 j9 j4 A: _, m2 P
  24.         unsigned char buf[0x18];
    ) \  U+ F  W3 T0 w& j% w( h

  25. ; r: h7 L; ~/ M* H/ I/ M4 o! p5 b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% Z7 v0 T4 t6 J+ P
  27.         if (fd  < 0) {
    ' t3 ?) ~4 z1 |
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ v/ z  w' u9 E5 @6 ~# {
  29.                 return -1;+ R4 q8 ^' U0 w- Y
  30.         }: Z5 J1 y, v3 w" N, x/ J/ ?; H. z9 M8 c6 |
  31.         arg.sub_addr_count      = 2;3 t& Q/ m$ z/ C" l) N
  32.         arg.data_count          = 0x18;
    - [! w) d  P2 D" B- S5 E, i7 _
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + H  j0 O: c9 D9 b8 x/ Q
  34.         arg.e2prom_cmd_data     = buf;$ ?* x8 A  K( u) O  w1 N( r  J
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , \- p9 s8 Z) _& {$ a! k
  36.         if (ret != 0) {
      P4 y; Y# O' L/ M9 T2 E9 c3 r
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ( K6 l/ N2 U/ q7 k# {& v
  38.                 return -1;- O3 W9 q# ]/ e2 `/ W, \
  39.         }
    , e- S/ ?9 Z( o' U; k
  40.         memcpy(mac, buf, 6);' b; D  w' b- C0 s8 ~6 ?
  41.         memcpy(stbid, &buf[6], 18);3 i2 `1 l% {: X+ D6 i5 F
  42.         stbid[18] = '\0';3 R4 [' ^' F! \# g4 _
  43. : p  ?2 K8 t* N7 Z% L1 W
  44.         return 0;3 m2 a3 \' u, {, Y) s$ j
  45. }
    : E! D$ v+ a! K6 W
  46. % `" t) }! ~) j2 u+ b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' u+ E, L5 E" O) `
  48. {/ r8 j5 E: b" s+ H6 z
  49.         int fd, ret;
    - {' z" [8 O0 O7 _) u6 i4 q0 e; @4 o
  50.         e2prom_s_cmd arg;
    + n2 Y! I/ E, n3 O. f1 p5 s5 @2 M/ |6 ^
  51.         unsigned char buf[0x18];
    9 v4 w3 a& _! K

  52. , {9 \2 _6 n# B1 s( o
  53.         memcpy(buf, mac, 6);
    " _# g; g( r% v' S3 ?
  54.         memcpy(&buf[6], stbid, 18);
    ; \  x# T& s% A* y# V) w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 e; H( C" n0 G( B4 i' G
  56.         if (fd  < 0) {
    - P, {% y7 G3 }2 C! E. f, I! m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! U& O- q1 _9 f3 e6 n) P
  58.                 return -1;7 o' j4 m, s- o! B
  59.         }& ?/ f+ T/ o9 z  t* L
  60.         arg.sub_addr_count      = 2;7 D* ~, K" D$ H) E
  61.         arg.data_count          = 0x18;
    ) {, k/ D* n1 l" ?7 p8 U) I3 f
  62.         arg.e2prom_cmd_sub_addr = 0x290;! _# R0 T1 b; W% D2 u# l
  63.         arg.e2prom_cmd_data     = buf;7 c" _/ B, ]2 L# t! x8 d' K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 ]: K2 G0 c6 C" E0 k. M
  65.         if (ret != 0) {
    3 a3 B7 Q" @2 G$ D5 s
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) S2 o& N2 h1 y5 `  k" v
  67.                 return -1;
    7 K% d+ V* P; s
  68.         }
    - v# f) ^- s! D) _' i
  69. . D) N- A. {5 T5 V) z; L$ s
  70.         return 0;
    . H) a3 B5 S  t( O" p4 c$ g8 E0 \
  71. }
    + `1 X+ ^3 H: u' _8 n- d. k9 T
  72. - K+ ~  y  j; K& m
  73. int main()
      L+ X) ?" ^% D6 q! S  [: w
  74. {
    ' M4 B* H8 m% a) }
  75.         char c;' Z# v" Q: y% i1 X2 m; x4 r
  76.         int i, macs[6];+ {2 k; L; e  v+ b, S' e  ^
  77.         unsigned char mac[6];
    6 O  L# o0 W. w7 \4 V, |
  78.         unsigned char stbid[256];" I7 ?1 C4 l( V1 b" P+ `
  79. : f6 d% t1 z+ a. |
  80.         if (readparam(mac, stbid) < 0)" s. e, P, I7 \+ B( H) E0 G: I
  81.                 return 1;
    2 E0 Y" o5 s2 B: z# a; [* x

  82. . |: z- V0 l% e, T, R$ U: E
  83.         printf("Current parameters: \n");' y3 [/ [  r( H" u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 @6 ?/ ~: |/ Z" T! l
  85.         printf("  STBID: %s\n", stbid);7 u9 i/ e" Q; S/ _( W& P/ s) j+ {3 Z
  86.        
    0 c& Z5 }6 f. J* m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");' M8 A1 L0 t4 _# y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ `: e# G, n; e9 ?* ]1 P
  89.                 printf("Input MAC error\n");7 L2 Q" G, U7 [) x+ H
  90.                 return 1;
    3 `! B% g, x$ B' p  Z  q/ E4 ~
  91.         }" S9 y0 X  Y4 Z% Z) r2 {( I  W) E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 a' f# K/ G% D9 }3 }# |
  93.         printf("\nPlease input new STBID: ");& Y, g2 T/ \& w6 y4 I3 Y8 D- ?
  94.         scanf("%s", stbid);7 j! \' n6 y5 D. U5 p
  95.         if (strlen(stbid) != 18) {
    # Q9 v& ~5 ~6 G# ?$ |* M1 [
  96.                 printf("Invalid stbid\n");
    : F) }% K+ h  v1 ^5 n% |3 C. k$ V
  97.                 return 1;
    $ s' [; P8 Z) P6 k7 a
  98.         }
    : ]4 p2 [. s) [/ l# k( o; `
  99.         printf("\nNew parameters: \n");: w4 b2 J9 u3 C/ O2 a+ A/ p. `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ e: l2 f/ }5 u. B. ?
  101.         printf("  STBID: %s\n", stbid);$ a4 k6 j! L, S* W1 z1 q& {( o
  102. . L: y# {+ R( k$ I
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , Y8 _* r* A, @/ i) M. h- W& z9 V
  104.         for (;;) {
    - J' Y4 ^6 E+ A
  105.                 c = getchar();
    + \8 \! \/ f0 L% O6 X7 B
  106.                 if (c == 'y' || c == 'Y')
    ( L2 Z: w4 c% V3 _$ j: e
  107.                         break;9 v; f  S* j: Z7 u
  108.                 if (c == 'n' || c == 'N') {
    . ?& g# r1 G9 S) U* `2 Q$ z2 m0 ^/ U& N; v
  109.                         printf("\nAborted.\n");
    ( J% h9 n& d4 H+ a& X
  110.                         return 1;
    / N9 `/ R5 Z* Z0 n
  111.                 }
    3 |1 T9 r7 Z0 \( Q; Z4 q
  112.         }5 A. P& ~1 ~1 Z% N, ^7 _* ~
  113.         if (writeparam(mac, stbid) == 0) # ^, q) R% D- W9 L% K
  114.                 printf("Parameters changed.\n");
    % V) G0 a. R0 J* `  K4 V

  115. / z) [2 C2 M4 M1 h) n
  116.         return 0;" u! ~+ ?* P, C& E5 t( `
  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
/ h; O: o/ [. W+ r& C% i在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 J+ i  U4 Y' p7 `! V  `6 u
你用的编译命令行格式是什么?
6 O) c3 D7 x2 u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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