查看: 16053|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    % B* @! c2 g& O& B; N+ X! t
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig/ ]1 M4 U0 {$ B+ P& o6 w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 O# p( P; p; ?* e9 `3 busage: himr <address> <value>. sample: himr 0x80040000 0x0
9 ~8 Y, Q7 T1 W2 S- \2 t( G2 q. T) s9 z. n8 q

7 d0 z" n. j  K0 {( i8 C7 [( Y+ s不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) }, U4 K1 ?2 p# G2 u: ]/ ]% m; H
: j. u* [% m6 ^3 j" W' _6 H; d
补充内容 (2012-3-8 09:42):
# A9 `6 G9 a; y! o( Jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 F: ~! t7 @- i' G' @这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。; C# N' W% b; A2 b4 `5 ?( j, C0 o

6 _1 r# o9 A  C0 V  M* d; L! a: m0 Jhimr <address> <value>. sample: himr 0x80040000 0x03 ~- H5 n% k. X+ j  e
' W9 h( T+ j+ X: A
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ B! g# J- ?; n5 Y- L
himr 0x80040000 0x00
  c6 ?4 x4 v6 n$ B7 r( rhimr 0x80040001 0x11
% ~: u' |( `; p/ R( ihimr 0x80040002 0x22
. m' e. l0 l( O) Nhimr 0x80040003 0x33
8 E5 U' W3 J; t# N0 T8 P. K' hhimr 0x80040004 0x44- M+ c8 Y1 i( x; G  ^
himr 0x80040005 0x55
" Q* v7 n- |$ s& Z0 Q' z2 X- u* h8 P$ X0 [. @
SN也是类似。
  F  ~! J$ k1 W0 i8 D
5 V0 `$ W5 d% n/ \现在主要是,谁告诉我们MAC和SN的地址?
+ R5 x' y% G& i! k: w: w9 }$ X7 w
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; S) i2 ^5 W. b" p
一直想找到运程修改MAC和SN的办法,苦于无解啊

) Z( v+ @/ G: S* ?6 A8 s6 Y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   o+ t8 M2 [9 V5 w4 B) m
, {; E  ?! O' p4 h! @5 x$ _( t- B
修改的代码早有了。到今天不会编译。
- ~% `$ }& C1 ^# x" ~' c1 r1 A, T需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& w" N4 s3 t3 W
  2. #include <malloc.h>- _) [9 ?& I7 _: D: L. B: X+ Q
  3. #include <sys/types.h>4 i+ {4 m. e% m. k: ^, _
  4. #include <sys/stat.h>9 j0 E- `( E, M9 F/ @
  5. #include <sys/ioctl.h>
    ) \6 p+ q& y( J/ w
  6. #include <stdio.h>& b3 Q; h1 u! {; ?8 r
  7. #include <string.h>3 Z# g2 t; u$ E
  8. 2 Z  |7 H) R. M; h. `0 ]5 ]
  9. typedef struct {
    $ S- c  v: ^6 o$ J+ {3 N
  10.         unsigned int        e2prom_cmd_sub_addr;  c3 B: ~8 N! Y4 a& z4 V* R, Z
  11.         unsigned int        sub_addr_count;
    : W5 H& M" ^$ I$ X. p; @& j) d  s% \
  12.         unsigned char*        e2prom_cmd_data;5 H/ Q' X3 `% i: ^* ]" x; z% m
  13.         unsigned int        data_count;# v4 |7 t* P5 H5 h" O
  14. } e2prom_s_cmd;! Y" ^8 _- q: `7 _
  15. 6 I, P, T3 H# r9 q9 i' n
  16. #define E2PROM_CMD_READ 14 x, P/ e3 S2 e; d# D/ k) h! C$ V
  17. #define E2PROM_CMD_WRITE 2
    # Z) v  M9 K" {1 p/ G, Y7 X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  |$ z4 H( I. A& z

  19. , D- N1 E+ p$ v% {. R% \5 H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)4 B( ^% \: O- x# q. `' V; N
  21. {
    # I) Z( N' `& U& g- Z$ o) i
  22.         int fd, ret;
    6 c& N: x' G; K
  23.         e2prom_s_cmd arg;( f9 n6 T& C7 |2 V) `7 m6 F9 d+ o) d
  24.         unsigned char buf[0x18];7 Z4 O/ t7 n- T

  25. ' D3 c8 R1 i0 b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% @6 q  ^+ @. Z- Z: y) K
  27.         if (fd  < 0) {% L/ W& g2 Y# \( J; J. i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      U" d/ P9 ^: k
  29.                 return -1;2 s; X* o! l- y( J
  30.         }
    $ `5 z2 J( D9 Y1 U+ ]& W3 W
  31.         arg.sub_addr_count      = 2;2 t8 a0 s- S# e7 }5 X2 x/ J3 ?
  32.         arg.data_count          = 0x18;
    : r& P0 V, C3 c5 D, P3 e' i
  33.         arg.e2prom_cmd_sub_addr = 0x290;) S+ i5 ?1 `$ g, x
  34.         arg.e2prom_cmd_data     = buf;
    / v" J* ?# E& o+ R6 k- V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : ?8 f+ g- ?2 m! q9 A. n
  36.         if (ret != 0) {0 v4 K8 J* h' [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 a" B- F' h' h5 {! {
  38.                 return -1;
    . k! y) U; T9 w' X. N7 ?+ ~
  39.         }' \  w0 m$ q$ V# q( _
  40.         memcpy(mac, buf, 6);
    * \0 `& n: G2 t0 R# ~8 t
  41.         memcpy(stbid, &buf[6], 18);
    ! U& O3 ~/ [) x5 j
  42.         stbid[18] = '\0';/ h( m6 \( o5 n7 `2 `, M3 H
  43. 0 K& Y! s, o, e' i& O$ c
  44.         return 0;3 t; X! G$ q! \4 U' B6 f
  45. }
    7 u5 m& u* H& ]
  46. & W% U; R4 [% E. T6 m
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- f" f( U( V1 q( p4 F! V8 s
  48. {
    % v/ x' ~. S8 r- }3 e0 \& Z( `
  49.         int fd, ret;
    # s1 `  e+ b% _' s5 o) h6 [
  50.         e2prom_s_cmd arg;3 h& w7 r; V. a( E$ P1 U& ]
  51.         unsigned char buf[0x18];* l( L, L, ~3 V5 P

  52. ( J* H2 Q5 C! I7 O6 q( F7 _
  53.         memcpy(buf, mac, 6);
    4 M; ^7 ?5 h: y; i5 X& ^
  54.         memcpy(&buf[6], stbid, 18);
    $ ]- F; d* m; |- y8 W: H& T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, K- N$ `) z: Z( s! m* l
  56.         if (fd  < 0) {: H6 X2 I; o, w2 J: ]8 R& C) o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 i: o' B$ I/ M7 _* _
  58.                 return -1;7 J7 Z6 l- _* a1 t! w2 |; J- i
  59.         }/ Q6 A0 @1 C: j; h
  60.         arg.sub_addr_count      = 2;
    & |# v4 o/ O% P6 e) u
  61.         arg.data_count          = 0x18;
    & L8 A5 s! r6 V8 y' |0 o. k4 E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    6 d% T! }! t( @
  63.         arg.e2prom_cmd_data     = buf;" @& s. `, Z6 z7 ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);; Q# H/ O8 x2 X+ M; U
  65.         if (ret != 0) {
    ( m+ ?2 z: y& ~0 Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 d3 f  R# g' a
  67.                 return -1;( H* a! b' {) Z
  68.         }
    5 ^) a. t3 Q- s6 B' L5 O

  69. 5 S$ L. b3 H! M) B! J1 z: h
  70.         return 0;5 j- B5 v. Y( U0 i
  71. }# O0 ~+ f  H; w6 L- {% }
  72. 9 I, [8 E* [) |* w: T6 |9 w
  73. int main(), w% U0 [; _2 L! E9 t0 o' ^
  74. {  Q( Y. q, c0 n2 p7 U
  75.         char c;* q; O) u  f2 {! h2 ^6 I7 w' W
  76.         int i, macs[6];
    ( ?1 |' q/ j/ n( @
  77.         unsigned char mac[6];
    " o( m% [1 V, Z5 z* O- t1 `
  78.         unsigned char stbid[256];- I, Q0 r% A. z  u" T8 B( s& c

  79. 7 J! k! r% Z$ q
  80.         if (readparam(mac, stbid) < 0)
    8 Y' `. M/ W* }3 k3 i% z3 q( o
  81.                 return 1;
    ) R5 E# {* c& }8 x

  82. , ^) c4 b! X: m+ s* _
  83.         printf("Current parameters: \n");
    ( x6 S6 q" T% L0 I1 O4 |- P  P+ I# ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - |% ?; F$ ^8 ^+ T" z9 u
  85.         printf("  STBID: %s\n", stbid);/ |. `' N' y" I0 I' N$ b
  86.         4 ?7 m9 L4 Z+ M, a4 l: T0 I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");: u. E6 T0 a) a) P$ l2 k1 ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  t0 t+ x: D3 W3 o& p% k* P
  89.                 printf("Input MAC error\n");
    + N* C4 J, i2 p" @& w9 B
  90.                 return 1;
    7 p4 `! P8 H9 t% J1 a! m! b4 v2 h
  91.         }
    # L# V& `- l  H; e) G' A& T+ I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 E* i+ e) a" s: z& ?1 P
  93.         printf("\nPlease input new STBID: ");
    ! }' q: ^! K# ^7 O3 v/ b
  94.         scanf("%s", stbid);
    ) t+ f8 M* `' y6 s& G0 a$ g" c: n
  95.         if (strlen(stbid) != 18) {
    $ ?1 w- A2 N9 R* ~
  96.                 printf("Invalid stbid\n");* u! e* u! @& p- U% l. S
  97.                 return 1;
    7 u8 C. r% ^3 y( ?
  98.         }0 |1 I  ~# C- b! s6 e$ ?
  99.         printf("\nNew parameters: \n");
    ! y3 A/ F1 E3 f- U+ @) D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      N8 [$ D" n- Y# J* e0 X5 B( I
  101.         printf("  STBID: %s\n", stbid);
    8 u% `! b* d' i7 b( f8 \& V% `

  102. 2 H& F6 [9 \! Q+ {! @7 Q# R. {
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ! H* p2 y. e1 n* h( R
  104.         for (;;) {8 v8 h; i+ t( E4 C+ y7 ]* E
  105.                 c = getchar();2 @  d0 z6 x4 J# X/ c
  106.                 if (c == 'y' || c == 'Y')
      v) ]# v6 e) ?; E( F+ g3 y. v
  107.                         break;
    6 {6 L/ A! ?, z" h9 p, W1 w) j( h. z" r
  108.                 if (c == 'n' || c == 'N') {
    0 R' j# {$ Z  t9 ^% G" U+ s" t
  109.                         printf("\nAborted.\n");
      f: }( _+ p0 W6 ^" y, A! J
  110.                         return 1;
    ; ~7 @( ~* F) w$ L
  111.                 }0 K! _/ t9 H: v, E( o" S
  112.         }% u2 ]* F+ @- `0 O
  113.         if (writeparam(mac, stbid) == 0)
    4 d4 q# ?' @( Z# R. p7 C
  114.                 printf("Parameters changed.\n");7 V% f/ {4 L8 H5 j! n" ]8 s2 y3 \
  115. 0 p# E+ m  A- ]
  116.         return 0;  y+ G5 F0 k6 F. J8 H. o
  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
4 Q1 [% t9 a  t: N* k在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! c: J+ j# N8 |7 H你用的编译命令行格式是什么?
0 ~' i4 w, L2 `  s
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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