找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15474|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 z; c: N% a7 F. {/ ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % J' a- {$ C+ I+ }6 K% m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 y% J% W4 p+ D$ O, y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
, S( i4 c( `5 {+ b. `3 E% ?3 L' ]( I- w! A
# j$ o' |6 N4 U! j5 l
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 f/ L; h9 n1 H7 V  V, R$ [, k5 m" K% z; ]: u
补充内容 (2012-3-8 09:42):$ J+ w9 g% M: @: X
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. I! T& b+ R( e5 ]. X这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
6 P2 j- V( G  o5 V" k' ?0 I
1 I+ V8 G! M( E8 S; X2 ^, b" Nhimr <address> <value>. sample: himr 0x80040000 0x0- j! @5 v. d0 J0 R6 Q
9 X- o2 i1 y2 L3 c+ o2 z" j
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* g+ ]1 w5 O+ B2 zhimr 0x80040000 0x00
$ A. i, ~1 ]4 I, k4 g. dhimr 0x80040001 0x11
+ R. ^  m6 _1 A2 M' Thimr 0x80040002 0x227 l9 o/ w; A# j; A% e  w
himr 0x80040003 0x33( P- {+ n1 I. ?( m( S
himr 0x80040004 0x442 Z0 p9 s$ B0 E  h! b
himr 0x80040005 0x559 N$ n( _6 U) J+ L2 b! \2 ~+ [

% f  [/ ]6 H( MSN也是类似。3 H) }. B) i, Z( U  J  r
1 }4 g6 w' q8 f# K9 T
现在主要是,谁告诉我们MAC和SN的地址?0 q/ s! r8 u! D  g
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 8 ^* ]( _5 s/ {; A
一直想找到运程修改MAC和SN的办法,苦于无解啊

$ O) A7 {( m& g) n+ c. _源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# \$ d6 R/ ?; O) ?$ }
9 U" u$ [% h) {, X修改的代码早有了。到今天不会编译。* [5 t' ]# s* S* m
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 E  O. z# b6 g) J/ O
  2. #include <malloc.h>
    * W* f3 h* W4 O& g" l1 x
  3. #include <sys/types.h>5 N; i4 C5 _% d: V9 h( @: ^
  4. #include <sys/stat.h>
    " i5 K2 P+ m7 Q) X" I
  5. #include <sys/ioctl.h>& w" H( H2 u5 R+ N; v: v, V6 [3 ^
  6. #include <stdio.h>
    8 i9 Y8 U8 I3 }( v
  7. #include <string.h>: D4 z2 W( K; c) w$ S4 C
  8. ; f. R) v' H4 i: _- k
  9. typedef struct {
    / _% f! M  k0 V$ w
  10.         unsigned int        e2prom_cmd_sub_addr;% q+ E/ `4 [% p0 d7 x: G! x2 H$ D. D
  11.         unsigned int        sub_addr_count;
    9 _7 S) G- p+ @( e
  12.         unsigned char*        e2prom_cmd_data;
    : F, h/ S7 b6 |3 T) r8 `
  13.         unsigned int        data_count;
    % w2 ?9 k9 x6 H* q$ H" x2 u
  14. } e2prom_s_cmd;% {& D1 P" X, Y3 B. j2 K

  15. # H5 [) m* `9 ~$ c' D" `
  16. #define E2PROM_CMD_READ 1% W* ~3 q) K  L. i1 |
  17. #define E2PROM_CMD_WRITE 2# G( p2 v7 p9 q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  z0 `! r7 p9 _. ^* d% @

  19. 9 S; _) j; ]: P) z2 [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 Y) z8 a& H7 ]* D2 m: v$ u
  21. {6 P( W& N$ c0 B  H* D+ a; {
  22.         int fd, ret;
    2 G. ^/ v7 r' M- L" E" k
  23.         e2prom_s_cmd arg;- |3 ?- O! y6 [
  24.         unsigned char buf[0x18];
    6 B1 V5 _1 O  N8 v+ w

  25. 7 T! V) w( n# Z6 A1 l3 `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , d8 k# U: u/ A( y
  27.         if (fd  < 0) {( \8 e% a8 L, Q, J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 K+ K* |) u0 x) j9 d
  29.                 return -1;
    4 ?6 w5 M5 q7 t* V: r0 Q* Z
  30.         }; A- X1 {( V1 h. Y
  31.         arg.sub_addr_count      = 2;+ c* ~6 W* s" ^1 V
  32.         arg.data_count          = 0x18;7 n( v& P& D! n8 g$ j1 A8 T
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 N* N9 D8 P5 c; j5 O$ w0 r- X
  34.         arg.e2prom_cmd_data     = buf;3 ^  i0 {5 O$ J4 v, W+ @
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + l0 H  \$ |3 E( B, ^
  36.         if (ret != 0) {- O, `) Q1 U* J' A/ f" \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; _/ B9 ?: q( L$ V6 p
  38.                 return -1;
    0 x4 V. W. ]1 p% s, e- @3 C- G
  39.         }
    % f3 `# ^. B$ l( ]: }: _4 C$ d
  40.         memcpy(mac, buf, 6);
    3 a7 G: H, O5 ^6 _' I
  41.         memcpy(stbid, &buf[6], 18);
    ) N' `: y- l4 v2 c4 v
  42.         stbid[18] = '\0';. X9 ?+ O+ s& z: c! H( D
  43. + s* r+ c0 q9 r6 g! }! S9 S
  44.         return 0;& F% ]  F1 i  y& T2 m. n! r% v
  45. }
    & S6 T( S) M# P& q5 V

  46. / w, z1 o# Z! V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# T# ]" h. u; x+ y% B; S
  48. {
    ! C" Y% V- k" g
  49.         int fd, ret;
    0 M/ B! J6 a- [, b
  50.         e2prom_s_cmd arg;
    , Q" Q: S! Z6 V  u- ~0 g3 c
  51.         unsigned char buf[0x18];3 `: Z+ g; e6 u

  52. 9 H, ]" E( X$ A: y  Q' w
  53.         memcpy(buf, mac, 6);
    & ^% o$ v% |0 ^' T6 a' S) C  N- w
  54.         memcpy(&buf[6], stbid, 18);
    " A1 H* w  U; ~% {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- k) O/ w/ M7 ^. C# `9 j5 M1 f. w
  56.         if (fd  < 0) {
    6 i( q" i, b6 ~9 J* i7 v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) E* }. z: w  `1 K# d: H! J  ]
  58.                 return -1;
    7 f6 h) w. J/ j+ W' M
  59.         }
    * [7 p! E% q( \. C4 [, H
  60.         arg.sub_addr_count      = 2;
    & [5 w. x# [& _4 w% `
  61.         arg.data_count          = 0x18;
      w" a/ E: T& I& }9 ~& ~* R8 t
  62.         arg.e2prom_cmd_sub_addr = 0x290;& o# g1 N  p1 n% R$ |
  63.         arg.e2prom_cmd_data     = buf;* `+ Y) t: z( b, n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& L2 Z- F0 }% e1 W2 ]; _1 a
  65.         if (ret != 0) {1 x% a4 X' ~7 s- u& i, l4 k$ {( G$ D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) a- f5 Z/ F4 W2 o$ B
  67.                 return -1;% t7 a" C; V6 ~
  68.         }" @/ u' y3 b1 U$ K0 R
  69. . Y. l2 C. ~3 O; j) y* c+ @! P
  70.         return 0;4 G' }# _6 `4 K# W" M8 O* ^7 e2 |" [
  71. }: ~8 N5 F( u4 i1 ]4 @. d

  72. ) E: ]: a. X% B5 L9 ]4 z& E
  73. int main()" k* O) N  j5 x  L! V
  74. {' p( i1 |4 U7 x) {6 `4 q, T. q2 e- W
  75.         char c;: o7 {$ S' ^& L( j  p& a
  76.         int i, macs[6];" L8 i; H/ H! O, ]/ l0 q/ f' K4 ~
  77.         unsigned char mac[6];. e: F( u2 O1 f/ X
  78.         unsigned char stbid[256];, X# m) I5 ~% h) i: q: @2 G

  79. 6 I" ]* U+ t, ^: ]
  80.         if (readparam(mac, stbid) < 0)
    0 A8 K! M9 E- y$ R% V/ d
  81.                 return 1;
    8 s' z1 @2 Y) N5 L7 n0 z, d

  82. 7 U3 A3 Q  g( R7 z6 ^4 R4 l4 _
  83.         printf("Current parameters: \n");
      m1 x+ A. U5 E& ]- k- L! `
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 d8 k* R3 e! p; |0 Y6 g* @2 ?
  85.         printf("  STBID: %s\n", stbid);8 E$ A# F1 Z* a# B
  86.         . i2 g9 K: }, }  X" J
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 M5 R" h2 F' s# q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 W* m. t9 D8 G" c) `8 ^0 ]: ^
  89.                 printf("Input MAC error\n");5 G" u" l  K) O) W8 r& {* T" e; i
  90.                 return 1;
    + k" s* w  p7 f/ S4 K3 X9 v! }2 \
  91.         }- p& {: P2 g5 Q9 X" e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% Y) l# R  P1 @+ {. A8 \& D) F2 `! P2 F
  93.         printf("\nPlease input new STBID: ");6 [; A4 `" H6 n) Y
  94.         scanf("%s", stbid);" P7 C% C" \# ]! S8 s: Q) M
  95.         if (strlen(stbid) != 18) {
    3 j' }% J& o2 G5 X" ^- Y7 g/ N4 N6 [
  96.                 printf("Invalid stbid\n");% \" \4 L3 p  Q/ U1 j8 e8 a
  97.                 return 1;. b. r. A4 C1 H( H
  98.         }
    0 {% R( D6 w) i  v
  99.         printf("\nNew parameters: \n");
    1 ?  i8 p  w$ |7 f  S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 @- H2 Z+ o7 }/ u  s
  101.         printf("  STBID: %s\n", stbid);
    # `3 I$ A& `- e- i$ N) m
  102. $ J7 P/ Y! F  |1 \7 W
  103.         printf("\nDo you want to change paramemters? (y/N) ");% ?4 t, P- W2 K7 k0 h: y6 V, p
  104.         for (;;) {; S$ A) }) |$ O$ L5 `- h3 s
  105.                 c = getchar();
    3 u; I6 V. J: o2 Z  S# N
  106.                 if (c == 'y' || c == 'Y')
    8 ?: @* v4 F; K: @- {& G$ _5 Z
  107.                         break;
    4 V$ c+ L2 N" _& y% U9 Q
  108.                 if (c == 'n' || c == 'N') {6 z" _) S, ]' E( r( P$ u
  109.                         printf("\nAborted.\n");
    6 j: g  f8 u7 t& t/ g3 Y  }3 i
  110.                         return 1;! }0 R6 w0 e2 w/ D' k0 ~
  111.                 }1 V" {! ~9 X8 N: v
  112.         }) J+ i! }* v2 U0 Z& K' U- E# R
  113.         if (writeparam(mac, stbid) == 0)
    6 M5 c1 O' Q# F" O
  114.                 printf("Parameters changed.\n");
    , g" e; O/ w8 R: O' L2 w

  115. * K* [8 `# R8 `  i
  116.         return 0;
    ! L. @5 }9 B0 D2 r
  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 - M: C9 v& E' q, t. h+ s2 m4 M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 d5 _! O4 v, O6 r8 y% l- |
你用的编译命令行格式是什么?
: v  |# h7 |9 M) z4 X) `
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-9 09:48 , Processed in 0.027561 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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