找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15398|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 e; u9 X7 b5 V/ E, U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ N' `3 v2 d1 C" O9 k' ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 P) B, {! ~3 E( E8 h
usage: himr <address> <value>. sample: himr 0x80040000 0x03 ^' M" l0 T7 y

: t: T" J% c# H  }9 I! \
' b" c0 V/ R$ [% q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; v% V$ h" g9 k4 h2 r7 k
7 a7 K0 X7 J0 I
补充内容 (2012-3-8 09:42):
5 @( W7 C, C- _- Dhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( ?% G7 ?- q! i* q4 ~0 D7 V
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ D5 P9 W. `; Y- I
) ]3 H( D8 r5 G
himr <address> <value>. sample: himr 0x80040000 0x0
& T4 y$ Z8 p: A/ R4 }' J- r& X# y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。4 z( d! Y1 f' p, [5 m/ I( `
himr 0x80040000 0x00
! L( d& c- H! z( g& Mhimr 0x80040001 0x11; j6 W- e/ }, t& Q. G- e
himr 0x80040002 0x224 T* ]9 y5 s; q) A( s) y# E
himr 0x80040003 0x33  I8 e: B/ i, m# G
himr 0x80040004 0x449 \* P. e9 v) ]; h% x' _5 @! k. x2 R
himr 0x80040005 0x55( x0 r0 _6 N6 U/ V
+ n* ?+ a- |6 m- e! `5 X
SN也是类似。6 d8 M) P0 r% p' t  k) r- t/ j& K

) w/ o  A% f$ k2 r6 N现在主要是,谁告诉我们MAC和SN的地址?
. J$ V! `% H4 A0 g) c; F: l' J
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; u7 [8 P( y( V* c3 {$ k一直想找到运程修改MAC和SN的办法,苦于无解啊
6 @* A3 ~7 N1 Y, Y( _' S7 A- L8 I, [
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! d1 q" v' H: ~; n) M
% a/ [6 x3 Z8 t, M3 O: F
修改的代码早有了。到今天不会编译。
/ f  q; V! I! p* _# {  R4 f需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 v) ~7 _- ]" t+ I" ]4 g1 w
  2. #include <malloc.h>' L6 X& n) f5 j' t" H: p
  3. #include <sys/types.h>, d7 k9 w% p. b6 ?8 Y# w% n* ~) ?
  4. #include <sys/stat.h>) U/ N8 X# E" s* ~
  5. #include <sys/ioctl.h>
    , V# J  Q; e# B" h; J) d- t
  6. #include <stdio.h>
    - i, R( K: V& n4 H& i6 i. G* A, A
  7. #include <string.h>+ ~: t  X: ~$ g4 y1 |- P9 J
  8. ; ?; c' s6 A) [' H1 h
  9. typedef struct {
    9 O4 y, C: u* D
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) `7 W  q1 r6 L, b* r
  11.         unsigned int        sub_addr_count;+ r" B/ u( S* |8 N
  12.         unsigned char*        e2prom_cmd_data;
    9 P1 |! E# p* x# X6 q! V
  13.         unsigned int        data_count;
    6 D7 f0 k1 F/ ^$ l" X
  14. } e2prom_s_cmd;
    5 {" u9 N: I$ D0 u# `/ R8 k
  15. ) t- I7 S5 J1 g7 H6 C; b0 @
  16. #define E2PROM_CMD_READ 1
    & X9 w+ Y; W* k8 v. [+ A
  17. #define E2PROM_CMD_WRITE 2
    9 y3 L) |8 Z, y5 _% t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . g1 h, z0 i& ^$ y! w* c

  19. ! h$ V8 l6 G! k$ m# u4 _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( u8 O% p& b; R7 E
  21. {
    , A+ |: z3 \% X" D2 t
  22.         int fd, ret;
    * Q- e8 T5 O* `/ C- A/ Z2 t1 d
  23.         e2prom_s_cmd arg;8 I' S( p$ F# l: ]
  24.         unsigned char buf[0x18];
    7 j% D$ t7 I# T( D0 I/ m' p

  25. ; n4 Y7 j  @2 R& }" U
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + I- G7 t4 M& n! }; R9 Z& I4 \) ?
  27.         if (fd  < 0) {/ B& U5 V" \1 x8 g6 b; T
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 S& Y$ k# d" E9 P
  29.                 return -1;
    5 @4 A* ~) O7 w2 B
  30.         }5 Q6 y. A' p% u
  31.         arg.sub_addr_count      = 2;
    1 t9 |; A9 O4 k5 y( v1 r- s
  32.         arg.data_count          = 0x18;
    2 q1 |" \" W% t- ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ q; V3 I) [% u
  34.         arg.e2prom_cmd_data     = buf;0 y( H& Y1 K6 k" O, U( v
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ d. `1 s4 S- P3 J' k1 K* n! |: `" e
  36.         if (ret != 0) {
    3 w! ]" w/ P; z% n4 J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ u$ G1 h( T) W: T
  38.                 return -1;
    ! ^& {2 G" J; y' C( m
  39.         }1 X0 t  n+ O9 }; }3 o" p# y2 U
  40.         memcpy(mac, buf, 6);
    0 X. |8 I; M* A( h2 E. i
  41.         memcpy(stbid, &buf[6], 18);! L" x- P4 ~$ ]6 N% X+ |7 Z
  42.         stbid[18] = '\0';
    3 ?2 O3 K9 N/ x4 U3 w8 k, a& v0 p

  43. - m1 R; K0 d' A6 K
  44.         return 0;, W2 @4 B4 B6 [
  45. }% V* J! c4 m  ~% ^7 Q$ H. b

  46. & Y  w& `+ r  J' B" i  w/ P- ^8 a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! ?9 j; L, e( g
  48. {0 v  u; C( z8 E1 o
  49.         int fd, ret;
    9 x9 V3 X1 @' i: R( x% Y
  50.         e2prom_s_cmd arg;
    ; x$ M& E. l; T  m2 w. k6 v/ S9 N/ w
  51.         unsigned char buf[0x18];0 J6 H& X, y6 ~& |; a' Q* ^! q- B
  52. 1 d6 o/ j0 _- ?4 m, M1 ?- h
  53.         memcpy(buf, mac, 6);. L( X9 u8 \" R0 @  @7 L
  54.         memcpy(&buf[6], stbid, 18);8 o$ s3 E9 |" j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 Y# R0 W+ V. _- A' m! L
  56.         if (fd  < 0) {
    # P: R# Q+ d5 X+ Z0 O! F* l, Z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / j2 r+ R3 I# N9 t6 P. `  S
  58.                 return -1;
    : m. b3 b. i; v3 g+ a2 {. R
  59.         }
    9 D: ^: y  Z1 K2 U: S' g
  60.         arg.sub_addr_count      = 2;
    % d# @( L( d/ K5 c0 U
  61.         arg.data_count          = 0x18;1 R6 `5 G3 x% m& ^
  62.         arg.e2prom_cmd_sub_addr = 0x290;( Q2 w+ i2 ~5 }+ W" k
  63.         arg.e2prom_cmd_data     = buf;6 U4 ~, R  W" Q, U  |
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 T! m' b4 H; V( s# u% V) |$ L
  65.         if (ret != 0) {
    $ d; K, }2 Q$ c0 B- n6 w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 k& M  U1 V% Z% D: i
  67.                 return -1;2 r3 {" P" k6 b2 Q2 V8 f
  68.         }
    ) I0 {6 h! ~3 Q% J, i& h, j" _5 I
  69. 4 v% O( K* U/ b0 q2 y8 q
  70.         return 0;
    , N3 ]: J3 j& X" |# _! y5 @
  71. }
    # i$ p! p" e' Y8 ~5 {2 G

  72. . O/ H- `0 G% G  O, c* e- S/ S2 D  [0 k) _
  73. int main()
    6 m6 ^9 T) O  H* l" g
  74. {
    / ?# `6 f6 W8 ?: Y5 A
  75.         char c;9 H& F) P: B/ H
  76.         int i, macs[6];
    / P1 g; m# |2 W0 |
  77.         unsigned char mac[6];
    ! ]6 _" H8 P* j5 _& x
  78.         unsigned char stbid[256];1 W0 q- K3 P2 ?6 Z/ u5 K4 P
  79. 5 a; O) n$ J$ K
  80.         if (readparam(mac, stbid) < 0)
    ' x+ P! c- B8 k. ~9 T# B
  81.                 return 1;' |! ]3 \8 T( k; p" M$ O" E% k- }
  82. & n: }$ H% Q2 A& ]/ j; b7 q4 h% g
  83.         printf("Current parameters: \n");, N" c$ B- M9 |. y/ J. m$ p1 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 E& h8 ~2 c0 y, p2 _2 j
  85.         printf("  STBID: %s\n", stbid);
    4 g+ \* o4 ^5 M9 K. ?8 Y0 b0 m
  86.         1 _9 d& B$ }( C6 E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      s% S! _! v$ X- _" [, @0 p
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 _0 Q9 ^1 {. m  z  {
  89.                 printf("Input MAC error\n");0 p* z1 y& f9 v2 [" [
  90.                 return 1;
    : O6 U  r" Z5 \2 H: f6 X7 ^
  91.         }
    9 {0 J3 p% g9 ]' j* y4 a) t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " l2 h+ g  z; I- F$ B
  93.         printf("\nPlease input new STBID: ");) i4 @1 }0 s( r) |/ F' \" Y
  94.         scanf("%s", stbid);
    & G3 ^& m3 s0 z" {) H! u3 k  y8 L
  95.         if (strlen(stbid) != 18) {9 H% Y/ l# P. ~0 J
  96.                 printf("Invalid stbid\n");
    / X& m6 {- x( {* A% ^! N1 V: [
  97.                 return 1;
    - K4 z2 ]$ k% v6 s( Y6 t) `$ g; E
  98.         }! G2 u# [0 @0 h1 [( o
  99.         printf("\nNew parameters: \n");
      C: t- g! r" w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 _7 w4 @* [4 {1 l
  101.         printf("  STBID: %s\n", stbid);: q; W$ w8 g& R4 I* Q' o

  102. 6 l- r" c; y' @/ p
  103.         printf("\nDo you want to change paramemters? (y/N) ");& M7 W2 b# Z, Q4 L8 v
  104.         for (;;) {% X2 O5 E# ~  ~1 z
  105.                 c = getchar();9 q9 O8 ~/ g, `5 D% G8 D3 H) o
  106.                 if (c == 'y' || c == 'Y')9 [# v- i' g9 n0 N: Y& S# l
  107.                         break;
    ' J8 Y/ f: y6 L
  108.                 if (c == 'n' || c == 'N') {
    $ s1 I8 y/ r. I! g
  109.                         printf("\nAborted.\n");7 I) O& K' y% \4 n+ H0 {7 w' K
  110.                         return 1;: A* y  S" m9 w" d8 G
  111.                 }$ E$ ?1 ~/ I- c- g; B1 p
  112.         }& E- J4 @8 p( V# k& [# I
  113.         if (writeparam(mac, stbid) == 0) ' s& `* b  V1 X2 p$ X2 b
  114.                 printf("Parameters changed.\n");6 m; \' F8 }, l2 S& w

  115. $ r0 ~1 |( e0 b
  116.         return 0;
    . [: [9 r! X# {: a, \
  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 - s% A' w- o% X' C
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 i0 k; x9 R% x: e你用的编译命令行格式是什么?
* K* V5 X2 g, |- Q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-2 23:19 , Processed in 0.027275 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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