查看: 16397|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 y8 Q; b5 |' J& e4 f0 O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # I+ P0 Y; K4 V# F' P* Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  y4 z- ^, ?) S- x8 w/ `& n9 u
usage: himr <address> <value>. sample: himr 0x80040000 0x0
8 V/ g4 P& K6 b) s- v# I' _9 p" Z" K$ F* e, V
  j' }! B3 ~0 A& s  ]) \
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& ?0 r8 P0 h- I8 F

0 {  L; c% {& y8 f8 |补充内容 (2012-3-8 09:42):# e) Y1 n' L5 E& N
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, G* k( R+ Z2 n- m, d7 @6 v5 U  U这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。3 z6 o# I7 T% p# ~' g# h3 C0 K+ ]5 ~

7 }7 Z9 `6 p6 {) Dhimr <address> <value>. sample: himr 0x80040000 0x07 E) ]+ r3 }( G' k' F

1 H+ Y: B0 L# ?例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) u3 |* @  P( Z, M
himr 0x80040000 0x00
0 t3 }6 J" n4 A& G* nhimr 0x80040001 0x11
2 R9 f6 ?# r1 @1 Whimr 0x80040002 0x222 O  x# {- L2 U3 F3 r8 Q( p- @
himr 0x80040003 0x33
$ h, M5 X  E. O9 uhimr 0x80040004 0x44" _0 ]/ }6 f6 v. [, C2 c: U( `6 P
himr 0x80040005 0x55
  U0 I7 c8 \# f/ E
9 ]! n: R2 v2 l" E, {7 ASN也是类似。2 x1 N* ~7 S0 R! e" v; D& T
' _1 H7 r; e0 h2 L6 g; M$ m
现在主要是,谁告诉我们MAC和SN的地址?1 h* ]- d; ?" x% O
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 5 y% `; G2 C  n3 ?, }
一直想找到运程修改MAC和SN的办法,苦于无解啊
4 \& w' ^! @6 A, w% L+ {
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . v2 B5 {* X- o5 s" L: _

+ X: P7 A8 Y3 R& E5 p! [, N+ G修改的代码早有了。到今天不会编译。+ g6 v' x8 K6 l0 d
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    : p! `: z7 D" O! H: q
  2. #include <malloc.h>/ h) _6 `* X$ }( T) b4 \2 S
  3. #include <sys/types.h>& ]( y& N, T0 @1 b$ t* Q. w; r
  4. #include <sys/stat.h>3 {8 q1 v. U/ Y! W2 F7 c/ q
  5. #include <sys/ioctl.h>
    & P8 C+ ^( J5 l0 x  Q% n
  6. #include <stdio.h>
    6 S) u9 h3 f9 w2 M; }
  7. #include <string.h>
    / A. k+ O. ?( Z' E! k  G
  8. " O+ ?6 ?6 D$ P1 C) o
  9. typedef struct {3 r/ O5 S9 U" j0 j/ f2 H
  10.         unsigned int        e2prom_cmd_sub_addr;0 P5 ]* f) _0 T$ z% M. Z
  11.         unsigned int        sub_addr_count;/ j6 K! j( h. A. Y
  12.         unsigned char*        e2prom_cmd_data;: [; P6 G- O; g" K+ N. O% O' u- p
  13.         unsigned int        data_count;, C, `7 m6 k& Z& r' s/ o
  14. } e2prom_s_cmd;
    & E, S; Z4 |4 ^
  15. / c* {5 Z0 e. ^1 I+ B+ m
  16. #define E2PROM_CMD_READ 1
    ( l7 `- B$ f: @- \
  17. #define E2PROM_CMD_WRITE 2# n, f8 H. T+ z+ d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 T9 L# ~/ j) j% N
  19. 5 [& v: |" h7 T. d( B( p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 y" q0 x) U$ h- P  r# @
  21. {
    , M& r6 P8 v/ V% h3 z* O! i
  22.         int fd, ret;
    5 p1 E! V* b! `- g7 j7 l2 X
  23.         e2prom_s_cmd arg;% F% s. e  @! n/ H( Z2 b/ Z7 |
  24.         unsigned char buf[0x18];, ^: i0 s/ t4 o0 k# X% d+ `
  25. # p% K" \$ e1 e/ q% P, J3 G
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % l( f$ g" c( ?7 b
  27.         if (fd  < 0) {
      F; }8 A4 b) X# s7 S# n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ y& y' d% c3 f$ S: \3 v
  29.                 return -1;
      W4 j6 J/ `; x) `8 j/ P/ K
  30.         }$ }- J9 T7 X/ [  r, a! l
  31.         arg.sub_addr_count      = 2;  E" W3 o4 J2 P: q& k4 ^3 T
  32.         arg.data_count          = 0x18;
    9 m: o5 q6 u5 X( k3 ]* o7 K' W
  33.         arg.e2prom_cmd_sub_addr = 0x290;; L" K. w: E2 g* b* T2 L  w# u
  34.         arg.e2prom_cmd_data     = buf;
    - @* G- \: q# ~" b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- J& u3 p( w& B' w/ o3 \
  36.         if (ret != 0) {& \0 i  S  r2 h1 d+ N
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( ^! c' P" }  B1 Z5 q  P- k! X3 {
  38.                 return -1;
    ) K* |9 k0 t- w  N) H
  39.         }
    * Y) C' ]. P8 H& f
  40.         memcpy(mac, buf, 6);/ W0 v1 j8 ?9 C% E* o
  41.         memcpy(stbid, &buf[6], 18);7 _3 E$ H% O7 y* M1 f, `* V% S3 t
  42.         stbid[18] = '\0';
    ) r& C# Q" l" [

  43. + G) b6 y  b0 ]' a! O5 C# Q
  44.         return 0;
    * l! }0 U- \6 C: }5 L; ^  M7 N
  45. }
    # T' T; `8 M" D  R( k
  46. 0 _9 ], X9 s3 Q4 O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( l1 P. |9 ]/ W+ l, X# o# P
  48. {
    5 b3 o: F8 B/ X9 _& N( g
  49.         int fd, ret;( R. z: \, Q4 B$ Z% m, v
  50.         e2prom_s_cmd arg;6 a0 X9 S* b% H( B/ x: ?' c* r, ?! p
  51.         unsigned char buf[0x18];
      `. P3 V" {& E; n) k3 B

  52.   c2 [; ?! \6 Y
  53.         memcpy(buf, mac, 6);
    & u6 T+ c7 r3 [
  54.         memcpy(&buf[6], stbid, 18);
    & h; [/ E: u# P0 c; c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! y4 y7 p1 o0 G! I0 b
  56.         if (fd  < 0) {
    7 V0 T: c) v! o# M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& v" |1 U! W! w( R
  58.                 return -1;
    5 x4 v8 D0 v0 y3 O3 e
  59.         }
    / j, |; H  V6 t: ]/ F
  60.         arg.sub_addr_count      = 2;
    ! l. X* {. Z) x& X+ m  x. |
  61.         arg.data_count          = 0x18;
    7 c9 x4 ]) ?! Y7 ^
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # d" K3 \# x' E4 E' `/ L! [" E3 {
  63.         arg.e2prom_cmd_data     = buf;! D- R! u. O/ f1 k5 \
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& X3 z5 T9 C1 Z$ u
  65.         if (ret != 0) {: L# a0 J5 P' y. L$ H7 q, L
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- q( ]3 x& V) h% z' X2 n$ `
  67.                 return -1;1 u* ~9 \8 i& R
  68.         }1 s9 u  g( J. ^$ e: H; X

  69. 8 u& t0 k3 h( \6 X% @0 }& I
  70.         return 0;
    - z7 V! H' M; w
  71. }0 L: f4 H% |! C& [+ L) K/ K' S
  72. 1 |) `  j( E- a! [! S
  73. int main()
    , w% c& p+ H) R4 c
  74. {8 i6 y1 x# A* M" F4 i4 [; ^8 m
  75.         char c;- P" O" q. W) ]+ {: @- h3 b( q% p
  76.         int i, macs[6];
    8 J+ |; r1 a4 g' L
  77.         unsigned char mac[6];$ j% ?0 \$ w( {
  78.         unsigned char stbid[256];3 ?) K, r2 a. _+ w- |1 y9 Q9 ?

  79. 0 d+ {& j1 U# l1 x2 v, L9 d
  80.         if (readparam(mac, stbid) < 0)
    7 I) I2 J% S; x- a  n- L- O& o
  81.                 return 1;
    8 j2 G& w- c' S) `; M) u

  82. . E* m/ {$ {' N1 n3 q! B* I
  83.         printf("Current parameters: \n");
    ; M& ?# q, {+ o+ Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' m6 |6 r6 E. q* ^2 I0 j2 U
  85.         printf("  STBID: %s\n", stbid);
    : W; ?: d0 ^- Z7 ?
  86.        
    4 i4 m) o$ [8 J9 Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    $ _$ C) w! ~. P5 A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 S7 g5 _9 l7 X2 u/ \+ ~, c1 o
  89.                 printf("Input MAC error\n");2 {  B2 v" y1 S% ]* X9 B
  90.                 return 1;4 a1 _6 f) _/ s; G. O6 L
  91.         }) k$ e8 e- I& T- T$ c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( ?9 i$ F9 X% f. D
  93.         printf("\nPlease input new STBID: ");  ]3 o0 z8 t% D
  94.         scanf("%s", stbid);
    8 o! p& w; y" [" a' c# y
  95.         if (strlen(stbid) != 18) {% J) v. B0 K1 _+ s4 [7 G+ u( A+ o
  96.                 printf("Invalid stbid\n");
    & n9 ?5 K  d5 d! i# G8 ^5 e
  97.                 return 1;
    4 }/ |# E+ j! B+ {! ^8 O# u
  98.         }
    8 R9 p1 m& A2 }) d, j, o
  99.         printf("\nNew parameters: \n");+ }# z+ m/ J" @" p: @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + |# c* z: {7 f  W+ I/ B; I8 g
  101.         printf("  STBID: %s\n", stbid);% {% L( Z+ _" i, \0 T* f5 ]+ Y: @; K

  102. ' ~$ c6 Y8 W# ]7 n: F
  103.         printf("\nDo you want to change paramemters? (y/N) ");( F1 O6 o& v7 D# h# ?
  104.         for (;;) {, K2 J4 f" ^* Y/ i4 {  A$ `% S
  105.                 c = getchar();: S- V4 G/ e/ k% j- b
  106.                 if (c == 'y' || c == 'Y')
    * |+ I0 q- O9 E% e( U" v5 Z
  107.                         break;
      G% V% K; Y3 @2 @& s
  108.                 if (c == 'n' || c == 'N') {
    1 t) `1 Q8 T" d" E' f' b$ N
  109.                         printf("\nAborted.\n");1 h6 s# e" g, g, o1 X% @
  110.                         return 1;% h0 g4 B# Z9 Z
  111.                 }
    7 N* T6 B5 k# M( Z2 {% y  z
  112.         }
    ; j' P) G* h4 P6 M
  113.         if (writeparam(mac, stbid) == 0) 6 B- [$ Y0 G% {  ]7 |4 c5 @0 h
  114.                 printf("Parameters changed.\n");' T7 h" v7 J9 p- x* T9 y" L8 Q/ i
  115. 4 y4 }$ k7 W/ w- a! N4 e) o; z1 j7 o
  116.         return 0;
    & x  B7 h7 s) ]& A7 Q" U
  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
* i6 {( k. u4 }' F) P1 \3 w- S! b# d在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* o, T) ]4 p0 e
你用的编译命令行格式是什么?2 H0 Z' e5 N* }4 E& d5 d
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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