找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15349|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      C# _- I# S7 c! r: c
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 w8 w; }  r& j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
: n2 E% C) O# G% wusage: himr <address> <value>. sample: himr 0x80040000 0x0- f- b- D8 Y( B( Z' h1 P

. a2 K- k/ [& U" p. \
% e) z) O# |7 p' o# P3 O不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?3 ~4 `2 H/ v4 J, x2 r) T
$ k: M  T% V( D# l
补充内容 (2012-3-8 09:42):
. ?+ A, z0 f/ R- @4 b8 Fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 g0 d( N' f3 i( ?; L
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
* q6 y: s+ S5 ~# K4 f6 V+ B3 ?8 D. G, x# n3 f
himr <address> <value>. sample: himr 0x80040000 0x0
7 a! A+ e5 \4 D
. o3 {# |5 m0 |( `" y例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 l  A8 Z; x1 O
himr 0x80040000 0x00
- s( S/ @$ N' B* o9 thimr 0x80040001 0x11
% [7 R" H3 G+ g" Thimr 0x80040002 0x22
& [& i* E6 V( m3 ^' f# D% i0 Thimr 0x80040003 0x33* }) a: Q3 A# r5 `1 h. B* x7 ^
himr 0x80040004 0x44
" w! o& \! L( [) mhimr 0x80040005 0x556 I0 G" ^  p" `4 [; o
* Q5 k8 V! W5 R9 l+ a+ n! M
SN也是类似。
( `, H  }& h+ G5 G2 c
- \4 r  r$ p3 e1 |# o# w3 Q9 q现在主要是,谁告诉我们MAC和SN的地址?
$ ]+ R: L: l. O& u0 {4 t+ x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   A% W" Z: ]5 z: P% ^" c
一直想找到运程修改MAC和SN的办法,苦于无解啊

" E6 o. {9 d  a$ o6 B, \# x1 T源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " M* a$ V' k( c3 K; d
  [" f1 s( x$ F: L: G2 q
修改的代码早有了。到今天不会编译。
" h% ~+ h- y( m& V+ M6 v4 c  o需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    6 m% f+ X( S) y" d8 e2 q; I
  2. #include <malloc.h>9 F3 L) X6 S6 b# q! n2 c
  3. #include <sys/types.h>
    ' n: D; j- f4 I& A: q2 @0 M. B' y
  4. #include <sys/stat.h>
    6 S+ o% \/ d$ o6 |
  5. #include <sys/ioctl.h>
    3 N0 P5 ?: X' ]3 M
  6. #include <stdio.h>
    . j/ g, _1 `8 X4 G! t- k6 t
  7. #include <string.h>
    ! J5 ~& J. L, e: c) W8 S" m
  8. 9 l; T: H( [5 l) F: Y1 [+ V4 F
  9. typedef struct {
    % f# H) y# N% q; B- [1 ?6 v# m& x
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 i. k' h( Z% e+ a8 \
  11.         unsigned int        sub_addr_count;
    7 x7 i2 {: i2 C- G" Z
  12.         unsigned char*        e2prom_cmd_data;1 m) `" u  h( v7 r+ q/ |  ~' |6 n
  13.         unsigned int        data_count;4 D; {0 N7 x+ w4 S
  14. } e2prom_s_cmd;
    + x4 O! \3 U$ N& q7 @4 ?
  15. 7 z% u, P) T1 i4 |( K& q  P
  16. #define E2PROM_CMD_READ 1
    5 T5 X6 X: x8 o) l
  17. #define E2PROM_CMD_WRITE 22 f2 G, X. D0 q: Y& b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". j8 B, N, n8 j
  19. , ~* t2 j4 X& i9 |4 p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    7 K& r6 _( {, _7 f1 U! z7 o7 \# P, M
  21. {" C" `) w' m1 h  c4 @
  22.         int fd, ret;
    5 v, O+ @0 ^9 i% v( H$ w% `$ }2 U
  23.         e2prom_s_cmd arg;
    ' s% f& z1 ]& P- o
  24.         unsigned char buf[0x18];
    # k1 M5 N: J( H) ^9 q! C

  25. ( l6 |/ p: \# M. a0 B% V4 K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% S. p0 [" b& G# s6 t6 G
  27.         if (fd  < 0) {
    % h* X, O% E% ^! Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % `/ V; l2 v0 ^7 |& G. E
  29.                 return -1;
    7 G8 e. I1 N# N0 J
  30.         }) @& l% c8 q8 W: n8 h! \' @0 p/ ?
  31.         arg.sub_addr_count      = 2;( }9 s/ e% ]% M3 i% I: V: E9 R! [0 t
  32.         arg.data_count          = 0x18;
    ( G9 e5 r# S! O% g% S
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 m& c" P5 U- c% ?7 W/ A
  34.         arg.e2prom_cmd_data     = buf;. N/ `" g( p% _* j# P/ V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 V+ Q, z' T# d1 i+ c8 T
  36.         if (ret != 0) {1 `4 A+ `- A9 p7 B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 ^( i) ?' F- e  m7 V9 J  M
  38.                 return -1;
    + F' {# \+ o2 x# x" y1 k( l
  39.         }! M3 s5 X2 h# N* o1 p* b# z
  40.         memcpy(mac, buf, 6);6 F5 f6 k& }3 _9 ^' u, h) {1 `
  41.         memcpy(stbid, &buf[6], 18);( O5 B" Y; _  L" a9 h  M
  42.         stbid[18] = '\0';3 t* T7 t- I: _/ l+ ~" ]  s+ i
  43. 7 O: F" p6 j6 B, y2 e8 [& r/ d: E
  44.         return 0;
    6 G& O$ I. Q2 ?" y
  45. }
    7 \8 I/ c9 z3 s
  46. 9 k! d) n; X6 j" C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" F6 _1 b5 f& y
  48. {
    5 `: `0 |5 G  H4 x3 X
  49.         int fd, ret;
    . I6 M6 H) N3 C2 V' W2 v
  50.         e2prom_s_cmd arg;0 L* d% q8 y" d6 i8 b- L2 ^1 t
  51.         unsigned char buf[0x18];9 K9 L) \% n3 f- l( E7 E
  52. / I3 M9 c4 |7 Z
  53.         memcpy(buf, mac, 6);
    7 T! c, [8 J( W3 P$ a9 K
  54.         memcpy(&buf[6], stbid, 18);
    / y2 n" P, n" W9 I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 p6 Q# g, b$ V5 L2 M  N: u
  56.         if (fd  < 0) {4 G9 L$ F" C+ R7 a7 E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; `, y1 L& C7 O% l/ S
  58.                 return -1;; ?  ]2 n& m# R0 a
  59.         }
    % U. A' G' L) {+ u% `2 B  O
  60.         arg.sub_addr_count      = 2;
    : J& L" U. O8 }4 _. I
  61.         arg.data_count          = 0x18;$ s: Z7 S# h& h1 r
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & `; x2 L9 _& i# q; l
  63.         arg.e2prom_cmd_data     = buf;
    ( t* C! T- `1 O4 K: B( n6 o2 i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % w# ~: l" t# G( i. C
  65.         if (ret != 0) {
    + n8 W! @+ N: o" j( J3 {/ u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 V2 X/ @' P4 V3 ~5 h* k: Y
  67.                 return -1;
    , J* [+ b2 y* A8 W% X0 Z+ J
  68.         }
    ; C+ n! G% r/ o& H3 y2 O; J& B

  69. 2 s. t6 z) D1 `( \1 h3 T) N
  70.         return 0;
      I0 [) c. T" A. O9 E
  71. }, s$ c- n4 a7 X( b" @6 o0 O" ?
  72. % n; Q$ ]) H: X; s: p& {5 c
  73. int main()
    5 C2 H8 L, ^9 Z$ X5 t" e
  74. {0 k/ {4 \2 S, G/ c. Z
  75.         char c;: F4 o. m8 |% F% S) G
  76.         int i, macs[6];
    5 {: l% t; @3 s& t- o0 z
  77.         unsigned char mac[6];6 Y/ b, Q" p$ @4 _* F5 a0 x! b& z- g
  78.         unsigned char stbid[256];$ d2 P. G" D5 [, W: a; Z
  79. ( Q4 k  S: W1 A' c2 f
  80.         if (readparam(mac, stbid) < 0): Y7 z% `1 z9 f: ^# d
  81.                 return 1;
    ' S, K) s  |5 Z# T8 L, r1 K

  82.   S( k+ {, W' B8 Z8 ^, x
  83.         printf("Current parameters: \n");; l; x' q* L& o& Y7 w) J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 `! o" R, I1 E" a; n1 i2 _/ J0 B
  85.         printf("  STBID: %s\n", stbid);: _( m/ z4 F+ P- g& P3 p: V
  86.        
    3 D* N( i' X+ p7 o  |; \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( Z6 r; T8 G) _/ x5 R* Y. s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; }% ?2 H0 m: P! T  }% y; x
  89.                 printf("Input MAC error\n");
    , z2 T8 }' P7 Q! H) _6 m% u6 N  _
  90.                 return 1;5 D9 [' Y1 Y1 `8 O0 z& G2 \4 m
  91.         }
    . ?! R) V6 l( F/ o8 E* j' j
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * A4 E6 ]* G4 K" F$ p: c
  93.         printf("\nPlease input new STBID: ");8 ~. b( j7 i$ q/ f( h
  94.         scanf("%s", stbid);
    ; G3 j8 `. ^2 z4 a+ d( j
  95.         if (strlen(stbid) != 18) {
    " L# M% k0 Z+ o: z( l
  96.                 printf("Invalid stbid\n");/ x: N  e  m% h) G
  97.                 return 1;
    5 L" a/ b0 X) a  C: u2 `2 K3 r3 b
  98.         }
    0 l9 ]/ [5 h. I6 s, p! j
  99.         printf("\nNew parameters: \n");$ W! P3 h, p& `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + R4 U  c* l4 ]0 I4 b; c6 L! ?5 ^  M
  101.         printf("  STBID: %s\n", stbid);
    7 {7 u( L6 h, @5 h

  102. % o4 a  t  o4 v4 {, c
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 e5 b- a* O7 A
  104.         for (;;) {
    % T7 F& o& D" S. U( ^/ f6 F
  105.                 c = getchar();
    0 j3 j+ j4 D( [- v1 U; V
  106.                 if (c == 'y' || c == 'Y'): U4 Z. i, H! F/ O% b
  107.                         break;0 A* g7 c0 I9 Z$ u6 w6 Y$ V
  108.                 if (c == 'n' || c == 'N') {* C. c* g; p* `# E8 d! _- ~0 ^
  109.                         printf("\nAborted.\n");
    $ X. H  X  a$ W# S
  110.                         return 1;
    7 l4 B2 b2 R! Z5 K5 ]' O. x" D
  111.                 }
    5 z  h3 _/ f. w/ |/ g4 k$ W
  112.         }& b! e8 r$ S8 ?
  113.         if (writeparam(mac, stbid) == 0)
    8 k. u' Q! I/ ^# Z  `8 O  y
  114.                 printf("Parameters changed.\n");
    + z# ^- W- Z8 y4 x0 K

  115. ) i: G+ G8 B8 z' J& L! f: I
  116.         return 0;! b3 d) e& m$ `( f
  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
8 q& ?/ y! F: n# ]在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 P( H9 ]$ q4 q1 `
你用的编译命令行格式是什么?
6 P" S' P% B3 c$ X
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-25 11:32 , Processed in 0.066405 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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