找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15338|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; X7 a& N" p; E; E5 e" T( n
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    + h" Q5 g8 ]+ R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
9 W5 k. _5 L% T+ Uusage: himr <address> <value>. sample: himr 0x80040000 0x0
% M4 c  s1 Z/ ?8 G' a; ?4 t7 _
5 t$ w8 p% m  s& C$ H  [8 V8 U* X
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% `- `) y5 A- U+ C/ {) B. N

8 k! @6 v5 b5 c9 v  B9 L补充内容 (2012-3-8 09:42):
% h5 I9 \  Z. R7 d; m- b* Xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 m- u9 o8 d! a2 w. z$ y5 ~$ T* j这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。* Z6 r% |8 J  _) q) _

/ q" t" Z: q4 @7 m% ahimr <address> <value>. sample: himr 0x80040000 0x04 j8 f+ {; R3 G$ }/ [

7 a% p0 `( k. y" K1 o" ~例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 U6 P4 c& ^# L% ]
himr 0x80040000 0x00. |2 i! s0 G; @+ c" I. O; k
himr 0x80040001 0x11
& d; T7 d# w% w) |1 xhimr 0x80040002 0x22" t( D( f* E4 Q# \: a
himr 0x80040003 0x33/ @6 S& I' u  x+ i' l& u, ?" C
himr 0x80040004 0x44! C. D% J9 i% r5 q* ^7 ^# Y! u
himr 0x80040005 0x55! A0 ]9 h( M" E/ k' f
6 U0 P+ ^+ }" E2 U* K1 z" n* l
SN也是类似。
/ ]! @9 r) E7 K; o3 f! ?. y  H' Y& a, G8 S0 q. @8 @* j+ l
现在主要是,谁告诉我们MAC和SN的地址?
1 p+ C2 l) W2 `7 I2 V8 D+ k+ M  z
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 s4 s3 v  c. n9 H一直想找到运程修改MAC和SN的办法,苦于无解啊

8 E# }5 @" P2 e$ K$ L# d源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' f) F' ?8 [& ?( `) N* X8 d7 M0 C
5 Y* W! o$ Y( A9 D. Q- y# i
修改的代码早有了。到今天不会编译。) G* f+ C% Y/ f+ F) B
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 I! q# o9 n# k( ?& z: E$ l; I
  2. #include <malloc.h>
    0 D4 A  k5 ^/ H
  3. #include <sys/types.h>6 Q2 S  A: Y; B2 T) {$ Q" X' h! N8 D
  4. #include <sys/stat.h>/ U* b- w! j/ G$ T4 ?
  5. #include <sys/ioctl.h>% f0 F- _) g/ I, }6 g
  6. #include <stdio.h>
    ( R' `3 V- n9 M4 w
  7. #include <string.h>* n+ S1 Z+ u* D1 w
  8.   H' x. h6 ?) A1 O9 G
  9. typedef struct {) y6 W( P" @! ?0 d
  10.         unsigned int        e2prom_cmd_sub_addr;2 l5 w# K! Z- V8 {1 t
  11.         unsigned int        sub_addr_count;
    9 K; i+ ~# J, h2 C' T
  12.         unsigned char*        e2prom_cmd_data;
    $ T8 Y! V9 ^* D( b& R
  13.         unsigned int        data_count;
    & G7 k$ h1 C/ [' u
  14. } e2prom_s_cmd;8 L* w1 ~3 w' j/ i  [- D

  15. , M! m8 ^' ]) e& F. A9 h$ X, @
  16. #define E2PROM_CMD_READ 13 j5 ]+ b% A! R/ J& s4 h+ S
  17. #define E2PROM_CMD_WRITE 2
    - u* B) ^: ^7 \) Y) c" w; }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / ~" `9 f+ E: F' x. C
  19. 2 B0 B3 e0 N$ F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)0 A0 a+ S! S5 |& g/ h: x( k- u/ o
  21. {
    7 H9 u! U3 [: o" A0 c; d
  22.         int fd, ret;6 O  t3 J* d/ F# X! r
  23.         e2prom_s_cmd arg;2 k0 Y) v* c) v+ i6 O
  24.         unsigned char buf[0x18];' U  d' ]0 K3 @% s8 H  `' {
  25. ( T2 Z4 I2 B9 z7 x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 B" U( F: X! j, s, K7 C5 p3 J
  27.         if (fd  < 0) {7 F6 X: ^. Y- ~3 M/ d
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - ~$ I3 m/ h( p0 [6 Q9 r& G
  29.                 return -1;
    ! W! W: K- x7 h9 {5 F9 y
  30.         }: J+ R+ c: S4 O* P( C
  31.         arg.sub_addr_count      = 2;9 g! Q$ O1 K4 G1 Y8 t+ b% @. ?
  32.         arg.data_count          = 0x18;5 s, {4 R2 C5 B7 X' N% I1 H3 A
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 u. R; J5 J7 q+ t7 d- c
  34.         arg.e2prom_cmd_data     = buf;$ e$ y/ N# I1 x# v' i. w( K- P- K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' m7 ]$ t4 b8 @# ]
  36.         if (ret != 0) {
    6 O4 b( N* T9 g  V$ J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 w2 N  a8 O& u: m3 L# G, V) T) E
  38.                 return -1;
    0 i7 X4 x+ g* H" A
  39.         }* s4 a; e) z8 l$ g3 Y+ h( R
  40.         memcpy(mac, buf, 6);
    ; X: f# f* _2 r7 q) O" @) ~
  41.         memcpy(stbid, &buf[6], 18);
    7 }) Z* C0 C. O7 N! ?- r8 _$ g
  42.         stbid[18] = '\0';; A' a& z( {5 {) V9 P) P0 u

  43.   W& a# Z3 }/ K$ o) ^$ ?0 R5 m/ C
  44.         return 0;3 `7 U# z3 _* A1 s& z( J7 Q: L5 m
  45. }
    " e) Y& K1 Y9 b7 S& X

  46. 7 Z& S2 I/ g; r# Y# I4 {3 |  s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : x$ h  W' u% g; x
  48. {. @- x" C/ |# S/ }& f# J
  49.         int fd, ret;; ^' k# S# e2 A7 X
  50.         e2prom_s_cmd arg;: t" [2 B9 u8 N* R- P: Y- h  A+ X
  51.         unsigned char buf[0x18];
    + o5 ]4 v+ a/ u9 J2 h

  52. , N3 Q2 t6 n. d
  53.         memcpy(buf, mac, 6);& C( [6 t# O* c
  54.         memcpy(&buf[6], stbid, 18);
    3 t8 ?( V% a/ z' x& C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; w& f# ?. M! n
  56.         if (fd  < 0) {
    4 V1 t) c' F. a% ~
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  T5 U. q+ s  k: ?! }+ N% s
  58.                 return -1;
    * ^, K' F$ \4 R$ B2 d
  59.         }( c" c( a. \4 ]* |
  60.         arg.sub_addr_count      = 2;
    : p/ ?% N3 _3 ~; z6 S7 ]
  61.         arg.data_count          = 0x18;7 Q* y+ H" k% F; {
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( V9 ]( ~, O* S6 L; L1 M9 N* }
  63.         arg.e2prom_cmd_data     = buf;
    ( ^  U0 I! e' G  X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# [7 `4 h6 h, x# F- Z: [2 C; \
  65.         if (ret != 0) {; e7 |0 Z3 W, m2 M6 }" v' U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; J, H, {( i; b2 ^/ n" G' u3 X
  67.                 return -1;9 `8 P9 o( r" b2 G' V9 R
  68.         }3 F0 Y" J( O" B% f* U# h+ o6 Z
  69. 8 C( Q3 }8 z: v2 S
  70.         return 0;; A- u% \7 x: ~" D0 u
  71. }
    : H& H- S# F2 P: |

  72. * J* C; @6 u# M7 u) S) z9 C, c
  73. int main()( ]' x# ~6 x9 c' R/ N- \
  74. {
    ) H! k( g: X# h5 K
  75.         char c;: T- t+ j6 [/ }
  76.         int i, macs[6];7 j# A6 }( W4 x3 R( X$ T
  77.         unsigned char mac[6];9 W, \- `# _! W( y: v# @" P
  78.         unsigned char stbid[256];
    ' O2 W. a2 _7 p, v, \* N% p& }

  79. ; i& ~# z# C) n% V
  80.         if (readparam(mac, stbid) < 0)
    & m- L( d: \6 i; z
  81.                 return 1;
    : y, L4 u/ J. P" n# a
  82. % _1 ?2 {) D2 O. x# |+ g: g3 p
  83.         printf("Current parameters: \n");6 o# X+ r& b' b* `# }8 c% N
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' w% }" ]. k* B7 o
  85.         printf("  STBID: %s\n", stbid);" ^" F9 a( B" g  g/ A. B& C
  86.        
    5 q% z1 K- [8 A4 {* u9 \' L2 \, R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      h: J" Z( P8 L' I/ f6 S6 I/ E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ) x, N. n8 @: H& ^* C
  89.                 printf("Input MAC error\n");
    " r: w7 G8 G$ n- S$ `
  90.                 return 1;
    3 }$ L  k& E4 G# d6 c
  91.         }
    * O* F9 Q% ?# i: {" f( u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 R3 d+ T( e! N1 @
  93.         printf("\nPlease input new STBID: ");
    % J2 }4 j* g0 Q5 e: N
  94.         scanf("%s", stbid);
    " {7 \! B. O' X+ V' q7 X& c) v
  95.         if (strlen(stbid) != 18) {1 L1 |/ Z' ^$ h- R4 g' i! M8 n
  96.                 printf("Invalid stbid\n");
    6 B" W. i9 F  P3 @9 \
  97.                 return 1;* G) d1 u; u& L& a$ n: N
  98.         }
    , a# F. t/ l9 t
  99.         printf("\nNew parameters: \n");
    3 Z) u  Y8 A0 l7 V! o; g0 e. g
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ Z; U7 O8 L3 ~- D6 `
  101.         printf("  STBID: %s\n", stbid);0 U) Y7 H+ w1 S6 p3 u. m
  102. 7 C5 I- B9 P4 M* w
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + ?; v' ]- r; M+ W* ~; v
  104.         for (;;) {7 y4 b4 J- N6 C
  105.                 c = getchar();
    ' U( f; h8 v# Z
  106.                 if (c == 'y' || c == 'Y')9 k- D* R. O7 ~. F* p) ~
  107.                         break;
    # z6 k, X* Z5 z$ R* a
  108.                 if (c == 'n' || c == 'N') {
    7 U6 F1 \- g: z8 F# p8 D9 A
  109.                         printf("\nAborted.\n");
    & U$ _; M' k% \$ {5 w7 w% q
  110.                         return 1;' R* v( A6 }" c3 k: K. Q" n
  111.                 }3 ^. e' |- h: r) M5 Q- d( B5 t$ e
  112.         }! G( z  B3 ]4 V+ \& M6 x: J4 z
  113.         if (writeparam(mac, stbid) == 0)
    ' p' W. |( A, r+ z8 u9 j/ _
  114.                 printf("Parameters changed.\n");
    " Z# ~! O1 a/ y/ o! ?7 a
  115. & A) T$ M. o' b. u. _) H) y8 d
  116.         return 0;
    7 _+ I! \  Y5 T# u. c7 Y. ?
  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 4 r6 r: z5 T. O% ~9 D3 l) }0 u
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" P2 \4 b( d5 ]# t% B你用的编译命令行格式是什么?* m/ r4 t  S/ F' R* g' J( W
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-23 15:40 , Processed in 0.049752 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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