找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15379|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. x2 j' [  ~" V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* o$ r2 j: B& a( `$ }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  h+ d* E  {$ `8 x* F! ?5 j* q! E  ~# jusage: himr <address> <value>. sample: himr 0x80040000 0x0* k+ a/ z( m0 P) m5 m
. Q& R5 A( J" g
$ s: O$ j5 ?: _- C* E7 O3 T
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" c' H. v  F- k6 A0 v- l6 ~
: P! E  c5 h5 N- N4 t) ?
补充内容 (2012-3-8 09:42):
# W8 x) |, u: h  }http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' I+ P% }( x# B- [2 z  }9 N: F% c
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
3 M4 i7 d5 d7 [7 D: _! L3 D& U
4 h' r* }( `- V( H2 s; H0 p. zhimr <address> <value>. sample: himr 0x80040000 0x08 L0 {# R' l1 l/ H* |- Z- Y
- S* S- }1 U) g. c( X! F8 F. l( U. W
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
0 @1 n" L7 K7 r2 T! g/ n0 Zhimr 0x80040000 0x00" P$ h' ~6 v* l
himr 0x80040001 0x118 }) S% H4 p& \7 E& T
himr 0x80040002 0x22
: w# L. ~& Y3 b* V) Lhimr 0x80040003 0x33  t* n) N  d8 ~5 O& u$ a, ~- M
himr 0x80040004 0x44
6 W: T3 ?% |( H7 x  p  `5 xhimr 0x80040005 0x55- d, f2 k! H! [' G

  K1 q' a" @% S3 nSN也是类似。  H7 d: N+ T2 a' J
/ |+ n' k- V# \2 z0 H& ]
现在主要是,谁告诉我们MAC和SN的地址?, l0 ?3 B& X* h5 K, ^6 h  N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 + L, S! L5 A6 S4 k4 V
一直想找到运程修改MAC和SN的办法,苦于无解啊
' c4 p8 c6 A, a' Z$ {% y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 U. ?0 k; `2 j4 _' q2 `& v& m! K4 E' a: {8 I( p. C
修改的代码早有了。到今天不会编译。8 T( ^1 T8 y- K5 F
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , |) s2 M1 K9 H: d3 C' W: h
  2. #include <malloc.h>' V3 M! V8 z6 r$ ]
  3. #include <sys/types.h>
    6 ?" D1 E7 t& m* O$ R) c. R# W. N
  4. #include <sys/stat.h>. I( O/ h- t- F3 f- @, ~
  5. #include <sys/ioctl.h>
    8 F1 C; i; L1 ]+ G  b8 g
  6. #include <stdio.h>  p' X7 G% e  B' s, f* J- g2 O
  7. #include <string.h>
    6 h( C1 P+ y0 t  K) v1 W  D6 s9 f0 A8 O
  8. 8 L, L+ g; H; {( W. ~1 U) \
  9. typedef struct {
    9 ]% g- R' `& N; f  M& V. M& N# i
  10.         unsigned int        e2prom_cmd_sub_addr;
    # |6 f& B% x: _2 k$ t# Q0 M
  11.         unsigned int        sub_addr_count;
    / b" j: @8 e7 T6 i: d' w0 e
  12.         unsigned char*        e2prom_cmd_data;: |' W0 `- p: x4 e+ ~8 v! L( ~
  13.         unsigned int        data_count;7 _  Y% m* X! L  |8 V- `
  14. } e2prom_s_cmd;0 y8 K) l, G, E8 q
  15. # ?' w* L1 G0 S* u. W5 H
  16. #define E2PROM_CMD_READ 1+ w- @; e& A  M
  17. #define E2PROM_CMD_WRITE 2
    2 S/ |8 H8 r8 t3 O
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"& l* O1 M1 @1 T/ k; J3 }

  19. + W. N& F2 I5 W- h* q/ j9 F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * I  [/ F; k8 ?& d: e# Y
  21. {
    5 N. }4 d" u/ i' l, N
  22.         int fd, ret;# c8 g" O3 N2 G! K5 |* R1 K: W6 c; t
  23.         e2prom_s_cmd arg;9 K* u' Z6 `# ]& o( C" c
  24.         unsigned char buf[0x18];
    9 ?( {! _6 F2 |7 n9 V

  25. ! }* g/ z" M0 [( |# H! q# t* u- [
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + z( T* D8 S$ c- H+ Z: H( u
  27.         if (fd  < 0) {
    $ Q" F" Q+ o5 s" E
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 C7 s) [- V6 O( v6 j
  29.                 return -1;
    ! N  ]& A& k# I: c/ e
  30.         }
    ' i& a" m) Q; k" t* a$ r' A
  31.         arg.sub_addr_count      = 2;9 V/ P7 i8 ^4 J: o  ~
  32.         arg.data_count          = 0x18;7 T$ l3 q" B. i& @# a
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; v1 `) q" _1 C) F# ~* h" |! `
  34.         arg.e2prom_cmd_data     = buf;
    ' C$ m" Z' V7 G. T1 ^# B- a  A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % u7 y( E1 t, o
  36.         if (ret != 0) {3 U% H; A0 Q: B! a
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 c3 Y9 U' |5 _7 L1 K
  38.                 return -1;
    " C4 F8 w5 L/ P; f- }4 K
  39.         }
    8 K  a; m! K9 @% ~9 z1 T
  40.         memcpy(mac, buf, 6);
    0 X, g# ^$ T% D7 Y4 k
  41.         memcpy(stbid, &buf[6], 18);
    7 L& V5 k* J# c0 D
  42.         stbid[18] = '\0';
    6 ^  P/ i8 c3 Z$ |" S9 \
  43.   u/ A0 @; J% R; l% g
  44.         return 0;$ J# J/ x0 M: @( z1 W- o2 m8 o
  45. }
    $ J) |$ r; C8 G4 d
  46. , Q3 c* Q7 @: H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' E2 ^+ U4 h/ A  C4 `4 Q: w
  48. {/ {! f. ^% `) I, h
  49.         int fd, ret;5 p9 @! t% D' O5 q" e6 n
  50.         e2prom_s_cmd arg;
    ) d/ n0 |8 }  Q" U1 n
  51.         unsigned char buf[0x18];& G; [$ e/ T' t( g6 d, g! s
  52. 9 W0 z  V9 Y- T$ L' F
  53.         memcpy(buf, mac, 6);9 W' }8 J$ i5 e: G% i
  54.         memcpy(&buf[6], stbid, 18);
    2 P% r# Z3 t2 u8 \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : k, r7 Y& R" ^3 ~- l
  56.         if (fd  < 0) {
    * p* g- G9 I, [, z& T
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 `' N9 T2 J1 O6 w7 f
  58.                 return -1;/ M0 i' n9 n1 s9 M
  59.         }
    # o* ?- [6 [+ C+ ~7 E1 y
  60.         arg.sub_addr_count      = 2;* }; d' x, f, w0 c) k
  61.         arg.data_count          = 0x18;
    ( b% o" f1 p2 W2 C+ o2 @
  62.         arg.e2prom_cmd_sub_addr = 0x290;! T# _( J# Y  w. y9 _% T
  63.         arg.e2prom_cmd_data     = buf;
    ) f0 M) j5 W. m& {! i  E1 b+ X/ v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 q9 l% p- `! i# g; R9 S
  65.         if (ret != 0) {  I* D5 R, v/ V) ?$ L1 D" @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; b; @  B0 b/ O) A+ c+ [( O( s
  67.                 return -1;
    + |( f( _( [3 [- x1 i
  68.         }, Y/ l( y0 H6 D$ ~* q* q/ ~0 {
  69. ! G0 P$ F0 C0 Q. E0 s( y
  70.         return 0;& o/ |7 `, ?1 K9 F% K& Z9 @
  71. }& L4 |0 o4 H: O6 e9 Y
  72. 0 ?; K0 b5 s+ {- H% ^1 a5 D
  73. int main()! L0 E! t7 y; @6 @
  74. {, j" O* o! b. _4 p9 a0 C  O
  75.         char c;
    7 h2 v' a) a# H4 T! {" c
  76.         int i, macs[6];/ S* x. H7 m& m
  77.         unsigned char mac[6];/ P$ J3 F6 H. F  K4 R  d
  78.         unsigned char stbid[256];
    6 i4 T+ N' j$ V# y" y
  79. 7 L/ ~9 M$ B( P4 b2 W" J
  80.         if (readparam(mac, stbid) < 0)
    ! U) L, e" P) P+ n( V8 X
  81.                 return 1;# m  P1 i7 n5 o3 V/ r
  82. 3 B% o# J: W9 h) y( g0 ^! }
  83.         printf("Current parameters: \n");
    7 S0 G7 P: _5 p
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) W  y3 F+ X& J& q& V- d
  85.         printf("  STBID: %s\n", stbid);
    " r1 x! j9 G1 M0 h) h
  86.        
    6 A: k- D& R7 k" y0 w! n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 G- P! K8 F3 \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& N4 o1 I7 K9 O& F! `2 K$ j
  89.                 printf("Input MAC error\n");
    " b! E+ Q' X' y6 [
  90.                 return 1;
    5 M- _0 ?; G. C9 X7 z! \( R1 `; ]
  91.         }
    9 g# z8 l& s- w8 }  f8 D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    % d. ~/ U9 p- m6 R
  93.         printf("\nPlease input new STBID: ");
    ; N" r2 i2 ^0 S6 T
  94.         scanf("%s", stbid);
      I# Y! [8 r2 D- c% F: l
  95.         if (strlen(stbid) != 18) {
    % n" y3 v9 K1 b5 F
  96.                 printf("Invalid stbid\n");
    8 m8 q. c( R6 z, @& i
  97.                 return 1;$ o: X8 T, q# L$ W% P2 g: T
  98.         }
    3 v7 n6 m/ v7 K0 u9 f( n
  99.         printf("\nNew parameters: \n");
    : f$ M  U& v  H- M# L, `+ X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      R# ~2 P3 W' L4 C2 {, ^5 n
  101.         printf("  STBID: %s\n", stbid);. R6 b/ ~$ L2 F7 V: b: G9 e( x8 S
  102. 6 n: [2 `4 O1 Z, c
  103.         printf("\nDo you want to change paramemters? (y/N) ");) R3 [& B9 F6 d6 z, G& ~" m/ N# t
  104.         for (;;) {
    1 C0 V" D2 z0 G- c) R  E% [/ w) F
  105.                 c = getchar();
    : z& O( E+ F+ `5 G
  106.                 if (c == 'y' || c == 'Y')$ N& b6 g6 R# D( x# O
  107.                         break;
    ( }0 M5 S0 W3 X  O0 o! ~
  108.                 if (c == 'n' || c == 'N') {0 ^8 [) Z; X' y7 w, [
  109.                         printf("\nAborted.\n");+ @4 b5 y1 S& s( c8 M
  110.                         return 1;: z4 }5 `. a0 o; K  K9 m( Y4 a
  111.                 }# R8 `  U/ \- ?$ g" M% _3 M
  112.         }4 n9 M6 r2 z3 n& W; s( s/ j+ v3 {
  113.         if (writeparam(mac, stbid) == 0) $ P. i) A: B$ Z( w/ {% K$ @9 T
  114.                 printf("Parameters changed.\n");
    ; A1 q! Q- k& T$ K4 T

  115. ) P, L+ u2 g# G  P7 W( j  v2 h
  116.         return 0;
    3 ^0 |& X4 ^, x; s  P
  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
$ W$ ?" o# r" F! v8 }4 D在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 R5 ?' A8 E% l0 Y- I+ t6 D5 \你用的编译命令行格式是什么?" c% A. U) R. E8 M" c* _4 y
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-30 23:43 , Processed in 0.025150 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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