查看: 16598|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 K) s/ z! k3 ]5 q: D: v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& E. Z/ Z8 O# w' Q2 ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% e3 }9 b8 _. I# s9 Q- _
usage: himr <address> <value>. sample: himr 0x80040000 0x0
( f' s1 W( p/ B8 Z
" V- o2 m# B* l6 X1 Y7 h; D6 V: ^/ }$ G* v& w2 k9 F
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; F' g" K7 W3 p) G* W3 N, ?5 d7 A
8 G9 l  j7 \/ E补充内容 (2012-3-8 09:42):
7 }/ A' R: R2 {/ p  Thttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 b; S# E& [* |7 Q3 T9 G5 w; Y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。" D% X. v( z6 v# S: \4 u( ~

' V" F8 f/ G4 ?! s3 w( G2 Rhimr <address> <value>. sample: himr 0x80040000 0x0
/ |8 x/ ]& o8 O% Y& H3 J( D
; ?, q2 g0 B9 q. ~" f: X例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 U. Z- r2 B/ L6 c1 h
himr 0x80040000 0x00+ W% ]% i) I7 Z6 f
himr 0x80040001 0x11( l$ [# h# h5 x( J& Z* T6 a) l
himr 0x80040002 0x22
0 t& f% f& W7 D1 u4 g1 Hhimr 0x80040003 0x338 u, g" c: ~, ^' s( T2 B
himr 0x80040004 0x44
+ r, h  M' Z1 r4 d8 [himr 0x80040005 0x55
! J1 t% W4 ?" ?3 W$ z1 P: V
8 M6 n4 z9 g5 B9 d' f% _# v" o& vSN也是类似。: i; M3 }1 I) |* {: o* W
5 A4 t+ k5 u! K- H5 D
现在主要是,谁告诉我们MAC和SN的地址?4 ]" V- X. J8 i$ _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . u7 b% _8 ~8 C$ {
一直想找到运程修改MAC和SN的办法,苦于无解啊
. r% l  S% l9 \6 @" m( ]
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . ]  B9 y: H6 P0 n, ^
, K9 i% r2 m/ H/ n
修改的代码早有了。到今天不会编译。% w$ d4 Y  d- }3 N. X
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - j, i5 F) {  y8 Y2 p5 Q; h0 D
  2. #include <malloc.h>: r& s( a" B1 B# _* K  _
  3. #include <sys/types.h>
    ) z1 z$ x' L3 T& Q, e, _
  4. #include <sys/stat.h>0 [- B. T  k- J+ H
  5. #include <sys/ioctl.h>5 N- m# H1 u: v
  6. #include <stdio.h>
    ! F) q/ v8 d: S$ z! W- S
  7. #include <string.h>
    7 Y2 F- u; ~/ ^# `6 E
  8. 0 M- E/ e; J6 V- Z" `7 i
  9. typedef struct {
    ) |0 `, {# `% q! Z4 i1 k3 C% u  E/ X
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) g% J$ d' N4 s# ?, y
  11.         unsigned int        sub_addr_count;
    0 d  \' O5 ~6 l3 i% a% q/ A# x
  12.         unsigned char*        e2prom_cmd_data;
    " u6 _$ f4 k6 s' [: u! e
  13.         unsigned int        data_count;
    ) Y2 D1 T# E3 V6 v% Z, m
  14. } e2prom_s_cmd;
    8 K# g% U% L$ ?/ U+ I

  15. ; P# e) [$ }: n" Z- m  Y6 T4 s& H
  16. #define E2PROM_CMD_READ 1) l( W# S7 @+ }& W. ^, K7 X
  17. #define E2PROM_CMD_WRITE 23 X9 n3 P; g# b0 J% }3 t& ^" X" n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" J1 r% E7 z7 {3 `$ r

  19. / i5 f' N# o  f! \+ {
  20. static int readparam(unsigned char *mac, unsigned char *stbid): J& o* v+ T, w' l9 {3 C- L
  21. {
    ; @3 R! A( j. M2 o5 e
  22.         int fd, ret;
    / E4 j" f7 b, l: h! p! c
  23.         e2prom_s_cmd arg;2 \  i& {' d2 d  W$ l* ^9 N1 G! |
  24.         unsigned char buf[0x18];: o. g/ \; U( i

  25. : E4 e  \1 }2 M) F  V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 @9 h# e, i. Y' I' j
  27.         if (fd  < 0) {
    8 O% g7 W; D3 _7 Z6 |, k8 Q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  d3 {7 A5 s! }5 r) c
  29.                 return -1;
    * d8 a4 u* K% k5 F& o# J2 `
  30.         }* t$ w: M6 @1 h) n# ]- X, Y; o
  31.         arg.sub_addr_count      = 2;, c4 c5 e* j5 q" u( C
  32.         arg.data_count          = 0x18;2 {; z6 L+ ^9 q; W
  33.         arg.e2prom_cmd_sub_addr = 0x290;) {+ A5 r5 O+ @, Q
  34.         arg.e2prom_cmd_data     = buf;
    $ ^+ e' [& I6 P( ~3 M' t7 |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; u4 w2 f3 n) X3 j: e" q$ I8 u" R
  36.         if (ret != 0) {2 v" Q9 t( [! m5 }  x/ ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - M- `% }8 @) \( d# d* f  `
  38.                 return -1;3 n3 q! g7 u. J7 `
  39.         }
    : Y' ]  n  l. |4 [6 n+ H4 p* E
  40.         memcpy(mac, buf, 6);5 y! N6 y. c* X( i
  41.         memcpy(stbid, &buf[6], 18);
    ' W( h+ ~& l0 l8 a6 j. Y) C' X! h( d
  42.         stbid[18] = '\0';
    " Q- l1 M! W& K9 g9 o7 U. Z
  43. 6 Z, e8 H2 V) N9 N
  44.         return 0;
    + ~; g) Q, F; p3 W, x+ V0 |
  45. }
    ' b- \& E5 ]# |/ M5 B" K- z+ N, }

  46. # i0 ?7 p. H' p/ }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 `9 }5 \) N/ v- ]% g
  48. {0 [& ^8 U0 {5 K5 ~1 N# g3 P
  49.         int fd, ret;5 N+ f+ L' Z& y2 O% S
  50.         e2prom_s_cmd arg;
    ) ^& p. ]# d' B2 Z
  51.         unsigned char buf[0x18];6 B$ y! s$ Y& n& x

  52. 2 P- a$ Y0 h# ~  p( x$ T3 W# K0 E
  53.         memcpy(buf, mac, 6);
    7 Y; I" x0 q7 L- ]6 b& i! J
  54.         memcpy(&buf[6], stbid, 18);0 [: K0 g$ }% M
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 s( H1 F- K0 e) F  n
  56.         if (fd  < 0) {- ~, @  l3 N$ m5 S' K+ p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 o* v8 x  A& e6 `; H: E4 @' Z
  58.                 return -1;
    2 }; ~* ~. J  v! B3 Q' j8 ^- d
  59.         }
    ! R% ~) t. p6 z2 b
  60.         arg.sub_addr_count      = 2;7 Y8 n% x& u6 C1 U5 R/ B+ _
  61.         arg.data_count          = 0x18;
    ' ]2 ?1 g6 O0 _
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % x% `' {: I( J; ~2 r, z7 M, C
  63.         arg.e2prom_cmd_data     = buf;
    ' t# t: N9 V8 Y- l- w! L4 k4 T0 s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ) H9 u1 N& z3 M' V. p
  65.         if (ret != 0) {6 M% U1 `- I1 m0 N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; K( W9 w4 @/ H( \7 c# }3 i0 }
  67.                 return -1;
    1 {4 f; u6 o5 ]1 |3 F* A
  68.         }
    ! ?; c1 e; A; _( j
  69. , m; a& K3 e: P
  70.         return 0;
    / X: R. x( y' j) G
  71. }! z1 p$ e0 ^) R& y. `% S9 J# Y

  72. % M" G( G6 f' o* y
  73. int main()
    7 A: M9 l. _" h& }* n* w- `# F
  74. {
    2 g% T+ X" U: h1 ]$ @" G0 ?1 P, m
  75.         char c;8 d6 P1 H5 V, p5 F+ O7 z
  76.         int i, macs[6];8 N: L& e# r8 e, \8 ]/ R
  77.         unsigned char mac[6];4 ~6 a# u# r2 ~6 K& @/ P6 U# [
  78.         unsigned char stbid[256];
    5 q2 r$ c( M, Q7 k5 e0 f8 x
  79. , ]% D$ P7 \' U5 s6 _) [
  80.         if (readparam(mac, stbid) < 0)
    8 W4 k5 }+ C+ y- p, K& P
  81.                 return 1;
    9 |$ T4 E8 d4 A. ?7 K
  82. ( }; O( W3 j" z5 T2 t+ S
  83.         printf("Current parameters: \n");5 l$ r4 Z: @5 A% [3 }& f
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 g% H- f8 E0 ]6 a) p7 V, b4 o, ]
  85.         printf("  STBID: %s\n", stbid);" ?+ n1 u4 u7 |5 V! {
  86.         , a1 p3 {# ^+ d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % Z/ l: \7 U  Z: D: W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - R5 G5 \  j+ ?8 ?9 n# a$ h3 ]
  89.                 printf("Input MAC error\n");+ |5 I2 U/ r2 y& j/ Z8 k* A  Q
  90.                 return 1;
    , D( T5 V. w/ ^
  91.         }
    . v* b0 [. O8 H4 M
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - F: C- a7 ^% @8 f- S( u( b
  93.         printf("\nPlease input new STBID: ");& P/ l+ v1 ]) N) \
  94.         scanf("%s", stbid);
    3 r: E7 T2 x- f  S8 v5 Y/ z
  95.         if (strlen(stbid) != 18) {
    . ~0 a6 j# B+ w% X
  96.                 printf("Invalid stbid\n");- \/ m" b8 A2 D  P$ T( d; F* s$ k
  97.                 return 1;
    6 Z# e( M* l, [" |; y  h
  98.         }5 u( q3 c0 R. z- N) _4 X
  99.         printf("\nNew parameters: \n");7 H, ?, e$ Y, C3 Z! l! Q8 m( V! J9 t# x
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ i! m# C. N5 m0 I
  101.         printf("  STBID: %s\n", stbid);6 ^3 I. B% t) r: k4 F+ C

  102. ; B5 a. g1 l6 {) ]- |
  103.         printf("\nDo you want to change paramemters? (y/N) ");' _7 e; `+ j0 q. Z! ?+ u4 G
  104.         for (;;) {) D$ L+ j3 p, \' o
  105.                 c = getchar();
    / i6 u6 q8 ^6 S) p/ _, J( y& P
  106.                 if (c == 'y' || c == 'Y')
    % j" _. K" C! \
  107.                         break;% l6 @# b" U. R' _) U# X  u' K) o
  108.                 if (c == 'n' || c == 'N') {
    2 c3 s! i3 x  j" Y$ l: O
  109.                         printf("\nAborted.\n");
    5 `+ g" Z! [7 z8 r
  110.                         return 1;
    9 n1 m4 [  S0 W' O
  111.                 }% e; g- n. |; L4 {
  112.         }$ P7 y# @& ~' @$ S- O3 h9 X! T) b
  113.         if (writeparam(mac, stbid) == 0) 1 V# E, N. b+ A. e! a) J4 a4 B
  114.                 printf("Parameters changed.\n");( B; R6 n& d! I$ d0 Q

  115. 5 z4 V  R1 l% d) l$ ?5 C
  116.         return 0;
    ; s5 ?( N$ t1 K" Q0 B, P& C
  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
/ W9 R5 T8 A: y; s8 Y0 K在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. I, [- H9 J+ n
你用的编译命令行格式是什么?' V; d! L: c0 v- ^
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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