查看: 16743|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    % O0 j! u# T) }- y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 ~+ J6 S+ b5 X6 a$ f2 X. G& v+ |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! x( C7 r4 E) k8 c7 eusage: himr <address> <value>. sample: himr 0x80040000 0x0
3 b6 f; E/ H9 P: p% r" ~) c( ^) R0 w* t' e. n# x

* s0 Z; |2 F2 o. z4 N  C不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  o3 `' L+ {* ]& t0 c1 E* F
$ S6 {0 m$ V7 ^" o1 m- b) Y补充内容 (2012-3-8 09:42):
( a, h0 N% Q( J5 ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% R# w# ~; `' }2 h2 [  k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ V! K3 \* e* b' ^  j. @
# L( o  d: b3 z' c% m
himr <address> <value>. sample: himr 0x80040000 0x0
3 W5 J2 D% W. `% {+ A  X+ z  f' G0 K
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 z4 r$ {- ], D6 K/ h: u
himr 0x80040000 0x00
! }! j) U4 W+ u7 thimr 0x80040001 0x110 D7 P7 v, C, v# n
himr 0x80040002 0x22, f! b/ ~$ d& n5 L3 ?, ?
himr 0x80040003 0x33  D, _- f) i6 a
himr 0x80040004 0x440 I' h2 V) s1 h4 l# E+ F
himr 0x80040005 0x55
3 r( Y6 ]+ S9 w' ]
) D1 ?# R, Z9 a  iSN也是类似。: O: e! e5 o' m0 F) Z: g% Q

1 v4 T* ]3 v) k0 C4 L$ D7 C现在主要是,谁告诉我们MAC和SN的地址?
* K( Q9 l; ]9 Y& r
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / _0 x3 r% ]6 I: A7 l
一直想找到运程修改MAC和SN的办法,苦于无解啊
, [7 Z1 ?2 z4 t6 A) U% T
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   _- |0 ^7 W, s4 c. V

/ Y3 V! Z6 \: }4 p修改的代码早有了。到今天不会编译。4 G2 C. E5 k  c! E# ~  i; l" ^
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: P% A+ G6 A* b6 c1 v# X( b5 z
  2. #include <malloc.h>! S& J# X  E4 g8 r1 E# P( `
  3. #include <sys/types.h>- K4 q8 p" q& _3 e7 S
  4. #include <sys/stat.h>, x$ T# P3 Y8 a. z2 Y' J; v% e
  5. #include <sys/ioctl.h>6 F6 j% S+ A  Q. U
  6. #include <stdio.h>. n' n" @3 {$ [- i' b6 r& t
  7. #include <string.h>
    ; l: t! L4 D. x8 G' a
  8. 6 x# w! S# d% B
  9. typedef struct {
    " E: d  N" Z9 d- n9 b
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ V6 Q6 ]! s+ ~
  11.         unsigned int        sub_addr_count;& X' Y. X, ?) F  f7 ~/ O& i/ f
  12.         unsigned char*        e2prom_cmd_data;
    ! U4 L7 l" d9 T- S0 h
  13.         unsigned int        data_count;
    0 o. O; U- U7 _- z7 B: j
  14. } e2prom_s_cmd;
    8 R& M  s& D1 U" C4 p

  15. 8 E0 e' T$ U. b- E2 P8 t2 D9 g
  16. #define E2PROM_CMD_READ 1
    / v6 [4 {3 V9 j. m$ T% s
  17. #define E2PROM_CMD_WRITE 2
    % p4 ~5 O7 z2 t" X7 S& _+ A$ y5 t7 S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 x2 P. W; b6 @; k( ^

  19. : P9 c. L' D* A- Y- |6 {/ d/ }* q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! ]* {9 ]1 \5 g6 m  B6 k
  21. {, }$ C- f6 N9 z& p$ ^
  22.         int fd, ret;2 {* X/ c# x  p# c
  23.         e2prom_s_cmd arg;
    # G) ^4 v5 R: C/ a. y
  24.         unsigned char buf[0x18];
    - k2 }3 i+ E. A% b# _
  25. . f" b& R1 p, H+ c3 y: e$ K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ ?" X) ?9 b- _1 [
  27.         if (fd  < 0) {) Q8 A  ~- g7 |, n1 F* k( g0 Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ O3 D  d5 M  [
  29.                 return -1;
    1 k  b4 J/ f5 X) C; F1 n
  30.         }
    7 l/ E& \  _& y! W
  31.         arg.sub_addr_count      = 2;% [: ~: p' `4 J+ L( G' u
  32.         arg.data_count          = 0x18;$ N4 T1 l9 Q9 F8 ?) c& `
  33.         arg.e2prom_cmd_sub_addr = 0x290;1 i7 m' L7 H$ Z7 f! R
  34.         arg.e2prom_cmd_data     = buf;7 h) A  W, }# }# N  L# Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 \2 G' K4 b, T* N/ N
  36.         if (ret != 0) {
    + v7 w  L% N# F* \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 N% c6 k& |5 k, c& y  D
  38.                 return -1;8 p3 r- `2 Z: e- ]6 O
  39.         }- ]3 Z, \, S4 o
  40.         memcpy(mac, buf, 6);
    " \" c& p/ g! B4 b6 V, T3 m7 q
  41.         memcpy(stbid, &buf[6], 18);! @; x9 c7 n( l' v5 d2 x. W1 }% L5 I
  42.         stbid[18] = '\0';) d7 l# h9 j! n2 D

  43. ) v) A: W4 t- o3 k( y% j, c
  44.         return 0;
    # D7 M8 w1 q: ]  r
  45. }/ V, ^$ ~7 c0 S
  46. * q- u( v) X8 j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & {6 {# ~) n. ^2 y( q" C2 {! C
  48. {
    ) U; L2 ?# y1 b0 F4 d
  49.         int fd, ret;3 D  j) ]8 u& m9 I: B
  50.         e2prom_s_cmd arg;+ E) \0 P/ D7 G! }$ L
  51.         unsigned char buf[0x18];2 i7 ]) L, F. U2 q

  52. $ r: t4 D4 a( t# h. V
  53.         memcpy(buf, mac, 6);6 G6 P  r6 X5 c4 d" U$ h
  54.         memcpy(&buf[6], stbid, 18);
    5 j. e/ _. t$ y" c0 c& F) P$ M% h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 v: @0 O5 ~; e* Q2 l  N
  56.         if (fd  < 0) {
    + c* |8 h. W- @5 o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);- L1 n0 N. i1 k6 b
  58.                 return -1;
    3 L% t: t: O8 b8 Z
  59.         }
    : G3 i4 N! U( P( Z/ g: `# R7 @, ?
  60.         arg.sub_addr_count      = 2;' ^  h7 k& D+ Q6 w  w
  61.         arg.data_count          = 0x18;
    3 E+ O* w5 M# S  {4 s& E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( L  e3 t; i- D4 w# }  m
  63.         arg.e2prom_cmd_data     = buf;8 s) D6 v& Z6 G6 v5 J7 J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ y! H+ o8 f4 f, t& V
  65.         if (ret != 0) {
    5 F9 I! e0 ?. k9 A& f3 u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 A% V$ M# d. g6 @# ?, b
  67.                 return -1;
    $ K# o. G1 v) ~+ s
  68.         }) x: q" Q* @: i% D/ D1 ^- M& S
  69. ) W7 p( K  I& B
  70.         return 0;3 ^1 d; C7 z2 z) B% X+ `' S- K
  71. }
    8 `6 q; F) K. y( J

  72. $ N. [1 k& ^9 y
  73. int main()
    ; C, |& R3 J! b- ?/ J, U
  74. {1 A: q* x& M* p) x/ L" l: B% s
  75.         char c;
    4 m1 @5 T, q5 b& }4 G( N# g7 x' G! u
  76.         int i, macs[6];& K. `3 I( F( b( `! e1 }
  77.         unsigned char mac[6];
    4 W2 J2 F5 O  p
  78.         unsigned char stbid[256];  s' a1 N2 d5 M& `4 |5 X# ^
  79. % z* K6 b- J2 ~9 K/ k7 z* p
  80.         if (readparam(mac, stbid) < 0)  b  u. b, n* A
  81.                 return 1;
    ; s2 t. q. t. h0 h- I

  82. 8 I( l" j7 J7 a4 S
  83.         printf("Current parameters: \n");* |2 ]0 b* U7 t% X2 W& d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 o& ~* c/ a& O
  85.         printf("  STBID: %s\n", stbid);6 e3 s6 S* r5 Z% i; U; F6 M
  86.         : k1 z1 Y) z9 V, O; ~. N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 o6 h- m% G' U1 j! @, a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, K% c; I" r0 Q$ {1 ]) a, Z, I9 r
  89.                 printf("Input MAC error\n");
    $ b7 I9 D! Q7 i$ A1 Y/ w! F
  90.                 return 1;
    0 [8 K, |! E- W& M, ~; c# J
  91.         }
      c- V6 I' T& o# |9 ^) G/ V- \
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - t; Q* S) ?3 V' r% E4 w8 _: ?
  93.         printf("\nPlease input new STBID: ");; d- f4 R- F- X5 |
  94.         scanf("%s", stbid);
    * P$ q7 p$ k) d, f% U
  95.         if (strlen(stbid) != 18) {5 g0 E8 A* W0 a; _
  96.                 printf("Invalid stbid\n");; m; q* [" F+ Q
  97.                 return 1;
    , u6 t# w/ E7 x$ k. m
  98.         }
    # v7 C- @) v* R  x
  99.         printf("\nNew parameters: \n");' U9 I- |! C; S8 l& p5 n" L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 U- T1 }* Y5 _9 B
  101.         printf("  STBID: %s\n", stbid);
    5 z5 q" _! V3 Z  \; K: G; ]- X/ U

  102. , Q" @- l8 w' k3 h2 V- N$ }6 g
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 w% K& r# o4 U$ S
  104.         for (;;) {) p5 T( c  h- K: Q- S6 J7 r4 \  i
  105.                 c = getchar();
    ( w1 J. t4 ?3 O
  106.                 if (c == 'y' || c == 'Y')
    : F. S; C9 R( G* E
  107.                         break;
    7 M& S# a  T. {# f4 ]
  108.                 if (c == 'n' || c == 'N') {! [% m! W; Y0 l/ O6 ~$ |) Q
  109.                         printf("\nAborted.\n");
    ) w3 r2 f1 G) s; a9 V; ?
  110.                         return 1;
    % Z" e. O, n" @9 u  `' a- O
  111.                 }
    / M' c, `9 D  {! \
  112.         }
    $ T% C+ c# S! C& v7 L; S) Y
  113.         if (writeparam(mac, stbid) == 0) 3 r' W. M* m% u& L7 q1 u
  114.                 printf("Parameters changed.\n");
    ! j4 }! B% R0 b/ M- ?
  115. ! F- v2 S5 Z, U2 x( v- f# a2 m
  116.         return 0;
    : }/ P5 y3 H. m7 V- E9 d
  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
: Z7 ~: o; k# m在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 {. e4 B# }( f8 T& ^# o" Q7 Q. C你用的编译命令行格式是什么?
2 B; o2 Y% M1 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客服返回顶部