找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15169|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , r8 N& h& d' h) @1 t  k1 ^' H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  F! M! s8 }( s% d8 h/ O; G! U
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, @, ~8 S1 i+ b0 g. v. K( n& M: G7 k
usage: himr <address> <value>. sample: himr 0x80040000 0x06 N8 `/ v+ L3 S

  [" N5 @4 S1 |* p  R6 {
3 R! P; Y% Q/ ]7 w不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 T' Y5 X7 V) V6 V% m5 k; C1 c
+ W" C% ]" U1 M- ?
补充内容 (2012-3-8 09:42):
& R7 Q* K! H2 v1 H; n2 B% ehttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 T$ k% h' v$ e7 e, r, i5 m
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
6 I8 o4 j) C: X: m, b$ T) s
3 i; r7 a4 S: y, n/ s! \6 S9 Xhimr <address> <value>. sample: himr 0x80040000 0x0
. r- V8 j- B8 j% J- I  A. [* x$ |  E+ `/ P1 h: I
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 |: P& r* E0 O9 M$ t' ]: Yhimr 0x80040000 0x00
8 T" P& i, ~3 Y4 jhimr 0x80040001 0x11
( E; H4 ^+ ~* Q5 k( w1 I4 Jhimr 0x80040002 0x226 I  D8 N+ E# I" h0 x
himr 0x80040003 0x33( ]; h  f$ W0 A! W3 G
himr 0x80040004 0x44
" ^7 ^  w! ]) s2 T' c8 ]himr 0x80040005 0x556 P/ Z+ k1 g( T8 O
! q$ y6 N( x, ^/ U9 }  h3 R& [
SN也是类似。
; N8 i1 L+ `, z, X; ]9 H- p# a- g; r( f
现在主要是,谁告诉我们MAC和SN的地址?
1 j' X  N* y1 T+ ?
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% Q6 u  I: K& f一直想找到运程修改MAC和SN的办法,苦于无解啊
& I8 I3 @- m  z! s. P; q/ B
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : W" |* S! R( a. y

; B9 s6 |+ p$ M& M0 _! |6 r修改的代码早有了。到今天不会编译。
6 P8 G3 R6 X! x" d" ^' r+ k需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 Q1 L* M: |' k( `
  2. #include <malloc.h>4 S8 G) Y8 V- D  h
  3. #include <sys/types.h>; y, ^( Z; w% x
  4. #include <sys/stat.h>  K4 j7 S+ |- `) c+ d0 H8 A
  5. #include <sys/ioctl.h>
    9 u$ F3 a$ U, L) w  }
  6. #include <stdio.h>) h, X/ k0 C3 ^2 f4 h
  7. #include <string.h>  |: `* K! H1 u4 D; ~/ k

  8. 8 f: d* w9 V$ Q5 z& S  H" n
  9. typedef struct {
    5 l; E; D) t! v- d1 l
  10.         unsigned int        e2prom_cmd_sub_addr;
    , v# b0 U. `* h2 B* G5 @$ J
  11.         unsigned int        sub_addr_count;7 n, b9 A8 [  P
  12.         unsigned char*        e2prom_cmd_data;
    3 C1 c2 m: Y" |! ?& E
  13.         unsigned int        data_count;( X2 L3 h& B9 y0 k
  14. } e2prom_s_cmd;: v: k, A* j9 D! p/ j

  15. % D  S6 |, l) o+ [) ?% [5 }
  16. #define E2PROM_CMD_READ 1
    " I  h: b/ R: q! R
  17. #define E2PROM_CMD_WRITE 2
    5 d, T1 S" ]' d5 j9 j
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ \+ n+ ^0 {! b% p( t- U% z- N

  19. 0 @3 k" P/ I% x- G; M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , b( m+ h9 F. w" K0 J) ]1 P
  21. {# u% r1 F( B* X' `
  22.         int fd, ret;4 |8 Z0 _$ O0 S/ n/ y
  23.         e2prom_s_cmd arg;
    . D/ w: x6 P0 S1 ]5 `7 r% y
  24.         unsigned char buf[0x18];- y2 O, Z+ a- j# {4 D1 ?6 _; A

  25. ; l% `0 v) U# w! ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; w/ C: M2 M9 [3 y$ v
  27.         if (fd  < 0) {
    * S4 L  }; q/ v6 N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 A) W+ ^6 s, i. v# Q; F- t
  29.                 return -1;1 B3 z. @& [; `
  30.         }: q1 F8 U( `4 ~/ f5 i3 U
  31.         arg.sub_addr_count      = 2;
    0 s) \. u  u: ~" v3 R8 O7 w
  32.         arg.data_count          = 0x18;
    " q) b" T, C' K4 R$ r: W
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( y) ^8 d, k1 `0 b) Z2 q4 ]. f
  34.         arg.e2prom_cmd_data     = buf;! K: x& ?/ O: i' d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 @. D  R, @2 c
  36.         if (ret != 0) {
    2 y6 V5 p) I  \, {6 r2 f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 M) {" K1 m  |: b3 v7 i
  38.                 return -1;
    # `$ H  S' \7 T* [# U, o# J* F
  39.         }3 T8 p2 H8 a) e) q* h
  40.         memcpy(mac, buf, 6);& o# N# d) g# u9 H
  41.         memcpy(stbid, &buf[6], 18);
    2 F- f. z4 l* H% V1 Z1 h0 g
  42.         stbid[18] = '\0';
    * N) m4 i8 S# p
  43. * [6 q! A9 D6 N6 B2 {
  44.         return 0;0 K0 k% ~+ D, A$ [) `6 c
  45. }
    1 U* ^: ?3 k( I. v+ N
  46. / p5 I# g+ Q' Z1 m- P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% t" H  e6 S( v( @6 D1 J
  48. {+ i5 O$ o+ j0 f4 Y$ H4 Y. X* @/ {) L
  49.         int fd, ret;
    ' k6 p- y7 y& t1 g
  50.         e2prom_s_cmd arg;
    0 R) f5 f/ J/ N
  51.         unsigned char buf[0x18];
    " c! \4 v  C2 I0 U) O6 f' N8 ~7 ]
  52. + l7 p* _/ W: P' g
  53.         memcpy(buf, mac, 6);
    - z. i; c5 K, S8 g) d  d6 h) R
  54.         memcpy(&buf[6], stbid, 18);, j( Q: W5 e: T+ k9 v
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 h9 G2 g  B; Q$ c: T
  56.         if (fd  < 0) {' O5 M2 k+ Z* C' K/ R7 K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, A5 N0 K4 U: ]9 M5 W9 D1 z0 V# Q
  58.                 return -1;# X1 a  X  C; i1 l3 E! O
  59.         }/ f, F  I" N# F/ ^% I4 K! V6 _  P& T
  60.         arg.sub_addr_count      = 2;
    * }' W9 V5 o5 r: w6 h) V) \; l
  61.         arg.data_count          = 0x18;
    : _) [; I. q' ]1 t+ y
  62.         arg.e2prom_cmd_sub_addr = 0x290;, Y* I5 Z; @( b) A
  63.         arg.e2prom_cmd_data     = buf;. f8 G7 C) \. b7 i, T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 V. @; ?4 z3 R6 l
  65.         if (ret != 0) {  ]/ |' E5 n2 U* f$ J* y( R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : g8 e- p4 F# x0 T1 x0 B
  67.                 return -1;
    * N/ {# K5 }+ s* F2 N" x) W
  68.         }
    3 |) ?+ |+ i9 w& }- l* D  |
  69. & ]+ l* v% J7 ~) w6 N$ j
  70.         return 0;
    + R" R3 V# o7 c5 X" z$ [
  71. }
    " D4 j' B+ d  H3 ]4 A$ e

  72. * o. j1 r/ h) f: f+ d
  73. int main()! t8 s0 S4 u& p
  74. {9 M- A/ x* s2 [2 p8 ~' l
  75.         char c;1 I! a% F, [0 f, p5 z( X6 U
  76.         int i, macs[6];2 F9 B1 b& }% ~9 w# J
  77.         unsigned char mac[6];( q. L' C" w0 J6 N: i
  78.         unsigned char stbid[256];
    , G1 Q( G/ Q( a
  79. 1 k, l2 _+ }) q! M- u
  80.         if (readparam(mac, stbid) < 0)
    ' S; c  `" P+ B
  81.                 return 1;
    5 |& x5 \4 ^2 K4 h# V
  82. * V$ i! q& {1 D  k) `4 }
  83.         printf("Current parameters: \n");% j" E8 H! Z- k' T+ w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# N7 s' f1 i4 r; q, h- h
  85.         printf("  STBID: %s\n", stbid);9 J' m6 x" ^5 s3 w  ~5 Q2 K* [
  86.         # F& @0 y$ M( M% V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. D0 B$ b" c4 ]( n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) [+ `4 U. B* {  V
  89.                 printf("Input MAC error\n");$ d3 N2 i# J1 Q5 x  B  p" y0 o
  90.                 return 1;, N) M$ ^) p( l! X3 Q, t3 e
  91.         }
    + R7 [5 a( s  B0 f* |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 U, i( r( ?( `5 S% T& J7 b
  93.         printf("\nPlease input new STBID: ");6 L: q. C; {" \0 _9 c
  94.         scanf("%s", stbid);
    . B/ G3 j& Q9 z+ f- j  }! H+ H2 l
  95.         if (strlen(stbid) != 18) {8 _: J  X" K7 y. \
  96.                 printf("Invalid stbid\n");5 n' a$ H" b! a" ?3 }9 @9 U
  97.                 return 1;6 w$ y# w) D3 \& k% ]" u; G
  98.         }6 a. Q0 i6 _' n5 S: _% @
  99.         printf("\nNew parameters: \n");
    ; o: p& c: o6 u+ I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! W6 ]% J' E1 J) F- M
  101.         printf("  STBID: %s\n", stbid);: l) W) k1 G: C% M* [
  102. / D! L! ^: G& L, X6 }& n' |5 R
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - Z- L( Z. @# [$ V1 s
  104.         for (;;) {6 O9 ?: D6 Y& X
  105.                 c = getchar();
    $ o8 D5 I4 Z1 r. {8 o
  106.                 if (c == 'y' || c == 'Y')% R) F3 z6 h; k0 N, i- F) E) G
  107.                         break;
    % K3 M' m. z1 f7 p* l: e( P8 K& X. W
  108.                 if (c == 'n' || c == 'N') {. u% J- I7 N3 {$ q2 s. ?7 x
  109.                         printf("\nAborted.\n");
    ) \4 Y, z: `2 |6 d
  110.                         return 1;
    : ^2 j8 J2 l! V
  111.                 }( g, h) e. [8 U0 }* `
  112.         }# s# @5 I& z& T
  113.         if (writeparam(mac, stbid) == 0)
    * V8 Q; F3 k" E0 h! L
  114.                 printf("Parameters changed.\n");7 d' E+ Z- O0 k4 {( |+ k# y  n

  115. ) |. w8 Q& [# E8 ^  \5 I' U
  116.         return 0;
    $ N4 W5 X1 D) k6 U8 R6 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
$ k- M" w+ p8 I, W& R在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: M% c, l+ R1 ]3 W& O* J
你用的编译命令行格式是什么?
) a. ?# B* Y/ Z0 r7 h$ a
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-1 00:20 , Processed in 0.024751 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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