查看: 16800|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( f& q: \1 p' r3 q* S
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 T+ h; }5 H. {, k: u( z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 |  Z4 c& `6 d! j, L
usage: himr <address> <value>. sample: himr 0x80040000 0x05 r4 F& `0 X, G2 O# n  g
, Q$ r  I3 O4 r1 u( H+ w
+ x+ X4 Y1 p: }. c) Z4 S
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# Y+ h7 h* L5 R, S6 D
4 J- p+ L% _$ k8 Z
补充内容 (2012-3-8 09:42):
% n: _. S7 I4 F: H) E) hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 C  g0 g( ^# C+ Z. Z- N& Y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
: g2 o! l) L4 e3 m# \2 v: `# T1 V0 W# n
himr <address> <value>. sample: himr 0x80040000 0x0
* L; E! q, ~' a. V6 a" N+ N  I4 ^9 N$ H9 Z3 m4 _/ C
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' y* A4 x6 z) _% N
himr 0x80040000 0x00! k% J) a8 w- v! u5 \) j' Z: D
himr 0x80040001 0x118 l# [/ U$ i( [9 E. S  d9 b4 T
himr 0x80040002 0x22
5 \  G1 }5 B* S8 dhimr 0x80040003 0x33% F9 y9 x- S1 k* _' I) v2 q
himr 0x80040004 0x44% c1 D8 {! F7 k$ C# O
himr 0x80040005 0x55' q- M3 s4 C7 b. d$ z' r4 @3 j

0 U  L- c$ L. \2 ^# q+ KSN也是类似。/ B7 K. K/ f  S) V4 q% _& l, D

. H% z4 O9 B2 H- w* {! c现在主要是,谁告诉我们MAC和SN的地址?
  {  R8 B$ ^4 g8 x
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; u* f3 a% c" k: i3 f4 A
一直想找到运程修改MAC和SN的办法,苦于无解啊
3 \$ s' V4 N- l) ^( |
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( ?" @6 Z0 a) Y3 Q

4 G/ g7 q8 G+ u! U' e/ G# M0 `# e3 D5 D- y修改的代码早有了。到今天不会编译。
6 g# H) l! l" y: p! i$ M% m* W需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + K( A1 Y0 {7 u+ |! B3 k
  2. #include <malloc.h>5 E7 h9 x0 `7 ^  D: p
  3. #include <sys/types.h>2 X( ?0 f; i1 }" J; R% d
  4. #include <sys/stat.h>& k/ d; t7 d6 f4 P* z
  5. #include <sys/ioctl.h>* X( z/ _, e9 V8 m- R
  6. #include <stdio.h>7 c/ N, ^8 V9 c; p; H) L: m
  7. #include <string.h>! l( y# @, ]! w( \1 m) {

  8. % g1 I7 r. L0 t/ _6 i
  9. typedef struct {
    # ]( b5 d( x, @7 F
  10.         unsigned int        e2prom_cmd_sub_addr;
      w- ^& `! ~  p4 u
  11.         unsigned int        sub_addr_count;) `- q3 w$ n4 a* [. Y* \! ?: H& f
  12.         unsigned char*        e2prom_cmd_data;
    7 y7 B" w7 L1 c# ^' i0 G+ }3 V5 ~
  13.         unsigned int        data_count;
    7 i6 U( m, s7 z# C! V3 |& T. S
  14. } e2prom_s_cmd;2 ?% [+ [) W9 f4 o# S( W
  15. ( Z$ H. z$ `5 u6 E
  16. #define E2PROM_CMD_READ 1  O/ g$ p* ]# j% F3 M8 V
  17. #define E2PROM_CMD_WRITE 2
    % G- D2 T7 Z! s0 v" f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 V; N$ Y/ ]$ D& Y7 M, {/ ]$ Y: R

  19. ! }4 o9 }8 j$ Z6 O  r2 ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      U7 J; C9 n$ B
  21. {
    ' i7 L% j" N5 B* }7 i1 N: q# p
  22.         int fd, ret;
    8 j7 v3 ]( x% i' g* d
  23.         e2prom_s_cmd arg;* H6 ?- E: Z1 l1 z. c# T
  24.         unsigned char buf[0x18];. n4 [. ^  y- s# v. }2 @, I, h
  25. 4 U. R1 {5 I& T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 e: E$ w7 m; F, E3 E
  27.         if (fd  < 0) {2 L- G) V  ~( N; \" K4 o3 J3 A, V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ w$ P; c5 Q' ?+ Z/ A* E
  29.                 return -1;
      D/ u7 L8 d4 Z( s$ a
  30.         }  ^) n* e7 W3 S
  31.         arg.sub_addr_count      = 2;. @8 C6 f# e( X" M2 \; t& k
  32.         arg.data_count          = 0x18;7 t# r  v8 R+ ~+ v. O- Q' @/ R
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 b! l4 w6 F/ O! D2 J
  34.         arg.e2prom_cmd_data     = buf;$ ?  T' Z1 _, y) A1 s" G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ) N$ `* s0 q; f! Q( g: \* ?! J
  36.         if (ret != 0) {
    # h$ G2 U5 h& R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + E& T1 \0 w/ ^5 G
  38.                 return -1;
    + W7 ^5 o& ]0 m; b, ]8 M
  39.         }5 e7 f: a" N( h* y9 ?
  40.         memcpy(mac, buf, 6);% `7 ?) k6 x% w5 [; }
  41.         memcpy(stbid, &buf[6], 18);  ?" [0 A/ K# R
  42.         stbid[18] = '\0';' h8 v: b9 J6 |! L+ e6 q" O

  43. 7 h) t* o# R6 d- p
  44.         return 0;) C" \# u2 I. j# ]6 b: V
  45. }2 `: n8 v3 C/ V
  46. & e. g$ U+ @- H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)& C& L  N$ `+ i9 m& Q& }
  48. {: z1 q) P* W1 f! q( A: }
  49.         int fd, ret;/ g3 [3 a% A1 e2 F) g5 ^* f, E
  50.         e2prom_s_cmd arg;8 s1 F. x2 M. @9 V
  51.         unsigned char buf[0x18];
    6 C7 D( A5 b' Q. p8 e( q: R
  52. - `5 _. K- L0 p5 l
  53.         memcpy(buf, mac, 6);
    ( E# w. c" i& ]+ J$ J- N4 W8 `
  54.         memcpy(&buf[6], stbid, 18);
    $ O% x2 x& X: R; I" k9 Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) i' B9 H3 P, J& Z: Z: S
  56.         if (fd  < 0) {, F$ }* E4 H' W7 B/ \& Q5 n; Y! V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - {$ C7 O8 f# Y& }! D# Y! S
  58.                 return -1;
    2 ^: M0 T/ a$ Z: s  `9 e
  59.         }! ~! U5 o$ V  j
  60.         arg.sub_addr_count      = 2;7 A8 k( _# T' c0 I
  61.         arg.data_count          = 0x18;
    : T! o, g' y( m2 F' ^- G
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' t0 n0 E$ c! Q5 Q
  63.         arg.e2prom_cmd_data     = buf;
    0 B4 S2 W6 P3 _% Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . J: l8 P4 W2 _8 o- X. y' x4 X
  65.         if (ret != 0) {
    ' [$ \6 ?5 g3 h3 ~: \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! A% {7 s8 W( Y5 P# |
  67.                 return -1;
    8 @9 G# a) G3 m+ V. D4 R
  68.         }3 L8 |8 `8 L% C2 @

  69. * j) L5 Z' A5 `4 y' Q2 n6 X
  70.         return 0;
    ; P. k* A4 n  D1 P, ^# F- G. D. C
  71. }
    ( N9 d. F# c. h& C6 \
  72. 7 ]8 A" z; j0 I$ H7 s- u5 X8 C
  73. int main()0 J+ E  m# f0 s3 U8 @8 X
  74. {
    * q6 \- D2 O/ J( z; W, p+ I
  75.         char c;
    " ?# h5 p. v2 u2 x) Y: c
  76.         int i, macs[6];+ L+ n5 M& j# M) Z5 l
  77.         unsigned char mac[6];0 \5 T1 P5 M. c1 O8 `& z8 f8 o! }
  78.         unsigned char stbid[256];
    % v% F1 t% H: u" z8 P
  79. + V$ a, D+ M9 N0 \" P, L
  80.         if (readparam(mac, stbid) < 0)6 k' K- r5 x" u  G1 Y4 b- s' A
  81.                 return 1;
    6 v3 S* I8 J# p/ X9 A! O1 e

  82. ( A5 E$ |- Y5 S+ x+ n0 K
  83.         printf("Current parameters: \n");( l! E# U7 L2 q2 O0 p/ u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% f* S7 d6 K+ m" }
  85.         printf("  STBID: %s\n", stbid);: }+ v/ O" e: h7 I, t0 E7 m  r/ `
  86.        
    2 v( Z. w& M* x2 ?5 i7 i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 w# B7 J/ ]! y3 y4 ^/ `* S* }. `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % l0 F6 T2 \9 h: R' W
  89.                 printf("Input MAC error\n");
    / w4 R3 u3 b1 l
  90.                 return 1;
    + y. l4 ], j5 M/ p
  91.         }
    ( f0 l* k  g* A  q. j
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( e, @; ?7 K" z
  93.         printf("\nPlease input new STBID: ");
    + a, d# k6 h; J
  94.         scanf("%s", stbid);6 |' C" u% P  V# i3 k8 e5 O
  95.         if (strlen(stbid) != 18) {3 O1 Y' x- l1 Y- e0 q  I2 ~6 G
  96.                 printf("Invalid stbid\n");
    0 e, }5 F7 P0 p; q6 a1 Y
  97.                 return 1;
    / z4 Q4 y: I; W# R) X8 h: M& u
  98.         }  r  {3 R- v4 S; w# z( ~0 W, c
  99.         printf("\nNew parameters: \n");( `9 D$ R3 q6 k+ U9 l2 |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: B; s, _# r9 `; f. C
  101.         printf("  STBID: %s\n", stbid);% n3 T1 |7 s+ |7 \5 e$ J; @4 g: D
  102. 6 A6 [- d! T3 @7 Y4 D
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    9 J5 O- k( _9 ~/ x) ?- W. h
  104.         for (;;) {
    0 c1 N) e% X' Q1 [
  105.                 c = getchar();- Z; ^* f; O1 {
  106.                 if (c == 'y' || c == 'Y')3 L# n6 r& i" v, A& K
  107.                         break;% E, y6 r7 A0 H& n! Y* q) B( J! K) O
  108.                 if (c == 'n' || c == 'N') {
    0 g, T4 X) C' u& L- P: x. ~! E
  109.                         printf("\nAborted.\n");6 X- m: w; b5 a: l# |
  110.                         return 1;
    " \7 O! |: K) }  f4 J4 `8 d9 {
  111.                 }
    - |+ W6 y' ?# ]/ [( T
  112.         }
    8 R, r( q% O* m
  113.         if (writeparam(mac, stbid) == 0) " L( d$ E' X; I! d' e5 M/ p
  114.                 printf("Parameters changed.\n");& C, Q' m; c! F1 A; l: g
  115. - V. r# c) s/ R+ z) [3 Q2 A, ~
  116.         return 0;
    9 ~( q0 T! B8 m" |% F# M
  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 0 L/ B3 A$ q" A7 U1 ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 Q- f( W6 [+ x, B/ S; j" }
你用的编译命令行格式是什么?: ?6 u) F. K6 [  R
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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