查看: 16321|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. G8 }7 M1 V9 C( [3 ?5 {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % _3 }6 Q3 C) v4 O9 E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& g7 V. V. J8 s/ p, X8 `. {& @
usage: himr <address> <value>. sample: himr 0x80040000 0x0
- T; U- I0 k0 l0 G: p7 h$ ^" Y1 b) S  K' Q

% x' h% T  @* W: J不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- a: {  j$ N3 b4 I/ R8 [3 p9 h+ ?9 x
补充内容 (2012-3-8 09:42):
/ \5 p. S9 ^1 e% E8 Dhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 }8 n( L. u; i! j! a. N% u2 \. _这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# A  `; H$ A& H' Z' B9 j4 |
' @7 z, l3 B5 R* z* i4 D  W: z
himr <address> <value>. sample: himr 0x80040000 0x0
7 [4 G: q# o, d6 B, `0 y/ P8 ]) \$ y) H" m& `" _3 |9 e7 L. B" f
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ d0 v! U- ?, |0 Z4 S+ F8 V
himr 0x80040000 0x00  @7 W8 I$ |* d
himr 0x80040001 0x11
3 n! H7 G" B) N* s1 ghimr 0x80040002 0x22
/ A: }7 m4 }8 J8 qhimr 0x80040003 0x33
; H. `# i* R  e, G$ P( m5 i1 khimr 0x80040004 0x44- C4 Y' r# d4 [2 |* e
himr 0x80040005 0x556 u5 a* i& h" e0 `+ t
+ v  l$ E* l  l9 O: d' o
SN也是类似。
$ u0 y- Y! |& D$ W& k1 T9 J
* O9 E- D0 F! c; r现在主要是,谁告诉我们MAC和SN的地址?
9 c4 X+ L- h5 s  b% D& E2 N' Q/ B
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / J8 |% d* _7 E5 ^
一直想找到运程修改MAC和SN的办法,苦于无解啊
! h7 r7 t5 x; {+ t5 z) G
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % T/ _( A, {4 i) O$ M) d

# l7 S8 m7 M3 ]8 D: z6 [! O修改的代码早有了。到今天不会编译。+ l9 m. X5 c, _9 P" J8 a. n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 h7 S! A8 [# w8 h
  2. #include <malloc.h>. u$ @& d# w8 P- v- u
  3. #include <sys/types.h>
    - F2 }9 Y- U, V$ o2 |; L! L
  4. #include <sys/stat.h>
    9 z! F* |7 m( T
  5. #include <sys/ioctl.h>
    % |8 T7 ~* ?. J2 ?3 }
  6. #include <stdio.h>
    2 K4 A+ Q( n$ p
  7. #include <string.h>
    2 @" T8 `) T- T$ U) D$ B* o4 T

  8. 5 t4 A/ c5 E/ a& e
  9. typedef struct {
    ; _! V; V! d/ @9 y$ W6 m
  10.         unsigned int        e2prom_cmd_sub_addr;# |- K# _$ ~6 ^5 a
  11.         unsigned int        sub_addr_count;! H* ~" B  r- o( G  [& `
  12.         unsigned char*        e2prom_cmd_data;
    ! R7 s$ j% {2 K/ h) e$ W! V7 t% t; P
  13.         unsigned int        data_count;
    ! c& {' F$ k3 j9 R3 R" h
  14. } e2prom_s_cmd;  z; z2 Q0 ^% T4 e- t
  15. 7 y4 Y0 }4 W2 T3 @* H; x0 q
  16. #define E2PROM_CMD_READ 1
    5 L% t, L. e2 y/ D/ q4 m) Y' V  \
  17. #define E2PROM_CMD_WRITE 2" L' q% }) C; b9 _3 \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16": Q# g  D6 x, C2 g. _7 K

  19. - e5 ^9 J% M/ _) s' ?3 b: q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 f- Q2 s, ?9 X2 W. i4 p
  21. {
    , G) }' F/ p! {2 E- l& j& ^
  22.         int fd, ret;
    + H# T" p# J3 T. B! N
  23.         e2prom_s_cmd arg;. g1 |. c2 g) H' P& T6 \% ?4 C
  24.         unsigned char buf[0x18];( U1 w: |1 h$ G% i7 S4 f9 ]
  25. ; P6 ^) ?* s8 o* T1 Z% L0 c/ p
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 D& @" a" z% y0 M  m/ F( A% c1 Q
  27.         if (fd  < 0) {; E$ X. g  @3 r0 }) Q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 `6 ]4 [* s: w
  29.                 return -1;* `. G( b' M! H4 D' P/ ~
  30.         }
    ; B$ X9 D: k: E+ V& I0 J% A& M# T. `
  31.         arg.sub_addr_count      = 2;
    6 \7 D: F8 P" G. ^
  32.         arg.data_count          = 0x18;
    % T* Z7 h! ]0 I( d. n( c% y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
      a9 y: J4 b8 z% U5 V7 J/ y
  34.         arg.e2prom_cmd_data     = buf;' c4 Y  d: }! E2 o/ I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! h3 v# ]( W8 H8 E% I( Y  o; D. F
  36.         if (ret != 0) {2 @. t: P- Z/ M* P# R) e' ?: j: d4 T- J6 y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    5 }. @' s; s: \% f4 q. w, B
  38.                 return -1;8 m+ v7 N2 k- R' T/ ]) \$ C( M- ?
  39.         }) `! q# B8 O  K. ~" p  h) j
  40.         memcpy(mac, buf, 6);9 H. [/ l; c- o
  41.         memcpy(stbid, &buf[6], 18);" b1 j# q: v0 c- J& J7 ^9 g
  42.         stbid[18] = '\0';' [9 o. b& l. |& m& ?
  43. # v/ o2 r7 Q7 e/ ~4 i7 Q+ q% z0 @- H
  44.         return 0;
    0 A% w' @# w3 v, H  v4 U
  45. }- H- @$ Z8 Q/ p4 i0 |* |5 L
  46. 3 E* Q" Q& W/ f# Z( A, J7 z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)2 a4 H: Y1 d% T9 o: m) `2 P- Q$ [
  48. {
    ) d; W1 m' ]  d9 I3 g5 e
  49.         int fd, ret;; k( T$ s, _# p! F( Z
  50.         e2prom_s_cmd arg;
    - a1 W  ~* o$ o6 u7 D
  51.         unsigned char buf[0x18];4 G2 g1 c5 ~4 Y3 f3 ~2 {, g* K, H/ I# P7 p

  52. : P6 p( l  ]8 x9 O3 C9 `; o
  53.         memcpy(buf, mac, 6);! n5 H) d# R3 ~+ e/ W7 R9 o
  54.         memcpy(&buf[6], stbid, 18);
      u1 g' R8 ^( K* }+ h4 `" r) N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : S1 m2 N( N, }/ P; x
  56.         if (fd  < 0) {
    , M* v# L, X' P1 M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 h1 b. l! i0 t- p* Q9 [
  58.                 return -1;
    8 K4 c2 R. D" `4 N  N
  59.         }
    $ f# N$ M( r4 m' m# y! J" q
  60.         arg.sub_addr_count      = 2;5 K% q% e* @8 W  E. N" u0 v6 i! W- B
  61.         arg.data_count          = 0x18;2 _0 r& Z+ Y( n2 d& C  H
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ Q/ ~' G; \& G& @$ V0 v
  63.         arg.e2prom_cmd_data     = buf;
    5 O4 I; {& T/ Q) u% p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 p# v0 {& ?* m0 _: t6 n: s5 u
  65.         if (ret != 0) {
    % g: `4 y0 D' @$ a4 q/ Z) S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! u: l* c1 M2 O; S- y
  67.                 return -1;- h- d7 g4 ?5 p2 n, }1 H
  68.         }4 F; S, g6 X% u+ v, }# I+ s+ b
  69. / x: o) @& }3 p+ e( Z, J' W
  70.         return 0;
    , N" @# V% o% k: T6 |, T
  71. }! q+ r1 N! b, o2 C

  72. # [5 T0 p/ x+ B3 n
  73. int main()) H& e- M0 g6 C! @5 ^
  74. {
    : b8 E+ H. [3 K2 J
  75.         char c;
    7 i+ W7 }+ I) M& A4 a& e. j, t
  76.         int i, macs[6];( s- x$ W" o" e) q+ H
  77.         unsigned char mac[6];2 k) V# h3 p5 a, V1 n+ Q
  78.         unsigned char stbid[256];+ ^- u" s4 ]. K4 S8 A8 d9 ]8 H4 A
  79. ' K3 y* e* K+ G4 r1 h& p
  80.         if (readparam(mac, stbid) < 0)% J$ |+ D9 n, a  h" T
  81.                 return 1;2 C3 A; g+ J6 w
  82. 1 g! ~3 E* [" v/ {
  83.         printf("Current parameters: \n");
    & {; a( k* u9 X5 k$ m2 Z; l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : P/ |) z' K% E6 A6 ^/ p
  85.         printf("  STBID: %s\n", stbid);
    2 e& J6 x4 P2 U' W; d/ n3 l
  86.        
    ( {: x# j+ N9 m' i6 `0 L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");- J! A( d! z2 T7 b) c5 {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, L4 k3 C6 f4 b* J( {$ X; ^
  89.                 printf("Input MAC error\n");, J# q5 m3 F( N* i( }. g8 V* A
  90.                 return 1;% n5 Z; l4 q; P1 d
  91.         }
    ( y4 a* v9 @- |3 z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: j) U4 X7 d, D! r2 ]
  93.         printf("\nPlease input new STBID: ");1 x2 w) c, {* V8 o9 Q8 w* F
  94.         scanf("%s", stbid);8 b1 y# R7 @) l' Q
  95.         if (strlen(stbid) != 18) {
    " v3 ^: G" W( ]
  96.                 printf("Invalid stbid\n");
    9 L) H, V! Q8 y% s: l
  97.                 return 1;
    ( i* h# A4 Q9 ^. F
  98.         }
    9 }) v2 I4 W- S, k- o
  99.         printf("\nNew parameters: \n");* J/ d, Y: R& ?' w1 x+ ]# G, X* C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 [0 z0 d2 `: x5 F
  101.         printf("  STBID: %s\n", stbid);1 w$ ~2 F8 \7 y* E* R: o

  102. 6 K' ?/ ?0 V2 F) ?& i! F
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( E# Q/ |- L! a
  104.         for (;;) {
    2 [/ S6 T& x6 X4 R, i; i. u: R
  105.                 c = getchar();2 Z# f2 |; v& J- z& q6 H
  106.                 if (c == 'y' || c == 'Y')- `: ?/ Q4 C6 V  d5 D7 Y( j/ u1 K
  107.                         break;! B; A6 o. o* N+ L1 v
  108.                 if (c == 'n' || c == 'N') {) }; b; W* l/ h$ p& f6 c% @# F
  109.                         printf("\nAborted.\n");* Y% ~1 |% I( L7 p  K
  110.                         return 1;
    % @8 K* ~, T% A* B0 Q% \
  111.                 }
    $ F- u# c+ h0 w7 e- x( j! S
  112.         }- o+ {3 |1 ?- h1 K0 `% E9 G* o
  113.         if (writeparam(mac, stbid) == 0) : Z, V% e- C7 Y2 g- W1 `0 R
  114.                 printf("Parameters changed.\n");3 T' ?, r* \2 ^9 e% e
  115. ' c" {* I7 Y+ l/ m% v
  116.         return 0;
    1 o8 b% T$ p; d8 `
  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
0 E' G& g7 [1 L3 i& C. W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; g2 |, ~9 k2 G! ^& F% ?你用的编译命令行格式是什么?- \. Q) N- k3 D5 ^
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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