查看: 17889|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% |. I( K1 Z. s+ n7 a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & t# P+ e! S* E: W3 G+ z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 F/ v8 g: S+ O9 \7 |0 V$ lusage: himr <address> <value>. sample: himr 0x80040000 0x0
7 u  h! U$ c$ k. |, {2 ]1 C" v
1 K3 h% g9 c/ j8 Q( j
4 @! M' A) }7 l9 t4 S, O2 e不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( ^% `% T3 l9 h. U7 |0 W5 C! `* ?  u% |& m) [$ m
补充内容 (2012-3-8 09:42):
  O- P% c  h% t9 ~http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' v2 j3 `/ V5 m  T& N% E$ T
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。, y% e0 r" J8 a* W+ N0 w4 i
" a# w. |& @6 M5 k! O
himr <address> <value>. sample: himr 0x80040000 0x0
/ c! s: l. Y+ b6 a2 [* X0 X" u1 G( `4 J2 R
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* I, y% {8 }3 I, Thimr 0x80040000 0x00
& f% ?) g" t/ C3 ]* t, T6 R, nhimr 0x80040001 0x11
7 b) I, M) v6 r/ ^1 Lhimr 0x80040002 0x22. i0 u, g0 \  A+ ]4 P
himr 0x80040003 0x33/ C" G1 |2 c! c! Q$ y# d4 l6 |
himr 0x80040004 0x44
+ {6 F# D3 X9 v' r8 V' }, D" khimr 0x80040005 0x55
: |) c) o7 A3 m' ^7 }: R7 a  N+ H* F( o9 l
SN也是类似。
, U! @" {) M7 ]( i6 q2 s' ]" G& ^, ~
现在主要是,谁告诉我们MAC和SN的地址?
" N; [/ A8 E" r
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * P8 y5 _6 w2 q- S! \+ Y& G
一直想找到运程修改MAC和SN的办法,苦于无解啊
* W- x# x, h8 n' M6 f" i9 i4 k
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & _9 W0 V6 e: T. \8 r$ D/ {- G$ w4 c

% M# T# d9 E( w! _修改的代码早有了。到今天不会编译。
$ y4 g5 B. W- q! S% K# c需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " n3 w1 T2 ^6 L8 g. S* }2 I
  2. #include <malloc.h>8 N! x5 e8 U5 u# ~3 {0 r: K, P
  3. #include <sys/types.h>
    / h) g4 Z! b0 S7 p. Y4 \
  4. #include <sys/stat.h>$ G7 f& _# A. r1 k5 O0 C
  5. #include <sys/ioctl.h>
    : R, U( |" v" F0 G- z
  6. #include <stdio.h>
    7 b5 s. Y' g( a2 t2 K' M/ n. \$ V& R1 `
  7. #include <string.h>/ C& n5 Q; G7 l7 p5 H6 y

  8. ! O0 i) I) e3 x! W( P6 d2 P
  9. typedef struct {
    . Y& I# K; T* r, n
  10.         unsigned int        e2prom_cmd_sub_addr;
    + g5 h, j, j6 t! O
  11.         unsigned int        sub_addr_count;, ]2 y0 m+ o7 \7 t( [  D
  12.         unsigned char*        e2prom_cmd_data;
    & r4 y) {3 }& E8 l
  13.         unsigned int        data_count;
    2 y+ V" @% G% b1 {! D
  14. } e2prom_s_cmd;# W! d( `, z) g2 T* g

  15. ( v3 X$ h: [' ~6 }
  16. #define E2PROM_CMD_READ 1
    / B% \2 ^; D; P2 p- O- E. ]* h+ `
  17. #define E2PROM_CMD_WRITE 28 u9 u$ Y5 {( p$ x3 B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ x" U+ \, u' C  n  C

  19. : J/ H. r% e6 R# ^" f* r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 e- A5 J# ~" E3 ]4 w& I
  21. {
    ! L7 z1 N5 @" J& d" |0 R3 g
  22.         int fd, ret;" c& S" L* K) l& l2 n
  23.         e2prom_s_cmd arg;
    7 _: }' m! }6 Z1 K, V! q
  24.         unsigned char buf[0x18];( ]" X) }! R0 D2 T! n

  25. 6 C7 ?* N6 p" {. F' m+ {0 B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 F' Z* A; f! _& q: ^# X7 W: s
  27.         if (fd  < 0) {
    ) |  y! a$ ]* v6 L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( K9 \  I9 F7 o) n/ B
  29.                 return -1;* K1 k3 ?  G, B
  30.         }
    ) ^* M. l7 r  T, _8 |
  31.         arg.sub_addr_count      = 2;2 X% O' q: J2 A- a7 d1 r
  32.         arg.data_count          = 0x18;
    1 b0 `0 Q) m+ a% W, d! O: U
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ b) ^- q) h+ T5 e' S2 i
  34.         arg.e2prom_cmd_data     = buf;1 G& _: a# r! l$ _+ T
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( i9 R( ]3 F9 g# s! _( D9 ^
  36.         if (ret != 0) {
    : w7 d9 x3 D* k3 {" r: h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) `9 F; A; @- g  u  `
  38.                 return -1;' n. Q; l7 ?  }; k* r; y
  39.         }
    ( i% r2 _8 ]7 U8 ], `2 f0 _
  40.         memcpy(mac, buf, 6);
    * @% n' b2 m9 I+ s
  41.         memcpy(stbid, &buf[6], 18);8 |. m% ?8 _1 J# W: S
  42.         stbid[18] = '\0';
    , Q( L0 H% g& X+ x! a& B
  43. 3 H1 O$ H4 k% z% k
  44.         return 0;
    # u( s' X( f: B4 k! J
  45. }* Y  Q/ l5 n( K0 ^
  46. 2 j; u. ?, {+ j* r! V0 f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ B6 |, s& @' Z5 S& a" O
  48. {! t! m3 [+ {: N" k1 s% y
  49.         int fd, ret;/ A$ B7 l7 _" e( E8 }6 E3 r
  50.         e2prom_s_cmd arg;  h" E) Z( `; u* u5 x7 C% [) J
  51.         unsigned char buf[0x18];2 t/ x( D4 b$ \" _

  52. ! U5 q4 s3 Q4 U- ~' x6 E: [# s) d
  53.         memcpy(buf, mac, 6);
    6 u9 l4 Q  }# S2 ]
  54.         memcpy(&buf[6], stbid, 18);( h: x) c% u1 a0 j* P2 w$ L' O
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; f6 l  g) N( X! @
  56.         if (fd  < 0) {
    " q- M# e; l' q: ]/ d0 A% q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);" m' }0 ^2 I" J$ }/ G' V
  58.                 return -1;5 u+ k# M& D: x8 f0 h& b3 J- c
  59.         }
    # e; f- S* L- x2 J/ u1 q
  60.         arg.sub_addr_count      = 2;
    ( |" h7 v' h1 R$ g
  61.         arg.data_count          = 0x18;/ X. h% A0 @3 S1 L; M. f! F/ b; G. H
  62.         arg.e2prom_cmd_sub_addr = 0x290;2 r9 {: P& n7 y* E8 b
  63.         arg.e2prom_cmd_data     = buf;* ~$ o, y' ]9 U- h0 {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      r0 k  R, s  K& Q& {. O) v' g; }
  65.         if (ret != 0) {
    3 e5 [: `) Z) m% v8 C
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! u3 A* t% A2 j8 W/ f& d
  67.                 return -1;
    - W: [( B% P( C2 [+ _
  68.         }9 d2 G' C* q1 `
  69. 8 R6 F2 T1 U/ R2 F6 ^
  70.         return 0;6 b/ L- a$ {$ ?( x- c  y
  71. }$ l, [) ~9 }% @' `+ b

  72. 1 J/ Q( T$ a. `. @! f% A$ N. G
  73. int main()
    8 D% l* F6 ?6 n8 }2 u: P2 [. A+ f
  74. {
    / C) F; `6 h5 n0 I8 H0 o) g
  75.         char c;
    6 y7 ]" B3 A9 S2 ~: W6 A5 e( D: ?
  76.         int i, macs[6];/ i* `# H0 a- |' ^) w0 R" v5 n7 {
  77.         unsigned char mac[6];
    $ }# C' _: l6 v- T
  78.         unsigned char stbid[256];& b+ Z' @4 I- @4 R

  79. 9 v% ^1 q! M: M! ^2 v+ \
  80.         if (readparam(mac, stbid) < 0)3 v% y4 w- Z: g7 n) x% |3 x
  81.                 return 1;
    # v& b( Y9 t7 ~' `% k  y! y6 N
  82. : K1 j! \; z& f. F
  83.         printf("Current parameters: \n");
    # M+ }" E- D6 t1 p# j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( z( O! H, k% L9 E. S
  85.         printf("  STBID: %s\n", stbid);8 I2 `5 o& N; ~
  86.         5 i3 M( @3 w/ O
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 m: a! p6 X; ~( \3 e7 Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; P) y% p& O- N) E" v, B. i
  89.                 printf("Input MAC error\n");
    0 g' p  i- ~/ r/ U1 ?% Q* z# r6 w
  90.                 return 1;
    " _/ ^3 i6 V7 Y3 N
  91.         }8 a. `; D% v+ i8 c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 k* B; ~; E! L! T8 K- u2 ?
  93.         printf("\nPlease input new STBID: ");
    $ U4 f/ H( Q9 o, ]
  94.         scanf("%s", stbid);
    9 p1 W" Y$ v! l) A6 o
  95.         if (strlen(stbid) != 18) {
    % l9 }) g3 `# g" B0 s  |
  96.                 printf("Invalid stbid\n");  P4 l( \: H; }3 R0 E
  97.                 return 1;* O; ~( m- t& I3 \& a: J) ?2 Q8 {
  98.         }
    , b% ?8 i$ c  d9 C; g4 P2 W: s0 j+ E; s
  99.         printf("\nNew parameters: \n");5 u7 B! p, n0 D# ]
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 I3 {6 n' g/ \
  101.         printf("  STBID: %s\n", stbid);0 v  R2 t& `+ R! P5 \
  102. - D( l/ R; H0 |) f- u" C
  103.         printf("\nDo you want to change paramemters? (y/N) ");! ~- C; E1 K" W% a3 _" h) V
  104.         for (;;) {
      ]0 Z2 W& `; u& A2 R6 ?
  105.                 c = getchar();
      X% T5 Z# I6 F+ N
  106.                 if (c == 'y' || c == 'Y')8 `7 H4 [% r+ w: s
  107.                         break;
    ; j) o) X0 g0 Q& D  A6 t: X" \
  108.                 if (c == 'n' || c == 'N') {- v& k+ h! t6 l8 H$ r( n+ @7 m3 N
  109.                         printf("\nAborted.\n");+ \6 j- A3 ?$ {+ d* N
  110.                         return 1;& v& G( P2 A) c9 B5 t2 S
  111.                 }( A) m7 t3 g/ d% I/ l. |) B
  112.         }
    ! r' h$ a* E4 b# m/ W+ `
  113.         if (writeparam(mac, stbid) == 0) 2 a# t* P, f/ L9 I; y
  114.                 printf("Parameters changed.\n");. u; v1 r* ~9 |6 s% s
  115. - a( s( s) f3 r( c, T
  116.         return 0;; ^5 e# j$ Q+ x4 g  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 " _1 J8 a- I! Z: E
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 g& j6 I7 o8 d6 C1 F你用的编译命令行格式是什么?
- @6 c" v' R7 |5 E2 s) F9 Z
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部