查看: 16379|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 q! A. X( j; W+ {. q$ s. l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ ^  M1 `7 P* W/ Z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! }1 ?" i7 c2 G0 Tusage: himr <address> <value>. sample: himr 0x80040000 0x0
/ A$ m  L7 H1 y& y" u3 }
& L3 D' ~6 a: h, b7 T6 S5 o- X- @8 K8 r$ J. f
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  a0 k" |. p& {, f
1 \0 ]9 ^  B6 ^1 b4 j* m补充内容 (2012-3-8 09:42):# Z4 I# @0 U: Z0 `0 J
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 B5 E# L+ o" r! a6 a% u
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ w2 @% u( ?6 t' j; e/ |0 G' p

1 J% J& `+ \2 Uhimr <address> <value>. sample: himr 0x80040000 0x0
8 u! k9 |! ~  ^' D3 y2 u
/ \$ l. d5 s$ I& W4 [例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 z' d4 I' J* H& Z# S
himr 0x80040000 0x00
( m' m  z6 W' {; Q; ], n0 @# bhimr 0x80040001 0x11
6 q+ P* |6 T2 h/ Q7 Qhimr 0x80040002 0x22
. h, X, B  |5 h3 p, Phimr 0x80040003 0x33* ]1 G. k. C2 [# U  K; }  S
himr 0x80040004 0x44
' \2 D) T. \  t! e* Lhimr 0x80040005 0x55
1 J9 k/ x( z7 n7 ?1 J3 N/ K0 u/ ^3 D0 e; \: M/ q8 P; M  F. f5 V* {
SN也是类似。3 J, V1 i0 {0 n( [( J- @- F' J

  S8 [5 T7 a. r8 r: {! K7 ?现在主要是,谁告诉我们MAC和SN的地址?
6 v: W1 g$ r- O8 G# T: c3 C/ [
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& ]6 G* _* t7 x! g; M$ I9 I, }一直想找到运程修改MAC和SN的办法,苦于无解啊

/ O8 C' }+ T( c! j' j6 a9 k源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: Z& K9 E4 l4 A9 H5 k5 }6 i8 h0 u
* j# A7 [  F! z, U2 |, O8 p修改的代码早有了。到今天不会编译。) {% n' c* j7 @& j0 }. u' G
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # Z6 M* c6 i" n+ t
  2. #include <malloc.h>
    5 D7 {0 r# o3 |* w" ?* d
  3. #include <sys/types.h>
    4 e/ X$ o% K% H# W: N) J
  4. #include <sys/stat.h>1 a% a: j" R+ L' v& ~7 ~
  5. #include <sys/ioctl.h>. L. M1 D8 T  G/ m
  6. #include <stdio.h>. W2 Z7 \  ]" Z& c
  7. #include <string.h>5 A4 b: L6 v+ y& P/ X( U! l+ Y
  8. 5 W. j4 v0 x5 E$ ^, B/ g/ f0 |
  9. typedef struct {& i+ f+ f( u. W. v# j9 g1 e
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) C- K9 P  N; `, J+ F9 w
  11.         unsigned int        sub_addr_count;
    / R; V5 a+ w1 I" s
  12.         unsigned char*        e2prom_cmd_data;; g  k* ?) B# ^+ p
  13.         unsigned int        data_count;, A: M# \0 L8 e1 [4 r
  14. } e2prom_s_cmd;
    7 X; E5 U/ S6 {* G

  15. + {1 C7 I7 y0 v7 z8 Y) c2 \
  16. #define E2PROM_CMD_READ 13 ?+ f6 b* W4 v& X- _8 I& {1 s
  17. #define E2PROM_CMD_WRITE 2& z5 f. N4 ^8 @9 ]/ H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( f% v8 k6 w6 v. `/ R4 r/ V8 h
  19. 8 L/ k( g/ l* d4 A1 ?+ Z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + g' t7 x. L+ e! ~4 S# G" m
  21. {3 D$ f1 o! L" X8 E4 `
  22.         int fd, ret;
    + J, C" ~) t- H& Q
  23.         e2prom_s_cmd arg;
    + A8 b9 q( A1 O9 Y; D2 }( p
  24.         unsigned char buf[0x18];" n8 ]; b& L- o

  25. . ^5 O- }( n# U' C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 v" E, s  O: W  p$ a/ \; C) v
  27.         if (fd  < 0) {0 N6 B6 |5 J% I6 B5 N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. m$ R7 }3 g- S4 O: |8 i
  29.                 return -1;
    + b, k& j1 y) d  x% D5 d* t
  30.         }
    ) C. s' L$ z! L
  31.         arg.sub_addr_count      = 2;
    0 e( p0 q0 _: e6 [3 O! u
  32.         arg.data_count          = 0x18;4 V  ]5 I3 `, S3 T
  33.         arg.e2prom_cmd_sub_addr = 0x290;* w/ Q, a+ Y6 p% Q/ r1 _
  34.         arg.e2prom_cmd_data     = buf;
    0 E! U1 E, A5 s1 L, W% A. R' W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 |# b7 E7 i9 O0 f) P5 E  Z
  36.         if (ret != 0) {
    & h1 I8 N8 a2 Z& l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 F/ w: l8 z) h- M' v" K6 ~
  38.                 return -1;
    / Z7 E" O! Q# ~: P% l7 a' |8 R' h: D% K
  39.         }4 j3 R- E2 V) B( |
  40.         memcpy(mac, buf, 6);" n  C, T% }+ V2 n( f8 N
  41.         memcpy(stbid, &buf[6], 18);
    ( l6 l/ g7 b' ^* k* u- i$ [
  42.         stbid[18] = '\0';
    2 L+ i0 q+ t* i8 z' i  A2 Z
  43. . u( c0 [* O7 g
  44.         return 0;
    , m5 u$ L5 o5 o: {/ p# d2 p
  45. }9 B; x, h1 c; h1 w/ o

  46. 7 b6 C( O9 F' n+ ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 \- E& ?& w8 Q  T0 O- _5 ?
  48. {# r2 @2 p; y! F9 k0 z; q6 {  T
  49.         int fd, ret;
    " \8 S, |; E7 }& I7 v9 a
  50.         e2prom_s_cmd arg;7 e5 P% y6 D2 L) K& L
  51.         unsigned char buf[0x18];: ?' Z0 j2 a9 l; Z# o7 d
  52. " z8 O) e! D1 t) s+ d
  53.         memcpy(buf, mac, 6);
    ( ]* s) e6 v( W' u. ~1 C
  54.         memcpy(&buf[6], stbid, 18);5 F7 a4 N9 ]' f+ |& P# @
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : }" d2 Y$ [( K& d6 M
  56.         if (fd  < 0) {( E9 U  D& ?6 C" i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# c. x! u, g. k% O
  58.                 return -1;
    # N& h/ w5 A$ Q- x4 p, @/ Z0 z
  59.         }
    9 x& y% y) F# m" H- u
  60.         arg.sub_addr_count      = 2;* a4 I- I- V( E7 _
  61.         arg.data_count          = 0x18;
    , P0 G. E3 m3 m+ l: Z/ g7 W
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 R" ^( {1 c; a* y4 V/ q( {" ?9 X
  63.         arg.e2prom_cmd_data     = buf;! ~4 {+ m) e5 c7 v' R
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 v% Q$ y( {/ K
  65.         if (ret != 0) {$ A1 o) h* h5 J0 ]9 u1 e
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" I& Q; d# M1 F" l3 O' e8 b& Y
  67.                 return -1;; g7 W6 c3 Z* D3 Q
  68.         }
    & c* n1 t; w: R1 ], [
  69. ) N7 X8 s6 `# @" f5 F  H1 D" E
  70.         return 0;
    ( f: [3 e' N- E# z8 j+ y. l% C3 j
  71. }" y9 `6 k9 v4 [

  72. 7 x6 @5 u: W7 J
  73. int main()
    ; M) G, n0 _2 C1 l$ ?: V
  74. {' t2 P: g6 t: @: ~9 B
  75.         char c;$ m' Z; s$ \. k$ I1 j; B' x
  76.         int i, macs[6];
    , T7 S+ @/ `6 `$ I1 \' S
  77.         unsigned char mac[6];
    * [( l7 j  l  B; k3 j$ V  `
  78.         unsigned char stbid[256];  I% x$ e$ ]. c& q: \* p2 [
  79. / e7 b  v& C  m2 g
  80.         if (readparam(mac, stbid) < 0)3 I# G; s8 g# j& ^: ~1 @' ]
  81.                 return 1;
    , D: a( x* S0 ]3 Y1 }/ J6 {/ e

  82. / j; C* }+ [; z+ G3 p
  83.         printf("Current parameters: \n");
    ! T- x5 ], \$ }* L9 `
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + z% ]1 M, @1 v. t
  85.         printf("  STBID: %s\n", stbid);
    : J% o: m, y8 z  h
  86.        
    ) }$ Y# ~/ H" S& D! h1 }( L2 ^
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 i9 }! _: b. U( z% j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & r& |  O8 C! @/ p' _+ `! R
  89.                 printf("Input MAC error\n");
    . ]* }( k) r2 P6 y5 X, G
  90.                 return 1;
    5 a; B5 X4 Q9 W6 P+ |' D
  91.         }0 ^# d: U3 K* ~# [4 S: a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . d, C5 x! T' g
  93.         printf("\nPlease input new STBID: ");
      @+ y. P, h2 I  L
  94.         scanf("%s", stbid);& Q1 h: ~5 N6 f. q3 x
  95.         if (strlen(stbid) != 18) {
    8 D6 A& m: ]; ?) ~
  96.                 printf("Invalid stbid\n");; ?; H; C  r3 `- B5 f5 b2 N
  97.                 return 1;
    ' Z; |6 F, s" D
  98.         }
    ; K1 z4 R: N( c2 i$ k# n# l
  99.         printf("\nNew parameters: \n");
    ( e) T% {2 c0 S" Q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ z  j( o) X2 X( H" K
  101.         printf("  STBID: %s\n", stbid);7 }3 f, r: _' T2 z

  102.   \9 a1 [, U  A$ }  _: _
  103.         printf("\nDo you want to change paramemters? (y/N) ");: _( @) X) n' A2 d
  104.         for (;;) {
    % D, R9 |: _3 ~. W, D7 D: Z- F
  105.                 c = getchar();1 W# ~2 L/ B5 g6 a
  106.                 if (c == 'y' || c == 'Y')
      c% M; R+ E, e
  107.                         break;
    $ }( W6 ?* y2 E" N" j/ k! y" k
  108.                 if (c == 'n' || c == 'N') {8 ]! B3 w& @/ D, F, G" ^/ W3 |9 G. o
  109.                         printf("\nAborted.\n");; ^& e6 E7 e$ u$ ]
  110.                         return 1;
    + |% {: `# j& K
  111.                 }
    " o0 d* k0 N4 U# U4 B5 ~6 z& J
  112.         }
    ! y$ k& \  K2 u2 o" R0 E+ k
  113.         if (writeparam(mac, stbid) == 0)
    & k* i3 O* Q/ h& g  |
  114.                 printf("Parameters changed.\n");) v% \2 t* y9 D/ [
  115. # s6 W0 s, f) H# j2 C  F8 T
  116.         return 0;
    ( F; ?3 R. U8 T' a, v3 G: Z
  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 , G' ^+ k$ ]" R& y+ a
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ P) p8 s3 Q) \( H% C
你用的编译命令行格式是什么?
4 |: E3 v. L. |( K0 H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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