查看: 17490|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; d8 H- s5 ]. m' Y7 V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ V8 N4 N. z- |+ |- h& v9 m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. `' A  E6 G9 W6 _+ A& E. N
usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 T- X" u$ Z# s) ]" a3 N
- e, @5 E$ ~8 e2 |$ a$ ~% s5 E/ f$ ]( y' [& j/ g/ Q
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ y( K# U# O4 t* T/ u( Q& C

# [% i' R, l6 e1 G补充内容 (2012-3-8 09:42):
' @) r  C; \$ }6 M. {8 |http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% J/ g* c( i9 C
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
' r: m3 Q; O$ v- }8 q: @8 q0 ]. U! \
himr <address> <value>. sample: himr 0x80040000 0x0" v1 y, W5 J0 L+ C8 I

$ D' G$ {( N& B例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' d, a! A- z$ m& E. Uhimr 0x80040000 0x00
2 i6 H: x7 {! l; ^" mhimr 0x80040001 0x113 n  w% `' Z6 J# I
himr 0x80040002 0x22
: r( \# q4 i7 dhimr 0x80040003 0x33
8 Y9 n0 L! x( }- c1 M" vhimr 0x80040004 0x44. m& w+ v( ]) ?( C% K9 q0 n
himr 0x80040005 0x55
  _! c1 k, v+ N7 ~1 v' u; [5 F. l$ A+ A0 p% S+ \4 {
SN也是类似。9 f7 V4 F; f, s7 r/ R5 ^' Z
* N9 g6 M+ M. Z; T
现在主要是,谁告诉我们MAC和SN的地址?
: G  L0 x0 G, b$ t
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ g. N$ ]7 s  J: x- j一直想找到运程修改MAC和SN的办法,苦于无解啊
7 A& C7 S  S1 p3 c
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : e' }- |) w' Q: ?

. d  L! Y2 Q: m' O; ^修改的代码早有了。到今天不会编译。* {$ E. e  l! _' X. ~7 ]- i- @3 g/ r
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 l5 J$ b6 P3 }+ d8 U! k/ _
  2. #include <malloc.h>
    5 Z; o' ^. u/ |5 F1 T4 y
  3. #include <sys/types.h>
    . j: F8 D7 W+ ?) _7 N% _" h# y: X
  4. #include <sys/stat.h>
    - c/ g& a% E1 p4 _* e
  5. #include <sys/ioctl.h>  {! m( g( Q& S8 m3 y: ?
  6. #include <stdio.h>7 v3 J2 Z- |$ B8 k
  7. #include <string.h>. L( L) ~! J/ T$ F

  8. - `9 D/ `9 e+ c. U2 G3 q
  9. typedef struct {
    3 A- c6 b/ s4 z% c/ ?
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 Q* s& I4 n. v: v& _
  11.         unsigned int        sub_addr_count;
    ) F/ l, ]* ]; g4 |+ t9 {0 g6 _
  12.         unsigned char*        e2prom_cmd_data;
    ( z/ G7 }7 ]1 e# D9 n; A! t" g
  13.         unsigned int        data_count;5 B& x1 L% ?0 u" E. E
  14. } e2prom_s_cmd;6 _, `  l, M  `5 h

  15. 5 y. |* Q3 m* V7 {. R) T
  16. #define E2PROM_CMD_READ 1/ o5 X2 J- T$ s1 S8 [) `, J
  17. #define E2PROM_CMD_WRITE 2
    5 Z# c7 F- m1 P% S, }6 h" }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 L% e1 H9 }" ~- f6 H& Z
  19. 5 j+ K3 ~+ m# X8 i8 @
  20. static int readparam(unsigned char *mac, unsigned char *stbid); X* o- D& ~7 h! E/ G: Y& w0 B
  21. {2 o( h; m5 J9 G2 M
  22.         int fd, ret;) T$ J; u0 E8 e# g
  23.         e2prom_s_cmd arg;
    / z4 }3 P$ K/ s) C3 Y
  24.         unsigned char buf[0x18];( l9 L9 g) o8 ^6 Z4 f2 w

  25. & G( [" O& x5 S( D4 S
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ Z2 k1 a, F& r9 t- ~! a* Z' `. g
  27.         if (fd  < 0) {; e5 J/ H7 @: u. K; h* b. x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; @  p" I& f5 e
  29.                 return -1;' R% }6 \/ r6 Z
  30.         }
    ) h& O/ g. Y% Q  m( w
  31.         arg.sub_addr_count      = 2;
    7 r- g- R3 k" ~7 |7 R- q" E6 d. L
  32.         arg.data_count          = 0x18;
    ( \: v& n' f) B* b
  33.         arg.e2prom_cmd_sub_addr = 0x290;" N+ L$ J" G$ {5 ~
  34.         arg.e2prom_cmd_data     = buf;" |. ^/ A: a; N; W  S9 }% l/ I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 G5 v- Z$ h( S' @. A
  36.         if (ret != 0) {
    7 @! `& j# e; v* J5 p" S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 s7 q6 _9 A2 i% e8 E
  38.                 return -1;
    $ e0 `, W/ S0 c" M
  39.         }
    8 n5 q6 E6 w$ F' k+ m
  40.         memcpy(mac, buf, 6);( ]: }! A% s! u2 n+ W& T
  41.         memcpy(stbid, &buf[6], 18);/ [& o# w4 a4 m7 T( J+ _" h
  42.         stbid[18] = '\0';
    ; c% ~7 I7 Q* A7 E  h% t

  43. ; p; `/ n, A9 l! r
  44.         return 0;% O  Z. ~: c8 s' i  Y
  45. }
    : [4 M" s  w8 m1 R; \3 v+ g6 [

  46. ! J% t8 D# a- u$ |, [# J
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 G5 x# v8 P  a2 r) U
  48. {
    % z7 b! f2 z. p
  49.         int fd, ret;8 M# K2 O& K4 i/ Z: @; {+ t$ d
  50.         e2prom_s_cmd arg;
    1 K8 M* t; t4 a# M& F, \8 v& O
  51.         unsigned char buf[0x18];! V0 @# e1 B" b" h- Z6 V

  52. % w: g4 t5 ?4 K2 d) J! t
  53.         memcpy(buf, mac, 6);. @% z7 S* ~. J1 i: t/ B
  54.         memcpy(&buf[6], stbid, 18);' @  q  r$ j1 a- l) ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 I- w4 O$ A: \2 ?4 y
  56.         if (fd  < 0) {' ~9 e; r+ }4 C: e" T% m- p6 X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 t- m! p5 u& i% \2 L. I/ Q
  58.                 return -1;
    3 |! J4 \) N  x7 K4 y0 X  W2 u- h
  59.         }
    5 N2 f3 T' [  M) \- S
  60.         arg.sub_addr_count      = 2;) h2 p3 \1 M' b- p5 ~3 E4 @
  61.         arg.data_count          = 0x18;" u0 J% I: I- t3 c/ {$ \
  62.         arg.e2prom_cmd_sub_addr = 0x290;2 t0 t$ {2 P4 Q3 P& i- Y1 Q
  63.         arg.e2prom_cmd_data     = buf;( f& P) n- F" y1 q7 X2 u8 N
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; h0 K3 }" u: P, z. ]3 Y' ]% w
  65.         if (ret != 0) {
      V5 {1 ^3 m/ H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( ?' m- Q- p. |! @
  67.                 return -1;  F% P1 z& t* V& a6 G' t/ v
  68.         }+ o) C( A2 K6 L. c4 o- w- N; |
  69. ' M/ @# F0 @& N* A/ D! j
  70.         return 0;
    & j+ X1 E: G' N5 l+ [
  71. }
    4 I! D; F# K0 d

  72. , s; }3 e. ]: a9 F8 e' _, r3 x
  73. int main()- l& |/ G  V0 n8 m8 X& `
  74. {
    ; a8 P+ z+ o# Z4 v8 B! F
  75.         char c;
    0 b3 u, R; ~9 V% D8 J8 j
  76.         int i, macs[6];% `& ]7 o+ J# I. V8 ~: _, `
  77.         unsigned char mac[6];
    & P8 T9 J# J  q
  78.         unsigned char stbid[256];
    ; O2 I5 V- X2 z+ C6 q' d8 o6 h/ P

  79. ( q  J% b. S  H4 j9 U0 `$ \
  80.         if (readparam(mac, stbid) < 0)
    ! m' ?) z* z7 k" l" d
  81.                 return 1;# t0 r! O1 Q! Y
  82. - X) z( z, U/ w
  83.         printf("Current parameters: \n");  `! m7 l/ [6 Y: n! o% l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" R! ~, E6 c4 m: L& L
  85.         printf("  STBID: %s\n", stbid);0 ^# _% K+ j0 f) p7 C
  86.        
    " M% B4 Q. W' A' H" _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 c: ]9 M4 S8 r2 s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {/ C3 ^  y( r4 x9 ^
  89.                 printf("Input MAC error\n");7 s' L' a! P5 `: \6 V5 i! U
  90.                 return 1;
    ! p/ j) @  n* h! [( P
  91.         }
    + q' r; d& Z( C. z! O# |: b5 Z+ s
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    / E1 T: M1 f' o8 B; Q
  93.         printf("\nPlease input new STBID: ");) O3 R3 O" ~8 u: y$ q$ h( B$ w
  94.         scanf("%s", stbid);
    0 I1 `- R% x* S( O6 y
  95.         if (strlen(stbid) != 18) {
    ! G- I$ f; t, s! p" e- C
  96.                 printf("Invalid stbid\n");
    6 F$ u2 W% c4 s; G4 g: K3 S; ?2 I
  97.                 return 1;" ^, p, Z# x: X9 Z$ Q3 M1 }
  98.         }9 z4 G: u" e8 A
  99.         printf("\nNew parameters: \n");% e0 s8 ^" Z3 ]" \- S$ j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : W- S( K/ z" F* ~' y
  101.         printf("  STBID: %s\n", stbid);
    5 E2 e" V. J& P5 Z. p% b: G2 L+ w. `. N
  102. - b8 b. B/ T/ V0 ~: n  b% F" c
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 e; z5 x8 ^$ U: G
  104.         for (;;) {0 e  G( g5 S2 \1 }3 _
  105.                 c = getchar();; z( J- s1 D" h( j6 ?# D' E6 s
  106.                 if (c == 'y' || c == 'Y')
    $ g3 _" D% b. u# D6 [5 g& C- H
  107.                         break;
    * U; F* F8 e, I: k; E7 P
  108.                 if (c == 'n' || c == 'N') {
    $ ?, c1 U  w3 l% Y  D7 F
  109.                         printf("\nAborted.\n");4 F, G% p8 j- _, z/ u  s
  110.                         return 1;
    6 n" K5 D3 T$ e3 }1 y3 m% q4 t" B, p
  111.                 }( i# V$ F5 m6 j3 }8 W2 ^# q5 `$ @
  112.         }! M# O: f" l: j6 W+ T4 i4 L
  113.         if (writeparam(mac, stbid) == 0)
    ( n$ _5 ]& [* _3 M' X4 M; ]
  114.                 printf("Parameters changed.\n");
    7 H: z5 w( J: w7 ^6 T

  115. 6 ^0 I+ j& L1 ^; u( B1 y
  116.         return 0;  H! U0 B0 t9 e. b8 K2 l/ [9 |3 t$ 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
( b3 N% a6 |; U: A在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# u0 E$ M* Q. ]4 D7 k# n你用的编译命令行格式是什么?
" |7 Y7 x0 ^% V6 d) M4 n3 P9 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客服返回顶部