查看: 16679|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' h/ B) \7 [( H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 [( ~* S, Q: `! Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 x# O3 e' j% g% x2 j) B3 ~usage: himr <address> <value>. sample: himr 0x80040000 0x0
! L; m  p4 ^! k/ w/ \: N6 G
1 p4 W1 T7 l1 V4 N: d" @1 r" A. L+ \/ ^+ M2 O1 @; K% }" ^
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# u" `7 u7 s/ C6 u. i! ^" E
' Q5 }+ B0 Z% n; V4 I
补充内容 (2012-3-8 09:42):, d+ u0 z4 A) T! ?% c
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! r* o" O2 ~8 L; l9 o1 p( J+ k8 y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
! }( V1 @* G& R; u
0 p7 C* G* ^. b" K: Fhimr <address> <value>. sample: himr 0x80040000 0x0& [( e  R1 i5 ^8 u6 ~

, R, _; c3 E+ N- \$ A例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 C- C: o$ J5 C0 t% ]7 S- o2 V
himr 0x80040000 0x00
% l) j% s. R8 c* M4 U1 }himr 0x80040001 0x11
* L0 T7 V0 g) `* i- q( shimr 0x80040002 0x22! _# r4 x  g. J, Q
himr 0x80040003 0x333 Q9 N* C2 {, z! E4 }) Q2 |- L# g
himr 0x80040004 0x44& |5 U  Y# y; B7 N3 b8 D
himr 0x80040005 0x55
, E! B6 M+ ]4 K2 J* m6 s8 p1 D2 Y- W( m; L9 h4 I# A
SN也是类似。2 i8 ]. F/ y1 ]9 V# ]' v6 q

, O+ M8 t/ o1 ?7 {2 O8 L* z9 v现在主要是,谁告诉我们MAC和SN的地址?' D  f4 q+ N8 r
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . c: M, J0 w* r: z7 D2 N
一直想找到运程修改MAC和SN的办法,苦于无解啊
. P3 J# Q9 e  j$ d5 a3 f
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! O/ h8 u. {# s1 \" V

" c7 n0 K, ^6 C/ N: x3 z3 C修改的代码早有了。到今天不会编译。3 I6 T* r: J0 Y- h  G8 m: T
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    6 ]9 `1 j1 ?8 l* D$ g# i- }
  2. #include <malloc.h>
    8 S) h/ B. O3 _% o; x8 V
  3. #include <sys/types.h>) @6 \( M) X7 J1 s/ m, E7 [
  4. #include <sys/stat.h>
    ) I  Q6 {- K6 D# _1 q! z
  5. #include <sys/ioctl.h>/ F4 ?! \: k7 y0 A5 @
  6. #include <stdio.h>+ M# v0 P$ L1 z8 ~' q
  7. #include <string.h>- B0 _' X' F! S5 h

  8. * U0 r7 {6 T+ \8 b/ M+ g( Z9 ]
  9. typedef struct {) d3 B9 D5 e# s8 c  V# k
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! |1 ~$ ~) R$ X# w# t) l
  11.         unsigned int        sub_addr_count;' s! U# Q0 e. E7 u- G
  12.         unsigned char*        e2prom_cmd_data;- i9 v9 T$ ?3 ~
  13.         unsigned int        data_count;
    5 n1 d7 S# V, M$ t' c
  14. } e2prom_s_cmd;
    - t# j. Y+ J* I: K# ~

  15. ' X8 A6 r& a/ x
  16. #define E2PROM_CMD_READ 12 K0 f/ C. ]/ O* q8 T9 \
  17. #define E2PROM_CMD_WRITE 2
    9 N5 o1 L. d" ~  s/ G
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; G2 `% c% l' P0 V0 G! o

  19. ) |7 d; r, p1 w* O( w) F+ [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    # D! z' A3 O* b- B7 d6 ^0 o0 O
  21. {9 r6 r# w( L- W: F( L$ B  p
  22.         int fd, ret;% p$ e, l9 @. f8 e
  23.         e2prom_s_cmd arg;
    8 M) Z/ x, R) {: u
  24.         unsigned char buf[0x18];
    8 y7 l- `9 h3 x/ a  m' m' e+ m
  25. 1 z. J0 V9 J  \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. d5 C) W3 W! U
  27.         if (fd  < 0) {
    9 `9 J. A% x. X+ p! k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 ?1 k: n* `$ @
  29.                 return -1;2 y7 {- A3 {9 W) M9 _4 h7 l; C
  30.         }
    4 e( f( {1 \7 u8 `5 {; b
  31.         arg.sub_addr_count      = 2;
    / x' S/ R+ k1 i. }
  32.         arg.data_count          = 0x18;( i- f% r  m" Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 I7 F& p7 ?4 _+ f* P
  34.         arg.e2prom_cmd_data     = buf;
    " g/ `/ g+ `1 p& f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / e; i- J. j2 V6 }  N
  36.         if (ret != 0) {
    " J# g/ H9 K9 L. y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) o4 y6 ?, Z" o5 H$ q
  38.                 return -1;
    * t' Q7 S' {/ @! w/ w8 O" @5 u* ]
  39.         }
    : A2 v) v( X& J( N/ o1 @" C
  40.         memcpy(mac, buf, 6);% Y& Q# C& Y4 v' O" H
  41.         memcpy(stbid, &buf[6], 18);/ W) f. Y" C& v" V& j
  42.         stbid[18] = '\0';% b% h2 ^2 @' }
  43. , d: |' k  z9 @/ L3 i
  44.         return 0;
    6 J2 y; @$ r3 s8 i* r7 |* J  K
  45. }
    ' O1 }0 v0 @/ l* F8 _* l& _  o7 l

  46. + H: f* q4 ?) F5 J; j# A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / k! S2 t; W6 @: s4 s3 ~
  48. {6 n) a" V$ z3 Q. M& h1 g5 S+ [
  49.         int fd, ret;
    ' I8 z9 z: _5 ]+ ?, N& Y
  50.         e2prom_s_cmd arg;
    ; j6 y% y' }2 h% F+ k' t
  51.         unsigned char buf[0x18];2 K! ^5 i: }% Y  B* h. e
  52. " S9 f2 x$ }6 o) x5 k4 t
  53.         memcpy(buf, mac, 6);
    6 e' P% R$ ?/ {* R
  54.         memcpy(&buf[6], stbid, 18);
    8 j1 k( L0 q+ }1 @7 p4 h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 `/ L% b$ g* ~" y
  56.         if (fd  < 0) {, p% g) y8 H. M& w, e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 e( X- x! E, v& h4 ~" Q( O$ {% d
  58.                 return -1;
    3 K$ s* u( \& K$ t9 q8 o7 e
  59.         }
    3 O! r) @: g" j
  60.         arg.sub_addr_count      = 2;/ g' E4 D* f  |
  61.         arg.data_count          = 0x18;
    % c) H, K5 d" S: I- a* S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 ^+ M" Y/ ]  V5 {* n7 t4 n
  63.         arg.e2prom_cmd_data     = buf;
    7 D) ~+ _. ]0 R6 g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ R  z' g" k0 e& o9 X
  65.         if (ret != 0) {
    7 u% I) r. P  P' E; ]! d
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( @  O+ u/ |$ A# ?4 W
  67.                 return -1;7 \+ B% K( q& y# F4 S% p- }
  68.         }0 R) s: S, y0 A! F* C9 e& ^. h
  69. . C* {2 W3 t/ A8 M4 z1 ?
  70.         return 0;0 ~. c6 K8 C" d- Z9 e, W
  71. }
    9 r  t  o- L1 q8 L( |
  72. + D' {& ~( C$ G- o' I. f
  73. int main()
    2 ^  y& @, W6 x  g: z% O! w
  74. {2 \1 K, e, e5 _1 n& \
  75.         char c;
    8 q/ M2 h& {7 x8 u4 @
  76.         int i, macs[6];0 C: B6 C5 v+ @3 z  A
  77.         unsigned char mac[6];
    5 K9 c6 t3 r  f3 q( z( [5 z+ X. u
  78.         unsigned char stbid[256];0 j0 k, k0 g3 X  a. b, k

  79. 6 }! }% s( m9 v( N; C
  80.         if (readparam(mac, stbid) < 0)
    $ V! U, d$ D6 W6 W9 u& a( X
  81.                 return 1;
    5 R) v1 k- `1 m9 a7 `" j

  82. , w+ P6 U7 L6 m& ~
  83.         printf("Current parameters: \n");
    * i0 T# {3 ?5 a9 E8 c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 S3 k" R5 e/ @: v- U
  85.         printf("  STBID: %s\n", stbid);
    , Q+ K5 Q- a5 F5 f! t. a- j
  86.        
    ; S6 E, u! v, Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 x( P2 e9 z) b9 |( h/ T' y4 I0 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ q* d* R/ E. d/ a1 T+ z( c5 l/ v
  89.                 printf("Input MAC error\n");
    + D- Q9 G4 q5 e
  90.                 return 1;
    / I' `( d" [" t; Z- J# p
  91.         }1 q. w$ g. @# }. ^$ j6 M7 B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% a7 c* S. d- ?- g5 L% L, A" Q
  93.         printf("\nPlease input new STBID: ");7 q: r2 Y% h( S# L
  94.         scanf("%s", stbid);; f2 o" T% D" Q
  95.         if (strlen(stbid) != 18) {6 Z" h+ G' Q5 L9 A  P) N0 V5 ^  w* w
  96.                 printf("Invalid stbid\n");
    ' x: y5 l" T4 v; w! H
  97.                 return 1;7 S1 E$ L2 W2 F$ C* w) W
  98.         }
    & J- ?8 L8 z9 m( `( v; a
  99.         printf("\nNew parameters: \n");& b" e8 |9 X1 V' r# M& t, V
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 V, U- I2 _+ K
  101.         printf("  STBID: %s\n", stbid);
    4 ?7 N; B7 @& M( @, r# x! c
  102. - {, {8 C7 n8 p6 A" N+ G& ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ w5 F, q5 c$ i; f8 |# I
  104.         for (;;) {
    ' Q% x6 u( N/ o
  105.                 c = getchar();% V3 ^8 F; E, I6 F) K0 f; E
  106.                 if (c == 'y' || c == 'Y')
    7 F' V. l9 w0 l) M" r- f0 G
  107.                         break;6 d* z8 b, B0 M8 x# J5 [% ?5 k0 T
  108.                 if (c == 'n' || c == 'N') {' A8 A+ u0 P5 a
  109.                         printf("\nAborted.\n");
    ) @3 x& O4 x% _& f& p, r7 S: n
  110.                         return 1;
    " Y; u* y1 F# Z  @& {
  111.                 }
    + R" V; Q0 M6 r4 g+ _* h5 O
  112.         }
    / k5 J' Z0 `7 f
  113.         if (writeparam(mac, stbid) == 0) ( h6 Q, P8 m( |+ u; H# e
  114.                 printf("Parameters changed.\n");
    : r+ `. g$ U$ K8 ]. J0 U
  115. 0 x0 Z8 M3 w" n( }3 n! M
  116.         return 0;7 ]  I8 G, z: Z2 _) t& R6 U  I6 W
  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
1 a5 i: D& p; u# d% `在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 j/ y0 \0 F6 `" M: ]你用的编译命令行格式是什么?
# M; `' x, z% _" w  d$ x
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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