找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15361|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 _( ~6 a6 X4 b1 v* Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 W, j# S( g2 {; @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( i9 k8 r' o' A/ f7 ^6 ^( Iusage: himr <address> <value>. sample: himr 0x80040000 0x0
8 \7 h5 w; l: L1 R* F1 f0 ]4 g
, z# `5 x& L4 q* e5 Y) D: E- n4 I* L: f! c- M
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& x3 O& f1 V. T& Z# y

8 m9 H) K" v6 X2 |8 u补充内容 (2012-3-8 09:42):
% ~" j" }/ j; Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 [/ b. I( g, l, s7 Y  l这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。% v7 _9 o$ n" O9 K, a
$ v8 f) N0 u! i6 E  H
himr <address> <value>. sample: himr 0x80040000 0x01 Y- x6 h8 I6 [5 I2 |* V: K# V/ X

/ I: a7 O0 G# r8 @6 N: |& u' f% R例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: @6 ~+ A# {5 j8 [+ O. Thimr 0x80040000 0x006 ?0 I1 B6 z- h  t& @1 q
himr 0x80040001 0x11
( b6 L4 |' y% q4 \/ ahimr 0x80040002 0x22$ c$ J, U' \/ I8 Z
himr 0x80040003 0x33
3 ]- r' W3 O7 {- Uhimr 0x80040004 0x44: y; b4 m$ D% R# ^! ~' }
himr 0x80040005 0x55
7 g3 O: X9 k/ I5 P
9 q  a/ v" O; ~: @5 L" V! Q9 Z, ASN也是类似。
$ }) Q% H/ g* O, t& j2 E- Y5 \
$ Z5 F1 f$ ]5 h2 u现在主要是,谁告诉我们MAC和SN的地址?
( r  P5 \: }, Q% |, |! c9 ~  b6 b2 y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 8 B0 P! ]* y- T' p. [/ V& C! C
一直想找到运程修改MAC和SN的办法,苦于无解啊
5 a) d" E3 k4 E' @) k6 ]
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 J6 J, V9 J4 F; o2 D4 [7 ?" G4 t" y4 r& j3 d3 q2 s! c
修改的代码早有了。到今天不会编译。
+ O3 T. U/ e) _3 G需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
      x1 Z4 X" j# U7 v. j% p
  2. #include <malloc.h>
    / `& ?7 w# S) r6 \/ q5 d  A
  3. #include <sys/types.h>
    ; H0 y% i  x# ]3 a. A
  4. #include <sys/stat.h>
    / l3 Z! Q, u1 j1 X6 Y8 q
  5. #include <sys/ioctl.h>
      O$ ]4 p7 g7 D0 @- k
  6. #include <stdio.h>
    : r" R8 T- J( X2 J. S
  7. #include <string.h>
    4 W8 I7 s& e& R% V- G$ H2 }/ `& R

  8. 8 m$ F# U/ x+ O7 d* J
  9. typedef struct {
    : Q  U/ Y' \7 L5 b- P
  10.         unsigned int        e2prom_cmd_sub_addr;6 k% l! F: {, T, w
  11.         unsigned int        sub_addr_count;$ S! B, w8 x8 O: `
  12.         unsigned char*        e2prom_cmd_data;
    4 n6 @+ S" D' {/ X( I5 a0 z; Z
  13.         unsigned int        data_count;
    2 Q. `1 W" ?& Y' a5 C
  14. } e2prom_s_cmd;
    ' r% O  L3 Z2 |
  15. 9 P& f" c0 @. ?! f0 o% X) o
  16. #define E2PROM_CMD_READ 1- c. r4 ^7 S: P& O+ A1 i
  17. #define E2PROM_CMD_WRITE 25 A/ O- v, \, Y! R+ h( B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' ]& K( e- L2 R0 _/ y, i
  19. 7 p  b* O9 q5 ?7 ~& d/ f7 L
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 e" m* i3 M0 F% P9 O2 w
  21. {1 h* m- I0 O& M
  22.         int fd, ret;/ \4 }3 }9 {! ?, ]
  23.         e2prom_s_cmd arg;
    1 u' z. m# E; ?3 N& G9 \6 N" H
  24.         unsigned char buf[0x18];5 e/ K  e. \6 ?: L
  25. : W9 q0 V& M5 x: O# M* z2 x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 M; x5 B# z; I6 P7 @
  27.         if (fd  < 0) {( _& q% \. V# W
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) P5 n# U0 a5 I4 g9 s: A
  29.                 return -1;
    ! U- B# m0 L/ ~  j, f
  30.         }
    % G5 q4 x% J8 e9 ~9 d' |3 O
  31.         arg.sub_addr_count      = 2;1 K0 Z! j8 B9 y6 f4 g
  32.         arg.data_count          = 0x18;
    2 |; r  f. n& y( {2 L& k* g
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 y# n& o0 r9 e/ r* t" U  p, J0 Q
  34.         arg.e2prom_cmd_data     = buf;
    8 C% x$ w/ r& ?  g/ k7 _: f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# B% g" O, i+ ?
  36.         if (ret != 0) {; p* P+ u7 y% @' w0 a# n9 Z; G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * u- T# J3 z$ u# y
  38.                 return -1;
    ( U# X# h5 W* T1 h9 F
  39.         }- F' u; z5 o- G" h4 i
  40.         memcpy(mac, buf, 6);5 b( z. L. w1 Z( X' V* ?
  41.         memcpy(stbid, &buf[6], 18);" C7 _, x( \; W5 y& Z: i
  42.         stbid[18] = '\0';7 o4 S" Z& X7 @. A. x8 B$ t* L

  43. , r2 K) a. i! U* E: M0 t* j
  44.         return 0;
    " s  h% ?+ V9 z: I: K
  45. }+ d2 f3 z; }8 p
  46. & O' O" g8 F% f2 w' D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ p/ ^) r* X0 q" s8 i* g! R
  48. {7 \/ r7 w5 Z9 v! b* s- c0 G
  49.         int fd, ret;
    / V) p" u4 x8 @2 w5 s
  50.         e2prom_s_cmd arg;) n/ \3 C! g) V+ X( G1 O2 a% P
  51.         unsigned char buf[0x18];
    ) V8 G0 u* Y3 u! l: v( I5 c% l

  52. 6 v: w2 v9 l* o) D3 m+ ^& h
  53.         memcpy(buf, mac, 6);$ H% r( Q+ k7 [
  54.         memcpy(&buf[6], stbid, 18);- T+ {4 A/ P/ m9 q( G
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( f/ l2 _2 \8 i/ |3 `6 l
  56.         if (fd  < 0) {
    2 _' m, z2 I" i( V( y& c2 v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 [5 K# l& d( }
  58.                 return -1;0 O' L. w7 [8 w) u: E2 k
  59.         }
    ) d0 R& p2 W; |/ ?$ Y* y
  60.         arg.sub_addr_count      = 2;0 o; E$ m/ l! a; ]8 f
  61.         arg.data_count          = 0x18;
    . w0 Y" s: t2 p, H( O
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 A6 ~) @8 C* k
  63.         arg.e2prom_cmd_data     = buf;# v+ C* H' W5 b! n/ L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ ?' F, |$ c$ f
  65.         if (ret != 0) {# t& o; h! H% b- h' X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    / |1 A3 ^+ L( q4 K
  67.                 return -1;9 Z) P! R: X: C2 Z/ @- X
  68.         }
    ! X1 R$ G. Q5 s6 R5 U! A
  69.   C3 x4 m# j/ o6 s8 U2 `* R
  70.         return 0;
    # m! }& ?, Z; s2 K
  71. }& N, E6 e' y+ n* j
  72. 2 Y- X$ w9 u  h
  73. int main()' y$ L# x% H, k4 x5 }) e
  74. {+ D; w; @9 \! {  x3 F
  75.         char c;
    2 u" [5 ]0 G# U3 O; x* |$ z' p4 x* |
  76.         int i, macs[6];
    , _" i7 j$ [5 ?* s& r
  77.         unsigned char mac[6];3 f4 e1 t$ a) B( \( ~. l, Z
  78.         unsigned char stbid[256];
    1 l9 u, Q4 a0 }1 N3 G

  79. / |0 L4 U* J( W7 m
  80.         if (readparam(mac, stbid) < 0)
    ; M- J1 q; `+ r* J! s
  81.                 return 1;7 \$ Z% A. D' m0 W- y8 L
  82. 6 \5 w  j% u9 |& W) _' ~, [
  83.         printf("Current parameters: \n");" W$ \8 k& O- V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * N$ I( ?& B- H4 a1 E, S/ M( l
  85.         printf("  STBID: %s\n", stbid);* {5 u+ d1 j+ m5 {3 ?, p
  86.        
    4 Q6 g( S3 T) p- \3 Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ |( L  d# P; n( r* l" k9 Z: f( M! i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {7 G% }3 U# R3 x1 R: [7 H+ k
  89.                 printf("Input MAC error\n");1 L' ]$ G8 m: Y2 c
  90.                 return 1;. g& I4 f! X; F( H" n5 T; l$ `
  91.         }
    : W, P  N# ]# ^) Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ \  e3 v9 L, P6 x% Y1 \
  93.         printf("\nPlease input new STBID: ");
    ; j. {. A1 H6 y8 U6 _0 F" W. ]# U
  94.         scanf("%s", stbid);6 t& X! a2 m6 W2 P" v
  95.         if (strlen(stbid) != 18) {' y3 L9 U0 A& }; m8 `) ?
  96.                 printf("Invalid stbid\n");
    ' U$ ~/ Z) j6 K1 ]3 r
  97.                 return 1;
    + [% f5 n- P! v2 \* _" A
  98.         }8 m0 }2 U; d/ R# U
  99.         printf("\nNew parameters: \n");  E- v/ |( i6 j) d) f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( G4 J0 G( s. L
  101.         printf("  STBID: %s\n", stbid);
    2 W, n- ?! B/ u( T: t3 H' ?2 I

  102. ! u$ u2 ~$ L* S+ O4 \+ n
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    $ h% {( K1 s2 w& a- G9 s
  104.         for (;;) {
    ! D7 t& V- n9 z5 L0 s8 a# J
  105.                 c = getchar();5 ?  c6 v8 p) J3 c
  106.                 if (c == 'y' || c == 'Y')
    + L" e1 h& j; z. v, k! E. i" W
  107.                         break;( C9 `  g# B: e9 X9 B; o
  108.                 if (c == 'n' || c == 'N') {
    - `% B  G6 ?" R8 ]' s
  109.                         printf("\nAborted.\n");* F' w/ u/ v& d, r' Y7 [7 C
  110.                         return 1;
    9 C+ t0 ~& k: g% n  l
  111.                 }
    # a  ?# ^* ]6 ]% y6 Z
  112.         }; \/ b% {0 {: d6 N. r
  113.         if (writeparam(mac, stbid) == 0) 7 C6 I7 ]" U7 o2 z
  114.                 printf("Parameters changed.\n");' y) W$ e+ N4 T2 W+ o
  115. + }& C& N2 ~( X3 |4 c0 Y
  116.         return 0;) l# L2 b: o$ s, X. W; w$ R% r; b
  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 9 P# ?% Y* q) G( {9 v4 J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 o% T; v, N! H0 Y" U/ b2 a你用的编译命令行格式是什么?6 ~0 ^, r5 t* V5 C. G1 \
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-29 03:59 , Processed in 0.028068 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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