查看: 16723|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% M# \6 L3 m3 v  z3 g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! p+ Z2 p/ [. A, n8 T% K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ ~* q8 e& ?; c1 c5 v3 w+ z; g- Jusage: himr <address> <value>. sample: himr 0x80040000 0x0
$ |+ _$ ]- d' u' o& Z# t
0 F( C) q. Q" K3 H6 N! V, o' }; k0 }. N8 c- v# E7 }' T# G
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
4 L6 U, c- J0 }# E2 @) E0 Q
) U8 y2 Y4 q# A  C: O7 V$ V补充内容 (2012-3-8 09:42):
7 j7 `; i. m: z5 R% p  Lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 K* e& S* z0 K" ]: `7 Q2 x
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。  U+ }; @2 t' u- F  B4 u; o' F+ r
& ~* C+ a" w) ~4 i' a4 d# K
himr <address> <value>. sample: himr 0x80040000 0x0
6 ?. a8 V: r/ |1 Q( C* O7 p; r, t( b$ ]. ^
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 T% v+ T3 y: b& Dhimr 0x80040000 0x00) _/ T! R9 S. I- l, n0 ~- I
himr 0x80040001 0x11$ n6 X) _& A, i& S, `6 f6 W( R# R
himr 0x80040002 0x229 t/ e' r, d1 I. z) w
himr 0x80040003 0x33  ^- t+ R5 }" K0 T3 B; z, z
himr 0x80040004 0x44; G' l% p  _; \' e" Z7 t$ X
himr 0x80040005 0x55
6 j& S5 O- H  V# t2 @2 q, P7 F, `8 @' C
SN也是类似。
/ i% G. Z! |) a% ]4 L* z
) I2 B# S. a% Y% s# o* F现在主要是,谁告诉我们MAC和SN的地址?2 i2 H2 ~; Y: \/ \
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 P/ M: X6 d" r
一直想找到运程修改MAC和SN的办法,苦于无解啊
! l/ d6 F2 r% m7 v5 J8 d( [
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( G, x# E+ j9 Q$ _8 r  E6 {
7 ~: `0 H3 v" p/ C
修改的代码早有了。到今天不会编译。
/ ^+ j- M2 |" u3 R4 U0 h3 x需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: s2 x& l6 y  a
  2. #include <malloc.h>, F; ?  q9 X+ Q) w. F# e4 K
  3. #include <sys/types.h>
    5 `  t3 \" y3 C! r- q
  4. #include <sys/stat.h>
    5 j5 d* u$ _. X9 V  E- R: Z: A
  5. #include <sys/ioctl.h>
    6 u! g# _+ B7 |$ [5 A
  6. #include <stdio.h>1 m" N5 I1 C  t' c9 q* j
  7. #include <string.h>* i! I: @* I5 U" Q  A% O
  8. ' m4 O- e6 f2 p  n
  9. typedef struct {
    ' ^  r9 |$ S3 r' j, }; }/ |3 l
  10.         unsigned int        e2prom_cmd_sub_addr;
    - ?0 \; N; I. G  F1 W
  11.         unsigned int        sub_addr_count;
      F, i; D* n  i8 N3 g+ J
  12.         unsigned char*        e2prom_cmd_data;. g3 u% z: J: u1 q
  13.         unsigned int        data_count;
    - H5 n% y+ r6 n1 @
  14. } e2prom_s_cmd;- n4 S8 ]5 u/ [* Q0 `7 O
  15. * k6 {. h# r+ `' ?/ N! p
  16. #define E2PROM_CMD_READ 14 q/ }+ a1 h# H9 O5 Q2 O. R7 v
  17. #define E2PROM_CMD_WRITE 2
    0 W& A0 e" ~/ y) ]# X1 c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 `5 K( z. E, S3 n- M* z& F4 o
  19. 6 h0 ]* S* S5 g. C- f$ g1 F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' l" O/ y: W9 O, s) F9 i
  21. {
    0 `( U* w; G& x3 e
  22.         int fd, ret;
    1 F2 O) E2 B7 n0 Z" k4 g
  23.         e2prom_s_cmd arg;/ W! M8 o: K) r) [
  24.         unsigned char buf[0x18];% P# L" O4 w: ]6 b
  25. ; r* `, R# R9 H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 b& O* \+ \) F% t
  27.         if (fd  < 0) {% h  {. d! J* r! J4 C6 o
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 S, m- G: V. ]; Z" H* v
  29.                 return -1;
    # g) \. O/ w3 {. _5 k9 z
  30.         }
    1 ]1 b' e1 ], ?! B2 Q) l# t" y
  31.         arg.sub_addr_count      = 2;: L4 g6 D7 j9 V2 ^& W1 }  m
  32.         arg.data_count          = 0x18;
    1 L5 M$ \5 g: p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + ^0 r* d: A  L; Q- ~
  34.         arg.e2prom_cmd_data     = buf;
    ( `  Y& L6 {2 p7 w: P7 d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; U. h* t# x- C( X" n7 n; ~! K7 ~
  36.         if (ret != 0) {
    . L; J# }& [4 Z5 u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 E+ U2 W9 m3 I4 D6 Y& M
  38.                 return -1;; [- `* q+ G( N0 s! d. e
  39.         }1 r+ j4 \( W( E  |+ ^+ d0 h1 w
  40.         memcpy(mac, buf, 6);  E& ?$ w3 @7 }3 \/ L' F& C7 s2 Y
  41.         memcpy(stbid, &buf[6], 18);
    4 o- K5 S. |$ d6 h+ Z2 G( {
  42.         stbid[18] = '\0';- D9 \: a0 `3 D( E1 S
  43. ' O: c$ J- B' Y6 P2 m8 X/ v
  44.         return 0;; S5 m6 t* D+ p1 J) q0 R1 w+ n1 D
  45. }
    + \( U* S& ]. |  Q) |
  46. % _7 S9 G' \: W. q' G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% G1 n5 W5 r( V4 E1 r
  48. {
    ( ]" m5 W$ C3 I; [
  49.         int fd, ret;2 y7 U* ]! _$ `3 l
  50.         e2prom_s_cmd arg;
    $ Z  n- k& h0 F. m2 V
  51.         unsigned char buf[0x18];
    . Q0 ]7 I. N4 D

  52. ( d; o7 B/ Q! w
  53.         memcpy(buf, mac, 6);  O, [( A; q+ q5 ]' a) C
  54.         memcpy(&buf[6], stbid, 18);1 o: K9 @+ w( \9 R$ t2 `; _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / v+ L, Y# p2 W5 c# _* r, r# J
  56.         if (fd  < 0) {
    * F7 R& d; w$ k' {( c) t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 c" Q7 M, P' U
  58.                 return -1;
    7 ^& B) `- M, y! u
  59.         }3 b; [0 G1 t3 j" L% y1 h9 ^4 ~
  60.         arg.sub_addr_count      = 2;
    % e! P; l* D. u- l/ ]0 w0 K* W/ u
  61.         arg.data_count          = 0x18;
    9 x/ u; @! u1 ~* P+ H
  62.         arg.e2prom_cmd_sub_addr = 0x290;( Z/ P' f: V) M3 ]5 _# o
  63.         arg.e2prom_cmd_data     = buf;
    ' f/ {( R: C: y* M7 W5 i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / K; h* P6 {4 l, X, m3 G6 h  u! ~; S
  65.         if (ret != 0) {8 V1 P/ c. h2 r1 o3 \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + Y( v6 w( V( b9 w0 Y; p
  67.                 return -1;1 n3 T( h) U. M5 g
  68.         }: p9 ]: b/ Z- ~, ^
  69. , z' Q2 m; l5 d% C9 x% n) ?) m
  70.         return 0;3 C0 R/ S; y7 H4 q5 Y1 o
  71. }1 C( \: u* [# V; B8 f+ v' y, Y: s
  72. - S  F& h( W9 Q
  73. int main()
    & V+ M4 r# l; k: o& v) P" S
  74. {
    , @' @8 m8 l! Y: W9 q% E/ C
  75.         char c;5 o8 ]4 j; ]" _6 I, p% N
  76.         int i, macs[6];; y( B% e: ~) F' B
  77.         unsigned char mac[6];
    . f, v+ y, H) `( D
  78.         unsigned char stbid[256];( ?8 O! y+ R1 }8 }. i

  79. # f/ J( ?0 u  B( _
  80.         if (readparam(mac, stbid) < 0): q  N/ r7 v3 e: k
  81.                 return 1;7 U1 y# B  r) |9 ]! G7 D! j& |5 Z& \

  82. * c, v  C- A3 E3 Z
  83.         printf("Current parameters: \n");
    0 P0 S  n9 F5 S' {, L8 l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & V3 r% t* `/ b0 G. h; n9 }
  85.         printf("  STBID: %s\n", stbid);3 _& D2 r/ S4 \
  86.        
      K/ y5 F/ ]4 K# f& L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 m. M/ F$ ^5 \) V. z8 L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 @+ ?% i  B( k: K' ]
  89.                 printf("Input MAC error\n");
      t6 c1 J' ?9 j7 Q- Y2 v
  90.                 return 1;
    $ l7 _4 g% I: p
  91.         }: Z& O' c; d! D2 D1 m- Z; d- E' s
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' B7 R# F1 ^2 Y/ C
  93.         printf("\nPlease input new STBID: ");
    / M9 e, _8 c0 P# R, b) n
  94.         scanf("%s", stbid);2 E9 f( j1 r& d+ s6 i8 i% ?
  95.         if (strlen(stbid) != 18) {
    ( \3 v3 L2 [& K3 H3 O5 r+ ~
  96.                 printf("Invalid stbid\n");' d0 T% t; t4 G. p# T" u. U
  97.                 return 1;
    " X( [9 y: P" f; \, v6 t
  98.         }
    9 `) u# b# J1 y2 i
  99.         printf("\nNew parameters: \n");
    ' S1 b6 p' m6 M. t9 q* s- o
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; e  R3 \  M( }& b
  101.         printf("  STBID: %s\n", stbid);
    9 m! ?/ G* o, Y$ Q. H
  102. - ^/ z+ ^/ P; o) a
  103.         printf("\nDo you want to change paramemters? (y/N) ");* n1 ^- R. D  O
  104.         for (;;) {( G0 v" ?2 N5 a4 I
  105.                 c = getchar();
    3 N: q3 t3 M6 H8 m4 j& A1 A& @' i
  106.                 if (c == 'y' || c == 'Y')
    % I+ D1 {& v# ^# l
  107.                         break;1 W: |$ C3 l, R' _5 E5 f
  108.                 if (c == 'n' || c == 'N') {
    9 m( x  k8 D/ P0 ~$ J
  109.                         printf("\nAborted.\n");
    ( `+ e3 P8 S& i* X; |8 P
  110.                         return 1;
    7 q$ I6 o0 A. p, M5 N
  111.                 }
    / k. _; U9 P" i* H' O
  112.         }
    4 @8 h% a7 P2 r; i3 ]  E& K( f
  113.         if (writeparam(mac, stbid) == 0) % P: `6 H; F( g! K2 F
  114.                 printf("Parameters changed.\n");
    6 B1 a; ~, P* R: o- w+ A$ B' I" ?7 x

  115. & X$ y! [+ X$ v5 U
  116.         return 0;
    0 @! A+ N/ z' u7 L- H8 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
" `2 r5 j/ S4 @0 M在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& z2 V. o+ H" u. t) ?你用的编译命令行格式是什么?
& c. O5 u2 e; X; j
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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