查看: 17314|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr$ K$ o. E. ]6 w/ H1 ^9 S4 \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# I" [$ i  U& g8 E/ U+ k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ a1 a! K+ R" p) m
usage: himr <address> <value>. sample: himr 0x80040000 0x03 W5 k' R8 y6 X
9 M+ Y# ]7 E+ G2 \2 m1 }
3 ~7 k# s6 o$ k1 T
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, K4 s5 d- M" b$ e* `+ N# B, q) K$ }) q4 y: s
补充内容 (2012-3-8 09:42):
) L; {0 ]8 ]2 {; N# }; c7 _- Yhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  {; T- @' q, m2 `5 G这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。6 f# |/ H7 H  _0 y; C+ x

( K9 w' c# j; F& ]himr <address> <value>. sample: himr 0x80040000 0x0
1 x) C$ E$ M2 W3 O$ F: L& f/ d8 X- W$ d5 Z+ E) C
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
0 d4 n0 Y8 W. s# |himr 0x80040000 0x00: z- l2 D0 M/ L, _1 v& C
himr 0x80040001 0x11
0 T" _7 m3 @; b0 R' t( I/ q3 Y3 whimr 0x80040002 0x22
0 r- l6 b3 d4 C; r/ S  s& Qhimr 0x80040003 0x33/ R, q3 ?7 k! T, O& `
himr 0x80040004 0x44
' A( {. E+ r, j- W+ E% Uhimr 0x80040005 0x55, Q. U& q, K- ?4 s; w

8 L& l9 I1 S. }/ I* p+ m" S$ |SN也是类似。
5 j) i4 G+ H# ?
+ k  {; x& Y+ S现在主要是,谁告诉我们MAC和SN的地址?
% l2 p' Y& E; B# m- M$ x. ~
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : _9 L* v% B- B( Y, u( ~1 p0 b) O
一直想找到运程修改MAC和SN的办法,苦于无解啊
$ `5 N1 ~& S4 R/ o
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 m5 M) U* V  U' g; q# N) c

3 f$ O& |8 Z, T8 I( C修改的代码早有了。到今天不会编译。0 j( E& a2 Y5 r% y2 H9 M
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 _( D* A: [; g  T4 p* t
  2. #include <malloc.h>8 r7 X! f0 N% {) W1 P
  3. #include <sys/types.h>
    / b! s! t# s! b1 X# K, ]5 n
  4. #include <sys/stat.h>2 T- n4 \: p: C5 A/ }
  5. #include <sys/ioctl.h>
    3 U3 y4 i7 j3 F5 I, A# |
  6. #include <stdio.h>& q1 N2 l2 L! }
  7. #include <string.h>* Z$ _+ \( o) d% s( d& c
  8. . k) t- d, h9 ~  d, _& T
  9. typedef struct {
    6 |  o' j3 {2 n& J
  10.         unsigned int        e2prom_cmd_sub_addr;
    / w( K. o  c2 Q+ @4 _1 I8 R( t8 I3 j
  11.         unsigned int        sub_addr_count;
    2 o% W8 _5 I6 _: Z: a1 }7 j
  12.         unsigned char*        e2prom_cmd_data;
    $ k& [. D! [) b5 {8 |2 j( u* Z! \
  13.         unsigned int        data_count;
    6 b5 ]1 s, Q2 J
  14. } e2prom_s_cmd;( k3 F0 K% S. K( j. j% i2 ^( B* p

  15. ; m2 c) T* u! |9 @
  16. #define E2PROM_CMD_READ 1( X* ?# Z3 @: w6 R6 d+ O
  17. #define E2PROM_CMD_WRITE 2$ c& q- y% w! h/ E) @2 F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , N5 s- c7 [3 p: O) p* _
  19. 0 q: I$ G$ d. g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 _& T" n% Y: O2 C. a1 n$ _+ i
  21. {* O6 @7 P, A7 Y) N
  22.         int fd, ret;4 |9 }0 V1 D# n1 x  D
  23.         e2prom_s_cmd arg;
    + B7 w  i3 U) ?& I/ H
  24.         unsigned char buf[0x18];
    " Y8 o# }" h7 E) z0 l) f

  25. 4 z2 f9 u# z0 [' Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 |0 J2 m4 Q' }6 R3 H
  27.         if (fd  < 0) {2 D* k; {1 |7 R. s  |4 O
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 X& `7 g& j/ w5 ]# q
  29.                 return -1;
    3 O9 ^- v: `$ `# Y" ^9 z
  30.         }
    6 Y  G# Z0 Y" c2 ~7 r, U" z; ?. C
  31.         arg.sub_addr_count      = 2;3 \2 K0 j) w/ D: t6 s, w! x, A* w
  32.         arg.data_count          = 0x18;
    % q* [' h- u: K( k4 V2 |) ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;& v. t$ F8 N! h( l- m1 f. i% }
  34.         arg.e2prom_cmd_data     = buf;- y% M" Z" z" ?8 l/ x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * ^8 c; z0 K6 `/ y- k' l2 B
  36.         if (ret != 0) {
    ; i5 O# C* h& H  u; w+ M' e
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - r% y$ j- V  n) Y; ?, r3 `! h
  38.                 return -1;
    + a. u- n8 |4 ~7 B; r8 y, A
  39.         }1 Y) \$ q5 T: q1 O3 Y4 Q
  40.         memcpy(mac, buf, 6);
      M7 {) a  _* a4 y
  41.         memcpy(stbid, &buf[6], 18);
    " d9 R9 {! ]2 P
  42.         stbid[18] = '\0';
    8 k& ~5 D* x% `* O9 s5 d8 ^
  43. ! M2 y% r# y4 G5 O# T) N7 ^
  44.         return 0;
    $ Z. b6 |/ b" Z5 t/ V7 y
  45. }
    ( R& u  S% z! t) L- H& |
  46. 7 o( n0 f) X' k2 z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)* I& G- x6 `8 n' K6 i" Y" \
  48. {
    - a' x; ?6 ^. ^# U2 \" p
  49.         int fd, ret;: S5 W, Z0 ]/ B7 ~
  50.         e2prom_s_cmd arg;8 z( c- C; P6 W7 L
  51.         unsigned char buf[0x18];
    : y6 I0 Z9 n3 I4 y  h. L1 p
  52. ) p/ s; i) W8 A" E8 i
  53.         memcpy(buf, mac, 6);; d- t5 p* Y5 n$ S) Q# U2 u1 m
  54.         memcpy(&buf[6], stbid, 18);
    $ \- \. `) d6 b! u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 q. O& r; w! p4 S0 v( c
  56.         if (fd  < 0) {
    ( x( J0 N$ X( o3 j
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , E/ e1 o" C& ?3 \' i- S3 X
  58.                 return -1;3 R2 y( w4 l3 ]! F
  59.         }) P- M, D$ v( x
  60.         arg.sub_addr_count      = 2;' f( x4 d! \$ T0 j
  61.         arg.data_count          = 0x18;
      h, |7 A8 t7 ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    - D& ]0 V! @/ j0 `
  63.         arg.e2prom_cmd_data     = buf;2 ^  u+ c: C) H3 c, O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" D  U3 G0 f0 r
  65.         if (ret != 0) {
    4 R$ j: _& g- w+ _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) M6 q, F8 l6 A" `. o
  67.                 return -1;
    + ~+ t0 b7 u9 o4 r
  68.         }
    , d- v! o/ X. @; Q
  69. ! X: a, X- y/ k' R" Q. L- X4 z- z
  70.         return 0;
    1 O9 C4 ^* L: X; B; k' `" t
  71. }. Y# c. R& l4 H' K
  72. ' b! i% Z% U* i% u# w0 e& Z' C& U, [
  73. int main()7 r; r4 K. C' C5 H
  74. {
    - c) l6 f; `  ?/ d, b! b* w6 @) }
  75.         char c;" V5 v# g% i5 ^& o4 E4 `, j! `; f& J
  76.         int i, macs[6];) v- Z  W& h  _2 @
  77.         unsigned char mac[6];
    ) @& s! }* L6 `5 z% f5 n* G9 L
  78.         unsigned char stbid[256];1 |$ [8 l- ?8 s* g  n1 B' W

  79. + z* P! l# t2 }) z$ K+ h
  80.         if (readparam(mac, stbid) < 0)9 x. E/ }$ b- _6 H
  81.                 return 1;2 w% \3 E5 b9 Y) S+ X0 u

  82. 4 W$ o$ Z3 n2 M+ J
  83.         printf("Current parameters: \n");, ]3 ~- @9 S7 e- W. h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! {# D) B0 V/ m! \- |
  85.         printf("  STBID: %s\n", stbid);1 A* T' W. [& o& ?9 n# x- E
  86.        
    ) M- {* z2 d. v$ W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' B- m6 z( B- i0 H4 x* o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 v" Y2 B0 q, z- T% T
  89.                 printf("Input MAC error\n");
    4 C3 S+ _1 y0 U% x/ O+ c
  90.                 return 1;
    2 _- p! Y& w2 Y& M' n
  91.         }
    ! o/ y% d- i; U  [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& }* B: t8 _2 N- v  ?3 J, R
  93.         printf("\nPlease input new STBID: ");, a# I( _) l" @
  94.         scanf("%s", stbid);4 P' }2 }6 ~" s# W
  95.         if (strlen(stbid) != 18) {
    / z! A0 K4 U1 B3 a) j  b
  96.                 printf("Invalid stbid\n");
    : a+ B4 {7 X/ I6 o. k1 N/ c
  97.                 return 1;% @2 ^, C1 w1 W, N1 G5 [
  98.         }
    0 c0 \) g3 h# `! _9 @, x; S7 ?; ^' N' ^
  99.         printf("\nNew parameters: \n");4 m5 N. L6 {2 w5 `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # v' r; d' A. g8 E
  101.         printf("  STBID: %s\n", stbid);
    4 `0 d) d4 W# T) X! |8 x! B

  102. * E* T! R4 s& @/ ]1 @1 J' n
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 Z5 n0 g- D+ y! i$ X- Q
  104.         for (;;) {9 q9 j# R; f9 ^
  105.                 c = getchar();& R' _+ Q, [3 g. n( K& s5 t* ?4 X- F
  106.                 if (c == 'y' || c == 'Y')! S# o1 C1 i! u4 m
  107.                         break;4 ]7 P, n1 f4 [* |6 ~# T5 i
  108.                 if (c == 'n' || c == 'N') {
    2 K9 ?& Y) n" }
  109.                         printf("\nAborted.\n");
    + G2 C! p  E2 R6 p9 g- S4 v0 b
  110.                         return 1;
    & e. l# q9 D! Z- ~; y7 Q- I
  111.                 }
    9 n+ P+ g8 [$ B( v
  112.         }
    ' R6 N7 j( b, y1 N
  113.         if (writeparam(mac, stbid) == 0) 0 P. F5 t/ w5 L" v6 e( R7 j- d
  114.                 printf("Parameters changed.\n");) b& x( g1 L7 a; n: j6 n

  115. + C$ l2 f$ Q$ v! ~7 a4 |: H
  116.         return 0;/ W4 m* C- t7 m$ b9 [4 L* v% ~
  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 ' Q8 g6 A# l/ [( G; D
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: ^" i5 D  Q- O
你用的编译命令行格式是什么?8 ~; _0 e+ Z& q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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