查看: 16219|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ D) V) T9 _8 C. [0 Y0 A" k: i, {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  Z3 d: P# B) l  i9 z: Q- m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:! J& G3 R6 s6 }# R. H# ?
usage: himr <address> <value>. sample: himr 0x80040000 0x0
# P- g. U! m! X" A% s7 z# {  R! t% e$ }& ^- t8 ~

& Z/ V- ^% ?; ]! H8 [不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ U4 C1 B9 d" P/ X4 J' q
( t. z( ~  D6 y+ B0 |补充内容 (2012-3-8 09:42):$ z+ ^4 M! q. s* u9 D
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! }) a; q" w. M9 H4 f
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。4 N0 l6 ]1 C. b; p8 T6 ~

; L: Z) k6 d& w6 A) P( ghimr <address> <value>. sample: himr 0x80040000 0x0
9 D2 j) h$ S/ F; p! }
0 R( d  R$ A" f, [( {* k5 T例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。! m2 O$ E8 s$ M' t, L5 C
himr 0x80040000 0x00# g' N& ?' P" d$ T/ u; n. o+ l  m+ c
himr 0x80040001 0x11* P: j1 B( E) s) r' h. u
himr 0x80040002 0x22; |8 ?$ }3 ]4 ^+ n  Q
himr 0x80040003 0x330 t4 `* s1 h" ?6 C1 G
himr 0x80040004 0x44
' [0 P0 m. u9 X7 E0 c4 F6 jhimr 0x80040005 0x559 Z: l% ?& e& \# I  q

+ ?' U" A0 U" m/ ^: MSN也是类似。
* g3 M) x1 r" n) @! c5 Z& b1 f" p9 `1 M- ^
现在主要是,谁告诉我们MAC和SN的地址?
& |2 w. c& u& s% W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 3 `8 P: s6 q2 m9 s' h
一直想找到运程修改MAC和SN的办法,苦于无解啊

; d2 {9 ^$ R8 g$ m* Y. n  c源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 $ s/ P, R/ W- v( }1 F/ k1 }4 e

# C; }+ R: r; w修改的代码早有了。到今天不会编译。# D' T+ w5 |- ~
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # F; _; ?0 h7 \# ]4 }% |0 I0 q
  2. #include <malloc.h>4 |9 p+ v0 c% @* K5 F7 K
  3. #include <sys/types.h>
    ) I3 B  w  Y6 V( y; V% y
  4. #include <sys/stat.h>2 T. H9 J7 u/ \0 S+ |: ^3 |) d
  5. #include <sys/ioctl.h>
    9 a$ C5 i2 r( ?) m/ l1 P
  6. #include <stdio.h>
    5 z1 A# G1 U8 a& @$ \( r
  7. #include <string.h># ^. B7 I- |5 ~6 V% W; B1 K- ]

  8. . A0 b3 ^: l$ }
  9. typedef struct {
    6 ]7 E7 h! I" B2 O
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 K% q, i* c- R% f1 q  H6 {
  11.         unsigned int        sub_addr_count;
    6 [  i) a2 A  {
  12.         unsigned char*        e2prom_cmd_data;
    3 O- H. e' Q2 U# {/ M! H
  13.         unsigned int        data_count;
    " _- ^3 f; _* c4 G
  14. } e2prom_s_cmd;0 }. K0 u# m/ h( ?

  15. 0 B4 m, G# g. n4 ]- V3 u2 j
  16. #define E2PROM_CMD_READ 1" ^+ A  F) N, P3 M3 |& e$ G6 _
  17. #define E2PROM_CMD_WRITE 2/ h, K- a' h2 [( L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". Z% F+ O4 e+ P# @, |! Q, i
  19. 5 ]+ E0 L! v% {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" X, b1 i" [0 G% u; ^. x
  21. {9 C- _: ^6 C* n$ L4 O
  22.         int fd, ret;7 d* W0 o, Y& m' s
  23.         e2prom_s_cmd arg;
      ~4 S" D+ Z) G) o' w  o8 w% `
  24.         unsigned char buf[0x18];
    7 b6 F, z1 ~& L6 O  m
  25. 1 `: B$ Z5 D# K+ }, m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 [0 C& p3 ^" ~0 R- h4 e( n6 j3 T
  27.         if (fd  < 0) {, R8 s/ {, A# x: `, K8 s- ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . @! j& S9 i( i  Q9 n, _- r2 @' D
  29.                 return -1;  G" Y/ `: c- f2 _" b; ^- v8 F" A
  30.         }( `4 @  p4 E- e; H& ^- O: S6 `- k
  31.         arg.sub_addr_count      = 2;- }# z6 }/ I* t* a, O
  32.         arg.data_count          = 0x18;2 x+ ]$ ]9 Z0 i
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , Z" I; a7 W2 t; S0 H
  34.         arg.e2prom_cmd_data     = buf;
    ) e/ o6 o% v7 a+ n
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 C1 Q. L9 B2 h% Z4 g
  36.         if (ret != 0) {$ j# \- w! c' W1 |- X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! `( j) w/ ^9 z+ ]# M& v7 [
  38.                 return -1;
    : R* K* c( J( o% M. E; I, D9 \4 c
  39.         }! _- l3 M: k  @& g7 G. F; b$ e1 l
  40.         memcpy(mac, buf, 6);
    6 X$ p6 `% [$ L+ B
  41.         memcpy(stbid, &buf[6], 18);# B- |/ {& H/ G0 c. F$ L
  42.         stbid[18] = '\0';* c4 ~% P5 ?3 E' Z  v- k4 d
  43.   R& K- I- V, P# `7 p' Z
  44.         return 0;
    ( u# @9 T! P& ]( u' p+ d- z
  45. }2 T6 e, Y" A" }) e4 \
  46. + e8 m1 M, s% H8 B  C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # k" _+ S' H( J
  48. {% v! v7 c1 r; r- K
  49.         int fd, ret;
    / `9 g* C$ \$ O- |, x, r7 i
  50.         e2prom_s_cmd arg;
    3 K* M' L; o! }3 [# o2 t& R/ a
  51.         unsigned char buf[0x18];
    8 q- y2 Y% \# h2 `

  52. ( Q, M# Y8 ?7 J7 A- Q
  53.         memcpy(buf, mac, 6);
    , G, x% r2 r% @
  54.         memcpy(&buf[6], stbid, 18);
    1 s- a+ X! K0 I5 x* z& _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( T/ O/ y  R2 E# G
  56.         if (fd  < 0) {
    " v5 |# a3 x' [9 d) M0 q1 y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 p4 M$ x6 d2 N. s" F. I; V
  58.                 return -1;9 r) ?  t9 D3 {- S
  59.         }
    6 I7 d, Q' R, n* U2 T$ _
  60.         arg.sub_addr_count      = 2;6 G" R7 I' I0 Y: ~( Q+ a; ~
  61.         arg.data_count          = 0x18;
    $ k& o- s% D9 R
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " R  ~1 H# x( ^4 U1 C8 F
  63.         arg.e2prom_cmd_data     = buf;$ h2 L) k- D) N4 A' P) Y9 O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 j, U8 y1 j/ D& }6 k- ^
  65.         if (ret != 0) {( q- Y; p  `( W4 o' a% Q( c
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! X8 [, l; T1 o1 ^/ [. _
  67.                 return -1;
    4 e* n& s7 y% B+ z
  68.         }
    & Z; P$ D8 D0 K; s$ K, n6 h
  69. " ^3 G9 n) ]6 E: J6 X5 u' j
  70.         return 0;" P5 Z1 V8 `& ?8 m$ y% ^
  71. }* |- J9 f5 N! s: |. X- b; {
  72. 1 x3 F" i) I) J" ]
  73. int main()! E3 F5 {; v' t* U6 c
  74. {( {4 h+ k. y  m7 U6 e
  75.         char c;
    ) C+ U2 K$ v' |  w: t
  76.         int i, macs[6];1 R$ j" |2 W  \1 C( Q
  77.         unsigned char mac[6];, Y. ~5 ~8 u* K
  78.         unsigned char stbid[256];3 w7 W; f* l, H8 O, {
  79. 0 v: c. p, p: k! b
  80.         if (readparam(mac, stbid) < 0)( e! V# M8 z( ]% a" O1 y
  81.                 return 1;
    4 B1 O! Q! O+ }1 d

  82. ' m3 x- M. S9 ~4 {  a
  83.         printf("Current parameters: \n");: n; J8 t1 K, m2 c% [6 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % c$ _' N  N  }0 o5 F& Z7 I6 H2 _
  85.         printf("  STBID: %s\n", stbid);5 j/ S2 U3 Y3 M
  86.        
    : D, |  ]7 d( {( p7 D& D' ?( }# e4 `
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - `, t( Q. v5 i& G6 P* g& Z- C) V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ e2 u4 M$ l) D0 q! a0 V; h
  89.                 printf("Input MAC error\n");' @+ u  y+ M/ v4 h
  90.                 return 1;; k- Z8 E7 j1 g  C7 u' j. f
  91.         }$ K4 p4 z0 `# a& y  O( K! v
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# \% k& X  ]# E2 j8 ]8 r+ U2 V+ k; o
  93.         printf("\nPlease input new STBID: ");
    ( S' |1 g+ m: @2 C2 v5 C9 P" E3 g
  94.         scanf("%s", stbid);" i7 I$ t9 A1 z* J' F2 c! t- F
  95.         if (strlen(stbid) != 18) {
    * E. E; I4 F/ z+ B1 a  f
  96.                 printf("Invalid stbid\n");
    3 _; O& d/ v- i- r8 T( G
  97.                 return 1;
    * h" C" D! \, @. G
  98.         }
    " v8 R4 A: N/ u( y2 Z2 |
  99.         printf("\nNew parameters: \n");
    2 ^/ E9 x/ A+ ~, M
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " o9 H% U! w; R8 p1 ?7 S" u  s0 k& A
  101.         printf("  STBID: %s\n", stbid);* m9 y  t0 c$ {% o& H+ i3 b% c; |. t9 m

  102.   {9 x( s' h1 D
  103.         printf("\nDo you want to change paramemters? (y/N) ");: _( b1 T5 U9 m4 g* E5 K, o' h
  104.         for (;;) {
    ; f- N2 I$ E: Y
  105.                 c = getchar();
    . }, K/ L+ O9 X4 {' A& M
  106.                 if (c == 'y' || c == 'Y')$ M9 w, W! b/ B5 R2 L1 w
  107.                         break;
    . j, y" V4 w$ q0 a8 U3 P
  108.                 if (c == 'n' || c == 'N') {
    / w  j: S! q9 U2 a; N
  109.                         printf("\nAborted.\n");
    ! ?* U  O5 i, C( M& j! }3 {
  110.                         return 1;
    & a- z; i$ B. T) X. n/ i
  111.                 }' _0 l% D( ~; n* e, _' b) k
  112.         }
    ; P: _/ D3 R: R0 n% {& \
  113.         if (writeparam(mac, stbid) == 0)
    ) d4 c4 u6 i) I! l% s+ }) z
  114.                 printf("Parameters changed.\n");
    / ~" R" f% M3 b5 G6 Z: O  X
  115. 4 Z) U; C% k' O9 F8 n1 j
  116.         return 0;
    " ?! p% i6 x1 u) i/ Q
  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 " t, l- ~6 p0 M: ~" r: f
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! D0 ?- B# j3 z6 E4 K9 i
你用的编译命令行格式是什么?3 x# m* G1 x8 l0 P8 M% _! m
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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