找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15747|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : e2 C5 }( a8 a& {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig( Z4 \8 A$ n+ m4 h$ k% o$ X6 P8 T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" {& Y' m% K8 Q' uusage: himr <address> <value>. sample: himr 0x80040000 0x0
( l8 c1 K2 f' |% g6 @/ H# i) Q$ G" l3 E+ Q% c

( Y. _/ Q9 B: x( Y- W- t  D2 [. j不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 G& t" f& A! p) m4 A5 Q2 Y
6 L& Z% B0 Y( ]( `* k- y4 u- c$ M
补充内容 (2012-3-8 09:42):' @: x2 v9 U4 H2 \
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 E1 d( s" z4 Y6 c6 @% \这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
& j( T3 D" N) U: ?& e' R" j) J. T0 c" G
himr <address> <value>. sample: himr 0x80040000 0x0
# X6 O! w% x$ ?9 v& q% V' R/ f8 a0 y/ A$ q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) W/ z1 J) x) d4 C$ q0 J% whimr 0x80040000 0x00# G9 t% j& Y7 }4 V6 o, K0 S! i# c3 j' k
himr 0x80040001 0x11
) {+ X4 g: b; Z8 r+ a: d- hhimr 0x80040002 0x22
" k4 A8 o1 L) nhimr 0x80040003 0x333 O8 ^9 R! {9 j- e! R4 _" f
himr 0x80040004 0x44/ [8 y0 S9 e1 b) {4 [  u4 N
himr 0x80040005 0x55
$ j) x3 U/ S# m/ ?! h
5 I+ f( D6 h0 J" uSN也是类似。6 R7 i0 c; I4 B$ a
4 z3 T6 z0 K/ ^8 n
现在主要是,谁告诉我们MAC和SN的地址?. n" {) |' [" |* T9 o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ F. r( Y2 P0 q3 Q一直想找到运程修改MAC和SN的办法,苦于无解啊
! x3 _# L/ Z# V. z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( Q6 g& r( s! ]9 j. Q+ h+ _# p
- _" n( \$ B# p3 \修改的代码早有了。到今天不会编译。
- R0 F+ Z) ^, I需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ I! K+ _; z; T. C8 F
  2. #include <malloc.h>: k, f2 ^- k! ~
  3. #include <sys/types.h>8 s( P2 @2 P+ e) N# V
  4. #include <sys/stat.h>
    5 I$ J0 }% X+ a( D/ y
  5. #include <sys/ioctl.h>* k' v9 \( m, H
  6. #include <stdio.h>
    3 v' _, Y* A3 @. D/ K4 F' Z
  7. #include <string.h>  u# k5 @  l& U( M- \
  8. 1 _& A0 @+ l8 B$ {4 Q% z
  9. typedef struct {
    8 g1 W9 o7 d3 \5 H( _+ t4 y# I
  10.         unsigned int        e2prom_cmd_sub_addr;
    % }. n3 o. U8 M/ I
  11.         unsigned int        sub_addr_count;! c/ F5 P5 c0 p) {
  12.         unsigned char*        e2prom_cmd_data;
    " g% M' B6 ?. V. z
  13.         unsigned int        data_count;
    : a: S3 F8 |- ], ?& T  u
  14. } e2prom_s_cmd;  h% b8 V; x/ i! c1 x

  15. / }  v" j1 R1 _( G, ^* F2 {
  16. #define E2PROM_CMD_READ 1
    : A* }; C9 |: x, R/ l8 O8 F
  17. #define E2PROM_CMD_WRITE 2
    4 G8 I& X5 J8 H: |) p2 X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# d8 J0 `1 ]5 X# h  I

  19. 5 x! I& {# `. T/ [  x
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 G& x! u9 V4 g, j2 A0 U3 y
  21. {# C1 b6 m, c6 J8 G" D
  22.         int fd, ret;
    & s, O5 X1 L4 m2 d* W7 l# p& R
  23.         e2prom_s_cmd arg;  H: {4 D3 q% t1 j# K. j
  24.         unsigned char buf[0x18];
    # h' _. z3 n  Z& D, f, l

  25. ( Z* v; L/ g4 [8 @: A
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: \3 `) c. X: }1 A+ {5 J& N
  27.         if (fd  < 0) {
    - I) ~5 K4 y6 D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ C* f6 Q% D' T1 N0 H. `  v: o
  29.                 return -1;
    , e1 @. n' @# n- k- _
  30.         }% R7 R+ h' ~0 A# v" D( j
  31.         arg.sub_addr_count      = 2;* _" l4 S( p% O. S* R
  32.         arg.data_count          = 0x18;
    * ^3 i" ?+ |1 J6 N4 f. p
  33.         arg.e2prom_cmd_sub_addr = 0x290;& B+ z) j  i# R$ R' K4 i; l, f/ h
  34.         arg.e2prom_cmd_data     = buf;
    0 t# Z5 q% P/ I5 u1 k7 l; ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 b/ e  V" |4 x9 U( g; d
  36.         if (ret != 0) {
    . e1 G( Y3 \' |! y& J/ t
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : n; R' H4 `7 ?# r$ [
  38.                 return -1;
    & w% A+ W  m: P7 v
  39.         }
    7 |/ P, Y) K' [+ b7 @% ^
  40.         memcpy(mac, buf, 6);% }4 X* A- y) [- `$ @$ u8 j( r
  41.         memcpy(stbid, &buf[6], 18);, W5 \* o" }7 B
  42.         stbid[18] = '\0';, A- ^! v6 ?9 ~8 c, [- T
  43. ( K: @" g9 I$ j; V' i
  44.         return 0;  F8 d: P6 o( ^9 S2 [
  45. }4 w8 I2 l+ I% X/ y
  46. ; S. F5 n2 |3 Z$ l! U8 M% `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) }; D& S0 I( k, @* E) g, Y0 G
  48. {0 L9 u/ g6 V6 z4 w. Q
  49.         int fd, ret;# J) a$ ?) z/ O7 x
  50.         e2prom_s_cmd arg;0 o; A8 u; A/ E3 {9 W
  51.         unsigned char buf[0x18];
    8 f$ Z( w( Z+ |3 }1 Z% h
  52. - Q; h8 s$ H6 r
  53.         memcpy(buf, mac, 6);
    1 b" v% |7 H; b
  54.         memcpy(&buf[6], stbid, 18);  u. N' e9 x# f8 L+ Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! u) w$ O+ v! W2 F; I$ R
  56.         if (fd  < 0) {
      u; x' G1 p( I$ f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ Z. ?8 Q4 R5 ?! q0 v/ Z8 l
  58.                 return -1;
    & m2 m4 I0 `7 c$ {: f& n
  59.         }
    : T. N) w1 p6 K0 u, K
  60.         arg.sub_addr_count      = 2;
    $ [8 a2 A  ~. z
  61.         arg.data_count          = 0x18;4 R$ ]% a: }" o
  62.         arg.e2prom_cmd_sub_addr = 0x290;' z& g6 ^  ?+ e5 k# Q. r
  63.         arg.e2prom_cmd_data     = buf;
    . M. q( `' e' I% L$ {$ M7 j3 h( r
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 ?  H! f) J. b* C
  65.         if (ret != 0) {
    ' y* ]3 [) T* `: f/ ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * R9 g  ~  U; r' e
  67.                 return -1;
    ! a& R# D& \+ A: `. h
  68.         }3 M0 p8 u$ `  m# u3 _: B

  69. ' s3 L  X1 ]% {/ t
  70.         return 0;
    ) {* @- d- d/ T$ h& P5 A
  71. }
    % ]; z  C  |; b5 k" p3 G# l0 l

  72.   F5 a3 n- h, _: h" f9 D
  73. int main(): ^- P, W) g4 }
  74. {
    / [% e, r  ]) u$ _' y5 g, a6 f+ B$ y
  75.         char c;
    : v: v  H" H: ?! e( j
  76.         int i, macs[6];# V' d" @: p8 [
  77.         unsigned char mac[6];3 Q# Z( {2 w( l8 |8 n
  78.         unsigned char stbid[256];& }2 ~) g2 u7 d2 c! v4 c( ^
  79. : H  Q2 [! o; `* q( E! `; L3 R# @3 b
  80.         if (readparam(mac, stbid) < 0)
    * P5 f# K7 c% G7 Y/ _% b$ w
  81.                 return 1;8 R0 \( C3 v2 o4 W4 t5 U3 q" m

  82. " f: V  V' @/ }  H# w; N
  83.         printf("Current parameters: \n");
    * b  }" c4 X5 z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 r( l( j5 U, y# p  y% z8 ~
  85.         printf("  STBID: %s\n", stbid);" `9 Q! s4 ]! M, I# P
  86.        
    , {. ]# y" ~# k2 L# l& o1 G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 X! v/ K4 a! ]. R) H  @: c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; ~" K+ c# ]$ M
  89.                 printf("Input MAC error\n");
    : g2 q3 q$ N0 e+ w
  90.                 return 1;" Y. S6 ]1 Q- W6 f" d* n+ [6 p7 W
  91.         }
    , P- W2 W$ J$ y: I+ Z: B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! c7 `- P  v# e
  93.         printf("\nPlease input new STBID: ");
    ) A" W8 m* b( m, I0 Z% B/ N
  94.         scanf("%s", stbid);
    7 g  v( {/ X2 X5 [1 D
  95.         if (strlen(stbid) != 18) {6 C9 ~$ J; B5 k/ ^& E
  96.                 printf("Invalid stbid\n");3 l( S1 r6 o+ u. B  q1 R  ^* P/ r& r
  97.                 return 1;* ^: w0 s( Y3 D$ b$ V- W' F
  98.         }
    ' A/ p5 u1 M5 R. w
  99.         printf("\nNew parameters: \n");
    * V0 u9 G; @) Q/ L1 z- C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! Z- Q" z' m- d8 \9 \+ |
  101.         printf("  STBID: %s\n", stbid);& r' N* \& j, U
  102. 6 T( R( x# y# }" p
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 Y% Q3 q5 b' [9 O
  104.         for (;;) {
    , q8 d4 z; I# c8 w5 M3 F5 I
  105.                 c = getchar();
    6 C* P+ @1 _) n$ d; j9 ^5 ]! h8 `0 I
  106.                 if (c == 'y' || c == 'Y')
    6 }5 w5 ^# Y6 W" a
  107.                         break;
    : r/ R- \1 c4 n: R2 a
  108.                 if (c == 'n' || c == 'N') {( i8 r/ ^1 X. a9 V, s% U
  109.                         printf("\nAborted.\n");
    $ u6 ?( _7 Y" }
  110.                         return 1;- e! s& y9 x" n+ ]' k5 e
  111.                 }
    : f- z5 S9 X# ?0 m0 C- w
  112.         }
    2 P+ N+ H4 C+ `" t8 ]/ S! p
  113.         if (writeparam(mac, stbid) == 0) % y0 O0 u  Y& }( e/ N1 K
  114.                 printf("Parameters changed.\n");
    2 E% N/ T; ]) Y. l6 K

  115. 9 p9 t& ^* [8 U. w
  116.         return 0;
    % H$ H% T& P) C" b6 j2 x
  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
2 w! R" P0 A* I: f6 z在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ J1 i5 A; h- @( H+ W" h0 U
你用的编译命令行格式是什么?- @3 y$ ]1 j: t6 g( x
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-8 13:51 , Processed in 0.027451 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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