查看: 17429|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    1 b8 Z6 d) a4 y1 N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, r6 i- j: o/ A* M
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% `- `9 @1 K9 d: Q. M' U5 z
usage: himr <address> <value>. sample: himr 0x80040000 0x07 D( a+ \) [4 G; E- f

( D: z! M" C" ~% _3 }  W
$ T3 |8 T* N2 h+ q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?0 I. j4 v0 b# D( g! j& C
$ v4 B& [( Y9 [: s; b  w4 }7 z
补充内容 (2012-3-8 09:42):" r2 W( @  q  U7 g0 k" s+ \
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. R# \& Q1 A& n) p) v5 ^' J# Z( b这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
5 U' T, w6 j, u3 G$ p( i- F
( V& _1 _9 L: ^& B+ Thimr <address> <value>. sample: himr 0x80040000 0x0# f& p2 s; ]1 i) t1 r( |$ J0 Y; s9 s' a
5 @3 @: `  k4 y- G! e* Q" c
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, C( A% T- ^* \' N
himr 0x80040000 0x003 q3 _; q" J$ b9 B
himr 0x80040001 0x119 a) z5 c# `% M+ v0 {* Y
himr 0x80040002 0x22
$ @: }+ h2 N6 S& z) ]himr 0x80040003 0x33
& a0 \+ m  i, u4 a: }# J' chimr 0x80040004 0x44
- y2 {# p5 t( }, G' f  ^! f# dhimr 0x80040005 0x554 V" x2 g* T: b: h+ Y3 v
( P1 F/ n& p8 S  }8 N: {$ w
SN也是类似。
6 `  Y: i* K& w) D6 k, U7 X$ l3 y7 Z$ E1 i* h8 i
现在主要是,谁告诉我们MAC和SN的地址?
* C. i, B- V8 c! i( N" o8 T4 T
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! [& \! b( q( _* @! V5 i
一直想找到运程修改MAC和SN的办法,苦于无解啊

# h1 ?. ^$ \6 n源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) Y. y, V4 k5 R9 w% {7 g: e1 Z

/ ~" t2 t2 c& t3 F修改的代码早有了。到今天不会编译。6 W9 H& Y3 b9 |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; V5 A9 u  L2 w2 t" N9 ]
  2. #include <malloc.h>
    ( z9 G7 ~1 Z8 R3 d& H) V: i
  3. #include <sys/types.h>+ V8 C: B% H* ]" H
  4. #include <sys/stat.h>( ]5 t5 x/ {1 k+ d" K! H- M% h+ }
  5. #include <sys/ioctl.h>% d( Y0 ]9 f$ X. L
  6. #include <stdio.h>3 Q: H" B. v2 E7 i0 z' y" M
  7. #include <string.h>/ L8 T7 ~. R( N) |6 ~% b
  8. # J2 f8 U% y  z$ x
  9. typedef struct {8 N4 Z# p" L+ a" P
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 Z4 e! {: u+ k# c" i$ \/ k! [
  11.         unsigned int        sub_addr_count;
    % N9 j! b" N  [) d  g
  12.         unsigned char*        e2prom_cmd_data;
    6 H: K3 u, v( m: }, t0 H9 \" R
  13.         unsigned int        data_count;
    ; _& g9 W+ L- x
  14. } e2prom_s_cmd;: f; X! b  D3 v- n7 }) p! e0 E* n

  15.   t  l: V8 p4 \& z) c
  16. #define E2PROM_CMD_READ 1
    : R2 _# c4 |/ w' n5 K8 E1 i4 E
  17. #define E2PROM_CMD_WRITE 2
    ; _  B- W: v9 B  N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! C8 Y- x( J) m! |6 W

  19. : N/ x% y* @& a& s4 n6 Q! D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 ~) _! R) |8 y) }; s. P/ e
  21. {$ R" I) k/ [/ S( H; l) j9 [; w
  22.         int fd, ret;& K2 D# t. u0 G! l
  23.         e2prom_s_cmd arg;
    . O. U9 Q- G4 l
  24.         unsigned char buf[0x18];
    ; X4 q" @+ Z4 k% Z

  25. & b7 r8 x% f0 S. t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; ^2 L+ b2 z. Q+ M2 \7 i( T
  27.         if (fd  < 0) {
    # }2 O! ]' D- [1 V. C1 j8 R1 {% ]+ B8 F
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);" H' |8 K( W7 {( H0 G' D% i
  29.                 return -1;3 h7 M3 I" X) [( o2 ]& f
  30.         }
    8 r' d& H/ z& Z; C  u7 T
  31.         arg.sub_addr_count      = 2;
    - n+ \1 M3 D+ ^, @5 {. b
  32.         arg.data_count          = 0x18;+ ?* r! m/ a! B* o
  33.         arg.e2prom_cmd_sub_addr = 0x290;( k. A7 S: K# h1 ~" `
  34.         arg.e2prom_cmd_data     = buf;; i: A' v/ C7 F' O; }9 B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 W. t* z+ \( z; q
  36.         if (ret != 0) {
    5 ]1 ?! }- t; x3 s" D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);) Y9 ?+ O) H; m2 H
  38.                 return -1;
    . T) ^9 {  Y9 k/ B* s' G
  39.         }
    ( _) d) H2 b0 s- Z2 u! J+ G
  40.         memcpy(mac, buf, 6);
    1 G; e5 U0 y* c$ z1 Z$ z6 ?+ J
  41.         memcpy(stbid, &buf[6], 18);) i  {/ n* I' E: G" n! ?& l& ]9 I2 d
  42.         stbid[18] = '\0';
    $ s4 p/ h% O6 l- j& ^, p

  43. / \9 i3 R6 _! ]( o; A, X
  44.         return 0;
    ( T$ G1 I  W: t0 l* e
  45. }
    ; Y: s8 `" G# R
  46. 8 j3 f* ^% U9 y& p& M, {$ I. K$ w
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + c1 ~: ?. a) F/ X  J. R: U
  48. {
    , [" i8 X; |' s( @2 X9 r( V: ^' L
  49.         int fd, ret;0 h( i5 ^3 l9 p9 Z
  50.         e2prom_s_cmd arg;1 v+ T4 F6 ^( J7 W% X
  51.         unsigned char buf[0x18];
    ) O% C; J1 @, L! q4 _! X

  52. 6 h8 k. v3 q4 b8 B5 h5 l6 A
  53.         memcpy(buf, mac, 6);% [  e- H  y; p. L6 \- i  s  J
  54.         memcpy(&buf[6], stbid, 18);7 i/ j1 q4 w$ X5 E& W1 k. |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);1 f( E5 _9 h( H9 x. B
  56.         if (fd  < 0) {) k7 B. i0 |9 c( E2 ^4 ]) Y0 S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 X# n+ {; }2 H! x# D4 F- C5 h, H
  58.                 return -1;
    ( M; O7 u6 `. B- y- `
  59.         }1 _, B/ s0 x* P% X* _: y
  60.         arg.sub_addr_count      = 2;
    2 j1 T9 [9 R: M
  61.         arg.data_count          = 0x18;) @% Q' g  U* Z
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ x2 c' S8 o  |4 b4 L- {3 d0 B" o, \
  63.         arg.e2prom_cmd_data     = buf;
    7 o8 d) Z' w! T7 O0 h4 y9 o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - A# e0 @0 |8 ^5 y2 |
  65.         if (ret != 0) {
    . ~7 z" P# o4 ^
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 {1 `( |; O5 [  i
  67.                 return -1;5 M& H$ v+ B) v& S; @
  68.         }; }! N1 w3 }* W/ u' i* W8 D7 w7 M
  69. , n, I% D1 H( q! e9 J
  70.         return 0;
    # H9 b% E6 V+ l" h% V# @% ?% Q
  71. }
    3 D9 e! B$ j0 f  q' H: j+ w' N' U* W
  72. ; K( L" X' o; f" L
  73. int main()) D) j+ D3 k6 |. Z& ~) r/ k
  74. {
    , q5 d0 s9 P* ~0 c# z
  75.         char c;7 Y& X" |, D2 f. Z* g( |; r- _1 \
  76.         int i, macs[6];9 j4 {* r3 h! }! \+ {  z% Z
  77.         unsigned char mac[6];
    - G3 p9 i2 U5 }. q8 [
  78.         unsigned char stbid[256];
    1 p; ^: }  _5 m& Q6 B" F
  79. $ |. T/ c3 v( r! b- W: I
  80.         if (readparam(mac, stbid) < 0)
    4 {- b# k, Q9 S* o" Y5 N
  81.                 return 1;7 R/ P& U; a4 W' g. Z

  82. ' a7 Q! x  V* T  `% Z! m: j
  83.         printf("Current parameters: \n");
    # f0 F4 k& l# {  C+ Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " [& L5 ]5 v% [
  85.         printf("  STBID: %s\n", stbid);
    / d5 p& W6 Q- {0 z# V8 o
  86.        
    : r8 `0 \( g0 J
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : W* y: S1 S, `. a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& k/ O5 b1 @! e  v; P6 T  g
  89.                 printf("Input MAC error\n");8 d0 J8 h& a  B
  90.                 return 1;
    2 [, w* \( r/ Q$ M; k! k
  91.         }5 l. q/ {* b  v0 C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ P. i; w! n2 ^' F* F6 W
  93.         printf("\nPlease input new STBID: ");! p: G8 A: O' d4 G/ R2 n' B
  94.         scanf("%s", stbid);. E! z# ]. R$ f/ C- W' g) ]& @$ p
  95.         if (strlen(stbid) != 18) {: _% H$ E* q( o( s9 P
  96.                 printf("Invalid stbid\n");
    * i1 e, a) S  f' V7 ?
  97.                 return 1;& U: m- }  o/ v  l$ t$ L* R
  98.         }
    ! G- g' [6 s! p
  99.         printf("\nNew parameters: \n");
    , \& K& e: f: Y' G  f/ I  \7 [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  ?7 R4 B- m, O' [3 a0 e
  101.         printf("  STBID: %s\n", stbid);; T  Z( a) Q+ f& G- E- m: c3 Q4 p
  102. ; H6 L% B! s# ]% o3 A0 u- _# z1 s8 {
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; j1 V6 F/ z7 \" Q/ c( T
  104.         for (;;) {; t. [7 j) G3 A" Z6 ?+ A3 Q1 o9 W
  105.                 c = getchar();
    ) X2 s. O- m9 B( g3 C
  106.                 if (c == 'y' || c == 'Y')
    4 R" }/ j! O- C7 k0 z( V1 E
  107.                         break;
    / z2 H5 C9 Z! [
  108.                 if (c == 'n' || c == 'N') {
    9 Y" g& P; E6 y
  109.                         printf("\nAborted.\n");0 D  R# U; e/ _/ G, V% ]) z
  110.                         return 1;& M! j0 @/ [, b
  111.                 }
    & x' g$ Q! n+ U9 I5 l/ w
  112.         }
    9 @- ^: T2 K/ y1 `4 q) Z
  113.         if (writeparam(mac, stbid) == 0) 9 V; ]% n7 u# F' ?8 }
  114.                 printf("Parameters changed.\n");
    % g+ y8 s* D* F+ n$ L
  115. $ |6 n! z3 w6 [0 Q# i3 W0 E; ^' D
  116.         return 0;
    3 l* L6 I& P+ W$ k2 P6 y+ e
  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
: h5 w! H; y& E& Q# h8 J, e& r在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) J1 {3 }6 j0 c你用的编译命令行格式是什么?# M. H! ]; ^0 v' a  |- l; d0 }
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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