查看: 17635|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 d: q$ }3 A  P- k3 u( W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) e( U( n# w! L% U, W
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, z) A: k0 Y/ y$ i5 R! H- B8 Rusage: himr <address> <value>. sample: himr 0x80040000 0x0
# A1 \: E8 G" A$ _) ]/ l. I8 P' m& {1 U: d: g$ Q

/ Q! i2 q+ o' \' R. k不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" R% W9 {+ e% N. u( ?

0 z$ R5 j9 h* F5 C) I补充内容 (2012-3-8 09:42):
) r# g, S" y0 Zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
4 S/ q* J! C3 N( ?这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
& f  ?6 B7 i5 l7 h( X
+ q# m) j3 F/ G, [0 ?himr <address> <value>. sample: himr 0x80040000 0x0, A9 p# T; F& H" D5 G- ?
; {  @+ k" n' Q# M" |" l
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- k* n" a$ b. x, |5 ihimr 0x80040000 0x00
' ~( [# [( W9 r) @. j1 ~7 nhimr 0x80040001 0x11
) ~* J1 q7 U- r; m3 |himr 0x80040002 0x224 f/ f/ C! a) v. O9 A
himr 0x80040003 0x33
3 H# }! ?! L4 yhimr 0x80040004 0x44
4 ?. w3 }4 E% [4 Dhimr 0x80040005 0x55
1 Q$ C: w7 I3 ~1 A% y1 V. h
% t1 B( Y$ `, N! ASN也是类似。4 w' C# y! R9 H) @2 E* h

. k6 N; B9 c7 o9 X' a; |现在主要是,谁告诉我们MAC和SN的地址?- n1 m4 |  r5 e
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  o0 j- g8 J% r一直想找到运程修改MAC和SN的办法,苦于无解啊

* F3 Z, Q% I8 ?" x0 c5 O& ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 |, U9 C- v* E  L% p3 q% X
' _( }3 x- Y- o1 {7 r7 K0 M/ x( R* Q6 J修改的代码早有了。到今天不会编译。
! F; C! k" V) u/ e" s2 a+ M需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    6 M! c& b# G3 u# ~4 z
  2. #include <malloc.h>1 I+ f) u" y* j% `8 U2 D- W5 n
  3. #include <sys/types.h>
    . j. ~" M4 H; I
  4. #include <sys/stat.h>$ _; i' F; Z! y+ J/ r, z4 y+ q/ j
  5. #include <sys/ioctl.h>
    0 S  x+ T! a( l0 U5 x, B5 D9 t6 Z
  6. #include <stdio.h>
      @- V! z. [, D  d7 u7 `
  7. #include <string.h>
    - @6 v; ]5 C  E5 g& [( I, }
  8. 7 k' S5 P7 ~0 M# z- G
  9. typedef struct {
    ; l; l* u- a' B. w2 j# K
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) r) S- C7 k! [% z6 Y1 [0 \
  11.         unsigned int        sub_addr_count;* i, v4 A# e5 ]  ]; D0 U, {* n
  12.         unsigned char*        e2prom_cmd_data;) D. Y. Z. t, ?4 b2 P
  13.         unsigned int        data_count;
    # v, L, p# S' Z3 ^) U
  14. } e2prom_s_cmd;2 b8 ]3 a# I- i
  15. / z. m3 T+ S9 X) S" f5 a- D( x
  16. #define E2PROM_CMD_READ 10 V- q# u  M5 }5 u9 X+ f) ]  y$ ~$ C
  17. #define E2PROM_CMD_WRITE 2; Y  a. R' W* y& F3 X# D7 L' O: B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". S( @. j" k9 e# C* x  O7 |

  19. & U# d( Z) a" p4 A4 S6 Z8 \) w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! L3 `4 B2 N7 S
  21. {
    ! }$ H2 @- w0 X' I7 e5 L! l
  22.         int fd, ret;4 E- l4 e' Y' ]' Y. D9 {. x
  23.         e2prom_s_cmd arg;4 r4 W9 Z; ?  C7 Y
  24.         unsigned char buf[0x18];
    5 E7 C( X; N" |8 K& k

  25. , b& p7 ]* n2 n# D" `1 W1 \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( k9 I" _" z+ V8 b5 `! D
  27.         if (fd  < 0) {3 [1 I1 A7 y* b: x; a) w+ N# w
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ H% E* r% r$ U9 [! b) e
  29.                 return -1;
    # @3 a( ^; ^% W/ ~$ ]
  30.         }1 v8 w# m1 n! s4 Z1 q8 A5 E
  31.         arg.sub_addr_count      = 2;# m" k8 `) ]. T: ]& U
  32.         arg.data_count          = 0x18;8 y9 m0 i- d* h  B
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ C6 J# L+ A/ Q0 Y/ F
  34.         arg.e2prom_cmd_data     = buf;8 E4 n, V$ i6 q% F, m7 }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : O) V- r3 D% d4 c) i( O. o. I
  36.         if (ret != 0) {
    % r. v9 d# h  y3 \& S8 `# ]7 r
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ' c* d" u5 \6 [' Z
  38.                 return -1;, G, Y6 S# q$ J. q1 X
  39.         }
    ) Z+ G* w; ^) v
  40.         memcpy(mac, buf, 6);& i; C& |8 ?( B$ ^6 a+ Q4 D7 H
  41.         memcpy(stbid, &buf[6], 18);
      H* c. B$ A  ?& `# S5 j
  42.         stbid[18] = '\0';  N+ y- J$ B% Y% Q+ {
  43. 3 L+ p. B- ?3 E+ _
  44.         return 0;. G% q% U+ Q5 P8 A, |
  45. }9 V1 c2 E3 f8 J0 Z

  46. ' @0 R  Z/ M3 J+ P6 X' K: O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 h" L$ z3 C# Z2 E! A! S4 q
  48. {. Z( w& K  J. a
  49.         int fd, ret;& J* O5 T# y, S+ f, o7 g  a  K' r
  50.         e2prom_s_cmd arg;$ d1 D4 G# O( e- ?
  51.         unsigned char buf[0x18];
    6 {/ ]( N1 k" |$ {9 O4 h

  52. 6 m& R  a0 c) V* R) `* ?
  53.         memcpy(buf, mac, 6);
    , P$ j. L) X- e' |
  54.         memcpy(&buf[6], stbid, 18);
    - K5 I5 r( z) p$ F+ n& }
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# j! H4 n2 W0 r3 e
  56.         if (fd  < 0) {: k- h% i9 p: Z3 z# F/ p5 h( H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 N, u- F3 `. j8 {1 o& G- u/ s
  58.                 return -1;
    4 L4 p( s6 \! R. G
  59.         }1 f! `: q$ L/ S& b5 _
  60.         arg.sub_addr_count      = 2;
    4 ]  m$ a7 m) V( i3 \
  61.         arg.data_count          = 0x18;8 t( Y9 D/ U6 Q+ h! E1 O( I
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : h' d* X1 A# j& h3 _  Z0 {
  63.         arg.e2prom_cmd_data     = buf;2 |* Y! P$ t7 [. r7 n4 }9 @
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / a+ c. ~4 Y! S) @7 h" A. {6 j
  65.         if (ret != 0) {; n$ E) ~! P; b$ n: a" }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( E$ `) ]8 K5 }2 d
  67.                 return -1;
    / ^* L% y* ?( w0 x- n6 }0 K9 R* i* ]
  68.         }4 t; ?7 ]* z' v) h. ^1 j
  69. ' w4 R. t& d* R' p( k
  70.         return 0;
    * N8 I( ]! \+ e6 T0 Y
  71. }$ l1 \* p$ i4 C/ g6 u& g7 e1 ~: v
  72. " _5 T$ O' W. M: X) W
  73. int main()
    9 ?9 M& f+ n; v7 _
  74. {
    ( q2 p3 y0 [. B
  75.         char c;
    ; N" Q* p% |$ H, @2 f/ h$ F/ b. f4 P* d4 F
  76.         int i, macs[6];6 _* ~% X2 i6 _6 p9 S% K5 M4 L
  77.         unsigned char mac[6];
    ; s' q' P# V* Z( p+ i7 o! a. r
  78.         unsigned char stbid[256];
    - r6 g7 G% f+ l
  79. % {7 y4 q( b& P8 A& s  J% ]
  80.         if (readparam(mac, stbid) < 0)
    3 J" l- p; Y/ {& ~. o( A
  81.                 return 1;1 T: s7 ?, O, a3 M3 H$ S
  82. & z, l. k$ \+ s1 D$ X6 W  n4 {
  83.         printf("Current parameters: \n");3 W" ^: P7 [3 r! T$ E! B1 x8 d5 Z, q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      k5 J# ?) s- m2 Y5 q8 z2 X9 \4 T
  85.         printf("  STBID: %s\n", stbid);2 r/ o, L7 Y& m  J1 ?
  86.        
    3 o3 n( m. \2 X! A/ }" V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% b( M# A( i2 ^# W- _+ u6 \- q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) U1 c) d( p3 j; `3 l8 h& \; A
  89.                 printf("Input MAC error\n");) b" i; @6 e5 s% m) ]
  90.                 return 1;
    # f; k. y- A& J& ?9 V
  91.         }& j5 m. s/ J) _( M& G7 b" b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 t: j" j, F# N* d' {5 y) \) n' L
  93.         printf("\nPlease input new STBID: ");
    ! y$ M2 m/ H2 J* n* T; q3 t# L
  94.         scanf("%s", stbid);
    " T  O  y5 _: D  ~
  95.         if (strlen(stbid) != 18) {
    . V2 ^. t4 ~* i3 R
  96.                 printf("Invalid stbid\n");
    % {% o" `0 l2 a  Q  e
  97.                 return 1;, X& T- L  V: z, U% s; u- \
  98.         }# E! D- p8 @+ `( v" d' e* y# l
  99.         printf("\nNew parameters: \n");
    0 ~( ]. m& m' p- F& e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % w' h' L0 n2 H& y# h
  101.         printf("  STBID: %s\n", stbid);
    $ \9 c8 c( j% ~* N9 }# O
  102. - o! ]; R4 ]  S3 ^: G+ ?) h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " Z4 Y; |+ P9 Q8 m- ]* |8 c1 T
  104.         for (;;) {7 l+ t$ [+ a5 F
  105.                 c = getchar();: N& _- W/ U5 M! `+ u6 B% R
  106.                 if (c == 'y' || c == 'Y')
    % D' b5 `8 T' u- I3 F2 |
  107.                         break;
    ! w. R3 N$ F$ C3 ]9 x# d
  108.                 if (c == 'n' || c == 'N') {1 L9 e( B4 j5 Q4 T  L! I$ x) u
  109.                         printf("\nAborted.\n");4 ?8 X+ \0 [8 i% `5 u. @9 j
  110.                         return 1;
    + A- j6 ~5 s# k+ ?0 |9 L
  111.                 }
    7 F# Z' T& b6 T  H6 E0 i0 D( a4 U
  112.         }
    ' o# K* k& k8 Y  Y( H% z
  113.         if (writeparam(mac, stbid) == 0)   w1 ~% Q& b1 c+ S
  114.                 printf("Parameters changed.\n");; I. b: j  z  [) ^9 {' D6 T

  115. ! \/ j- ~6 |; W8 @; W
  116.         return 0;, @& b- u. i7 ^4 ^" I$ P" Q
  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
3 f" Z6 O: x$ O( ^在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( k" j7 U: @9 Z! W8 L+ }
你用的编译命令行格式是什么?
' X  O  b2 p4 n! j' A. K4 D# a
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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