查看: 16373|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 a  e' [4 D4 P0 c
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % ^# X6 y+ }, B( V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; B+ ?( r$ C6 E3 X' K9 e
usage: himr <address> <value>. sample: himr 0x80040000 0x0' v) l9 `, S2 [: ~

  G( @  f5 x/ l( B/ y: w9 ?! q) ~2 d" F4 R. [5 \
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( D5 k; V7 r! ~7 ?% h+ W: H
. R" n$ ~% N) j3 M. f8 y
补充内容 (2012-3-8 09:42):
( P# B7 k3 B" X7 a! A4 qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' X" F2 s& c1 h
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
4 o+ o- L0 P$ m- C7 H' |/ k- P1 Z0 G, b' M- E/ j( C" X
himr <address> <value>. sample: himr 0x80040000 0x0
* Q$ v: H8 l' w8 V9 K
( B" g% }' o% \# j4 p例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ z$ G% ?6 s: h* [9 ]" U
himr 0x80040000 0x00
( z1 E" G1 U) a, y' z# `himr 0x80040001 0x11& g2 u3 L% ~, C# U" |6 U2 X
himr 0x80040002 0x22# t2 R& m3 \' S4 r/ B
himr 0x80040003 0x33( S; h: P* w& X+ {
himr 0x80040004 0x44
, t. W- D7 v& }! ?7 _! phimr 0x80040005 0x55
% m* M9 J# o6 A0 |  ]% M7 Y( s8 O9 E& j( y' u
SN也是类似。4 f" s0 q; \* x7 B: e; T# R4 c# q
# U' B9 r2 s$ f7 a1 D0 P# F( Y7 P
现在主要是,谁告诉我们MAC和SN的地址?
# G! r! l( P0 L5 J
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % J' v7 D! T; a" I- S! @6 z
一直想找到运程修改MAC和SN的办法,苦于无解啊
( m4 r- H6 n( g. M
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 2 v/ O! F+ n4 P% A

5 _$ J. f8 i/ y" q修改的代码早有了。到今天不会编译。
' y- [; s7 S" X% h6 |. W2 [+ M需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 f0 Q, Z! N2 x; N, e" f
  2. #include <malloc.h>
    ; [- g5 [8 F% K0 v2 ^+ n
  3. #include <sys/types.h>
    . a* @% O" l4 ?+ f+ n
  4. #include <sys/stat.h>
    ( [8 U; l3 B! W$ {- m8 s
  5. #include <sys/ioctl.h>  c# ^# T! w$ a3 T+ Q) k) M7 C
  6. #include <stdio.h>9 y/ {7 G: ~' N: t) {2 b
  7. #include <string.h>
    2 v6 h$ ~4 Z# S' ]5 S* f4 u
  8. % B/ F7 q( O+ Z8 I, r, q7 u
  9. typedef struct {5 C# ?( d. f# z
  10.         unsigned int        e2prom_cmd_sub_addr;+ [  G! s9 s' D- @4 P
  11.         unsigned int        sub_addr_count;
    # w4 }; Y* ]; K+ K3 Z1 o- {8 w1 V
  12.         unsigned char*        e2prom_cmd_data;
    . E) U4 ]7 e  e3 Q- j: E0 m! b
  13.         unsigned int        data_count;
    8 k' y& g0 e! ?- {; m% g6 k8 p, B; M
  14. } e2prom_s_cmd;0 v/ e4 a5 ~5 X9 T

  15. 3 V6 X" y( m0 H* i1 v
  16. #define E2PROM_CMD_READ 1! o+ e& M0 B- J* V( l) P' o" B
  17. #define E2PROM_CMD_WRITE 20 g3 n$ l( j$ d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! i% H! [$ C) o# z3 I  x

  19. - v' Q9 _) h6 S* M8 F& E- O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    - H  D6 A- h' ?7 W  \
  21. {7 A' W0 R  x6 ?7 U& i! m; X
  22.         int fd, ret;
    4 V. L1 ]: A5 }, v% x+ H% c) r8 h
  23.         e2prom_s_cmd arg;
    , }' s* N4 A# I0 y/ k
  24.         unsigned char buf[0x18];% ]6 a8 j9 |: t

  25. ! A. `0 s& n; V& q$ A: \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);2 K, s7 U# K* E5 L$ J( c
  27.         if (fd  < 0) {
    ; `* q  t) y! I& B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. M& I* }/ N- @0 \& B2 z
  29.                 return -1;
    + t& O( c# Z% Q9 d) m6 W3 x0 U! a1 ]
  30.         }" u# [- r" s7 W" P! l
  31.         arg.sub_addr_count      = 2;
    7 |" S) \3 T0 i5 S  z4 f/ E! B
  32.         arg.data_count          = 0x18;1 ]1 t! |0 p" c/ \9 r+ k
  33.         arg.e2prom_cmd_sub_addr = 0x290;" |6 }' d: i- _/ \- s/ G. I- S
  34.         arg.e2prom_cmd_data     = buf;! ]6 n! P! W" v9 _- J$ K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 J  q7 O* ]1 C9 t( |: f
  36.         if (ret != 0) {  _$ P5 v3 V" h& I; [0 T) r
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ _' p( G' }" k+ y4 q( }  @
  38.                 return -1;
    % Z2 f/ b* J: q5 J) I3 F  ]
  39.         }
    . u5 }- y2 C6 r* q8 l
  40.         memcpy(mac, buf, 6);
    5 U+ K% X3 I( y# n
  41.         memcpy(stbid, &buf[6], 18);' M$ R4 I& F4 r1 {' Y% i8 Z
  42.         stbid[18] = '\0';
      V+ J) y1 @1 A, X) c

  43. 7 y/ S2 X" |+ B7 H; B4 j9 l' D. m
  44.         return 0;- s% O- g0 \' v3 M, Q
  45. }7 B3 S+ ?1 i* A8 K( `
  46. ' T, G0 c. }9 ~) r* k+ U& Z, ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / I* v4 \  `. s4 c8 L& n9 g, \: ]
  48. {& D8 e# t  n. e9 p
  49.         int fd, ret;2 R) i2 J1 d4 i  i% [' a/ C
  50.         e2prom_s_cmd arg;6 j. l4 r8 ]- t( n6 @6 x' a
  51.         unsigned char buf[0x18];4 e5 m1 w. D8 j0 f# Y

  52. + A! [& S9 w( n2 Q. l8 K3 E' r
  53.         memcpy(buf, mac, 6);1 Q# E" C, |) X# |* [7 T! p+ f
  54.         memcpy(&buf[6], stbid, 18);  }, z8 m0 \0 C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ Q/ r5 g. T. b& N
  56.         if (fd  < 0) {
    4 ]; g" f/ d" N$ ^  x+ u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " l: a. J/ M/ P8 [& d
  58.                 return -1;
    - S8 X7 A5 U( D) `* K
  59.         }6 ]2 d" Q5 f! X3 U( A' W! u' b
  60.         arg.sub_addr_count      = 2;
    " d/ g* t5 _1 W+ s% i1 Z. I2 k5 [
  61.         arg.data_count          = 0x18;
    $ W5 r0 ~  @$ }4 V1 ?3 x
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 D; h0 p) ~/ Y' o$ R+ A
  63.         arg.e2prom_cmd_data     = buf;
    1 H4 \: P* E+ n/ i  n! c
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " i7 M1 F+ M0 \' y' k( o+ T. r
  65.         if (ret != 0) {* U; x9 H. c! w* _! y% z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! p+ T- V/ p) _! j
  67.                 return -1;
    . b8 ]& X9 V+ n# [& V1 j
  68.         }
      E" {* D8 e* s+ w
  69. - Z) H9 U& x( Z
  70.         return 0;' _/ R0 j$ p% _
  71. }! ]8 H+ h9 W" ^* ^
  72. + \8 ]( Z* j0 N
  73. int main()
    & T1 R3 I1 f( e3 M
  74. {1 }1 S7 {6 k2 H
  75.         char c;& k! K+ d& R' n2 X7 |2 L) q: u
  76.         int i, macs[6];
    $ t& B, ~" S7 b6 Q$ F4 d8 X* \/ U
  77.         unsigned char mac[6];( e8 x  j# o. v! ~6 @( X8 O
  78.         unsigned char stbid[256];
    ' ^+ x$ g* M  R3 Z

  79. 1 h( a2 I% B. |6 k3 F2 f9 H8 L
  80.         if (readparam(mac, stbid) < 0)" d5 `7 M9 m0 o; h2 `
  81.                 return 1;
    ( T1 i1 K+ C+ s; T) z
  82. 7 x8 N$ f1 f5 d* [2 [
  83.         printf("Current parameters: \n");; t' L2 Q. {: D/ {' u0 g5 k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 Z& f3 o0 O8 `+ _: h, G
  85.         printf("  STBID: %s\n", stbid);
    : p2 f% `/ ]* m( |
  86.        
    0 Y8 u1 l  C! n; m" P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - h/ J: q( E2 c# B) k. ~5 m3 O0 A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! r2 e/ V$ @& D- _+ o
  89.                 printf("Input MAC error\n");/ r/ }6 f0 w, |$ |/ k! m* A$ ?0 z3 K
  90.                 return 1;7 f& _! a0 w" [0 Y1 C
  91.         }3 t" M; t$ `+ d. u' [3 t  d  }
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# q' ~6 k; G  ^5 J/ _) n8 I
  93.         printf("\nPlease input new STBID: ");
    ) L+ a: q  r5 \* `! }/ Z
  94.         scanf("%s", stbid);5 [# L2 R/ U6 Y* }$ R, z2 F
  95.         if (strlen(stbid) != 18) {
    " N: y3 W3 _, X3 S/ v% a9 z
  96.                 printf("Invalid stbid\n");
    8 N( w+ h# t( F. \; f
  97.                 return 1;+ h) q+ P7 o6 q; E2 Y
  98.         }
    / Z' x; B( i# n. r7 M0 |
  99.         printf("\nNew parameters: \n");
    ( J, P5 i' i+ s& A
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 V% s' N3 [, K' ?& @: T  A
  101.         printf("  STBID: %s\n", stbid);
    . w  f. A; |1 \# V+ t

  102. 5 h. V% h8 @+ k; ]+ B1 T
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . ?/ A' {. l) i2 R, v
  104.         for (;;) {
      W( o3 v1 H7 i: U6 c% R5 E
  105.                 c = getchar();
    0 b- n  c. L5 O* M' v% d
  106.                 if (c == 'y' || c == 'Y')
    ; X0 g# {& d8 U6 x( G2 y
  107.                         break;
    ; T& \5 a/ _7 Y$ ~: H+ A
  108.                 if (c == 'n' || c == 'N') {
    5 d  a! K: n% L" P; i
  109.                         printf("\nAborted.\n");6 q5 p- M2 E. [4 _) M
  110.                         return 1;
    5 Q4 N$ v4 I3 [6 ]( g
  111.                 }9 U0 \" n! J: W/ s* h+ I$ Q, Z8 v
  112.         }& j) S8 o" G/ a0 q
  113.         if (writeparam(mac, stbid) == 0)
    " g2 v( R! G& F* I* U7 x8 J
  114.                 printf("Parameters changed.\n");9 Q) z4 l& ~! j

  115. 3 W# p6 R3 I* T( Y
  116.         return 0;
    # C5 c# p6 F5 |5 W1 o( F4 m( b% 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 ; V' ]# ]" L) F$ E. \$ Q( M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% s$ |" t8 r  x# ~, x- _9 O你用的编译命令行格式是什么?9 ], Q. T/ [: \" D( A% k" @; d
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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