找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15289|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr8 H3 H3 K# }0 f. k. t" d7 a- ~% h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; X8 c9 x) W' e. i, t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- W" L+ O5 y0 m
usage: himr <address> <value>. sample: himr 0x80040000 0x0* W& D+ d& v! N$ `! I- G

( _: n$ `! j' O- m5 H* ?2 R( z3 D3 S5 |- \/ M, q) q: K
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( A4 w8 ]5 h- |  m  V
2 T' a2 E5 _6 p* J& ^6 ~  {
补充内容 (2012-3-8 09:42):
' P) z, p8 h3 L& c/ }http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. t& d4 b6 d8 S4 j这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 z' C1 m- B) R& v; t$ q4 j1 N$ r- E- r- y
himr <address> <value>. sample: himr 0x80040000 0x0# G: @2 }# y8 [) {8 z9 F4 S& @

. u# R) r% Y2 l/ V1 u! n例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。4 Y, f8 B- k- A9 b) ^
himr 0x80040000 0x00
3 D% Z6 u* o# H# _) d+ x( Yhimr 0x80040001 0x119 ]1 n* y) Q9 _. i
himr 0x80040002 0x221 d2 Y& @0 U5 r8 H$ T, @+ q* `
himr 0x80040003 0x332 l) }, M1 H' M, R: }. R4 Y
himr 0x80040004 0x444 H" d$ ]  w) k3 J8 N) U: w, s
himr 0x80040005 0x55
) b  P8 U  ]" n
( l( y# K$ P3 _$ uSN也是类似。9 C, z1 d2 v6 B: _
2 }& c% H2 L$ v
现在主要是,谁告诉我们MAC和SN的地址?
+ H! J. b4 ]( X+ o% Y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # d# e( ^5 J/ O; {) y
一直想找到运程修改MAC和SN的办法,苦于无解啊

- H& _# O+ `, a. O源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; G) f/ u( {9 F# z
& U8 p; S( C8 E6 O/ g$ H# t+ ?
修改的代码早有了。到今天不会编译。
1 I" e& x4 Q5 M0 ^需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) U* D1 T! Y0 `6 J! L7 E2 n
  2. #include <malloc.h>1 s) G7 a" u' }3 m
  3. #include <sys/types.h>
    ; y( q/ J# U) e: L8 p
  4. #include <sys/stat.h>
    ' z4 ^9 }8 P3 Z. M7 e2 S
  5. #include <sys/ioctl.h>
    ! N$ x) C( ?8 p+ ^/ U7 A3 E
  6. #include <stdio.h>
      k! Y/ C9 Q4 Q% }
  7. #include <string.h>
    % y# Q1 w+ R8 `9 D& c0 @( v" }
  8. 2 I. E8 H! O6 ~* }/ `- g) F$ ]! m' B
  9. typedef struct {. [" u+ D5 y/ A% ?& i
  10.         unsigned int        e2prom_cmd_sub_addr;3 W2 ]. \+ ?$ K. |$ @: G/ T/ D" p
  11.         unsigned int        sub_addr_count;* b, f. x3 M1 C( f: }7 b
  12.         unsigned char*        e2prom_cmd_data;# ^. M$ S$ j# m' o. a( F
  13.         unsigned int        data_count;
    6 F( p4 \+ l5 e. x
  14. } e2prom_s_cmd;
    4 O: @7 K# H: z4 n6 B

  15. ! _4 w0 r, U  B+ ]2 o% Q1 q) M
  16. #define E2PROM_CMD_READ 1  S: i" r: m' B9 m0 k, d1 t, h- U
  17. #define E2PROM_CMD_WRITE 2
    8 k3 H% J; G' E. P0 [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( ]+ y0 Z5 }" X3 {( n/ p

  19. 4 o# w5 l& G& K5 a  u/ @
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 c5 g6 Q' j) T7 n& E9 }: k
  21. {
    . p7 ^  k0 B/ U4 P( J/ G: E
  22.         int fd, ret;/ ?/ ~" c+ p3 D6 Q
  23.         e2prom_s_cmd arg;+ p. ]) @1 E2 A' ^3 U6 n7 M4 S( A" z! M
  24.         unsigned char buf[0x18];
    6 V. n' o7 k# v% G
  25. ; }% f* U7 {9 e) q  y2 l
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . W# Q! o; Q' T: w: J
  27.         if (fd  < 0) {
    3 a9 B$ Z- T3 ]8 ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " x3 ~+ }( M, h. O
  29.                 return -1;. f% \' \- X) @( I0 P2 R; J" E
  30.         }. k0 ?4 ?) W/ B0 U9 `8 I4 q4 t' F
  31.         arg.sub_addr_count      = 2;) Y; ~- Z3 R; x. ~# ]  r7 c/ T5 t/ q
  32.         arg.data_count          = 0x18;
    0 K  Y! F* u; \) e! g- D# f# y2 X
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    . a7 L. b2 Y/ _. W
  34.         arg.e2prom_cmd_data     = buf;
    1 X: x" g9 ]; x# o+ E7 g( [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ K0 a2 j7 B2 X% `+ ]+ I
  36.         if (ret != 0) {+ ^& X" v# y$ R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & A5 H/ d% R2 P& d. E5 Q
  38.                 return -1;
    ) g1 S7 }  r( k: X2 A. i
  39.         }" p- f7 W* b5 w$ a: i$ A
  40.         memcpy(mac, buf, 6);
    1 x4 |; V" U6 P- C* T
  41.         memcpy(stbid, &buf[6], 18);" V; g+ @8 H# H
  42.         stbid[18] = '\0';4 @0 F/ d( v8 r/ I$ D
  43. + t0 n' h. x& G' K
  44.         return 0;
    $ s3 ~! s+ |. w- i, f- p+ |
  45. }
    5 c: P, U0 F( q. R3 b- H8 h$ n

  46. + t) ]. J- |+ D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ V% g/ X8 a6 o  ^9 a# K
  48. {  W% W8 @* K5 }1 d3 D. A3 V+ d
  49.         int fd, ret;$ Y' n/ l" n& q1 R$ A0 w, C3 i" K, B
  50.         e2prom_s_cmd arg;
    . z" }$ W$ E  N+ K. {+ G
  51.         unsigned char buf[0x18];
    & R; R0 t- R" y& ]$ t7 {" g* ?

  52. + n1 q' K) G9 W6 o( Y( K
  53.         memcpy(buf, mac, 6);
    , {1 h; {. `$ a5 g
  54.         memcpy(&buf[6], stbid, 18);
    ! m+ p  w0 q. V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' g1 h8 i* Y1 a
  56.         if (fd  < 0) {  ~% R, U  }# H6 E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 |; Z9 ^. r5 k
  58.                 return -1;
    1 s; W4 y3 o* q' ~. i
  59.         }
    : N+ m7 ]8 T4 ?7 K0 `
  60.         arg.sub_addr_count      = 2;) d4 ~7 j/ S4 b! d% d
  61.         arg.data_count          = 0x18;
    - H2 ^/ S' d3 b  ~3 z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( |2 n8 K- E$ O$ U- F! |
  63.         arg.e2prom_cmd_data     = buf;) x  Y- s+ M6 n$ U+ Y% F9 t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 k4 X9 y- `" Q/ y% u. b1 P6 r
  65.         if (ret != 0) {
    0 }( R/ H+ Q( W9 R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 Y6 }" B* f5 _: s
  67.                 return -1;. Y. A/ q0 q4 G# _4 x* s, w; J! A
  68.         }
    & @3 w$ _( S( H! v8 C

  69. 9 Q# U# Y7 K5 Q- f
  70.         return 0;
    9 B; c, C2 l2 c1 }. m. |  M
  71. }
    5 L6 i& P7 w7 z! W

  72. " `2 K: D: ~; s+ Q2 ?5 k
  73. int main()( ]* q: ]1 j# S/ k' J) d5 C& @; _( H2 x9 h
  74. {
    ' s# Y5 p2 d- p8 b$ @  t
  75.         char c;
    2 r8 f) `! h. E
  76.         int i, macs[6];
    7 o0 w/ q6 i& y
  77.         unsigned char mac[6];
    # r/ J* l& d. t6 I, p% T
  78.         unsigned char stbid[256];; `& i- E  E1 A+ F5 |/ l: H' Z: J' ^

  79. 9 Y& p- r; }7 m4 u
  80.         if (readparam(mac, stbid) < 0)
    ) g( T# X# h/ q. f+ c1 _4 n+ U
  81.                 return 1;, b; e* Y' G0 D* M/ ]% h6 q  f; j

  82. 8 _7 V, ^9 G$ ^4 d( {6 o
  83.         printf("Current parameters: \n");/ v  l2 N) ^9 X9 C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 ?/ h6 s  \  y
  85.         printf("  STBID: %s\n", stbid);
      @$ z5 K; G! E: ^6 d2 A
  86.        
    0 e6 v2 f2 u- i5 X, f  E' F' o$ R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 |  i6 K, l) a0 V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {7 h& [; m: t" k$ x; T0 L, n1 x
  89.                 printf("Input MAC error\n");
    1 Z3 j" h- R! X0 `  }
  90.                 return 1;
    ( |% [7 T0 q. P# h
  91.         }
    ' W, S- I# t; _( G7 V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 @) G3 F& y, w8 s/ F  p
  93.         printf("\nPlease input new STBID: ");' o% ]' P" K! Y% T/ Y" n
  94.         scanf("%s", stbid);! Y: `' O/ V* H3 |* F8 a
  95.         if (strlen(stbid) != 18) {
    . T/ F3 J) F: @# F) k7 r+ V
  96.                 printf("Invalid stbid\n");! P, l( w* ]0 b' a$ P
  97.                 return 1;& [+ F- {/ d" G* X6 T1 w) v3 |
  98.         }! K) V; Z, ~7 q, Q, `1 Z
  99.         printf("\nNew parameters: \n");
    4 k5 O% A1 V+ Z$ k% z4 \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 m1 r# X, [( @# ~
  101.         printf("  STBID: %s\n", stbid);
    ' r4 W: X; O0 x: v; l) U
  102. ; B1 }# i9 G, V
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , [7 a1 ?2 U7 f8 q" A
  104.         for (;;) {
    ! y: N, {9 o/ m. A# [8 z! _
  105.                 c = getchar();) ]# {5 s* F4 Q: z* h
  106.                 if (c == 'y' || c == 'Y')
    / s  {9 o4 j, r" r6 F" ^" b' o3 F! L
  107.                         break;
    8 f* l# d+ z$ K4 H( y7 g5 a" N
  108.                 if (c == 'n' || c == 'N') {6 ~! e6 v' |; a. r5 z% ^% M* l% H
  109.                         printf("\nAborted.\n");
    & v# a# ^6 e, n( ?6 f
  110.                         return 1;0 M3 h$ ~6 s! L/ X+ d
  111.                 }5 q& U2 i( x( G3 ]8 _) v
  112.         }
      j  L9 V+ K$ L9 E% G# [" _) _
  113.         if (writeparam(mac, stbid) == 0) ) ]% u- M. z7 h
  114.                 printf("Parameters changed.\n");0 P" Q; k" J% F9 n; A
  115. ; ^, W% u0 F7 B
  116.         return 0;+ {- J- m% ]& A6 z8 S* G' x0 X
  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 / H) {; }5 b( y5 S3 o
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 I: f+ p- n& x你用的编译命令行格式是什么?+ t+ i' Y, V" Z4 }, W  q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-17 04:46 , Processed in 0.025499 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表