查看: 16669|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  A  O3 j8 X+ L3 W) ^* n
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 s: r- s. x- Y+ X8 T7 K0 D9 Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- [$ q7 W) }! [1 y! ]4 fusage: himr <address> <value>. sample: himr 0x80040000 0x0
3 M0 I/ W1 G) F' z: _5 [$ H  {" y5 l9 j) g6 d% s% b1 P9 D& N

9 m, {3 y$ v$ ~- P- g3 {& m  z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 {' Y  U) F. z  b

7 S4 C( }: D3 f3 d% f/ `- l补充内容 (2012-3-8 09:42):/ [& A/ Q# j" J
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 ~( w' h# q- m: I& P/ N1 y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
2 v" G/ O7 }9 e% ?8 v% |- O0 I8 J2 U' S' z0 _
himr <address> <value>. sample: himr 0x80040000 0x0
7 I* `# @. p# O/ m
' l( R( k& k$ z3 w" D0 L( Q3 g9 c例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ D6 V8 o1 L1 V, N  M% H0 p3 k  `
himr 0x80040000 0x00. x# r* J3 w/ u- t* E6 g0 f1 r
himr 0x80040001 0x11
7 Y$ _% ?! W; V/ R6 _" Chimr 0x80040002 0x22) x8 U6 c. B8 l3 b8 a% k9 p
himr 0x80040003 0x33
! \; u: D0 b- D/ Ohimr 0x80040004 0x446 L3 Z5 i: ?" e) N# J
himr 0x80040005 0x55; c# c; m' g9 f
# _! Z0 X& u6 }( ?' c
SN也是类似。% z3 `2 j$ O. U- |

$ e2 x* |5 f5 a3 x3 z/ b" J) W现在主要是,谁告诉我们MAC和SN的地址?
  B2 T" G9 `9 Y2 z" t
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 E9 q' H: P: F
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 K% _7 M7 T6 I2 p
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 ]" p& e8 D$ e2 \8 W) T. ?( N2 H) W* u
8 N1 X6 e0 {" i. P
修改的代码早有了。到今天不会编译。
9 ]1 ^: k  Q, L3 S; G0 [需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % ?1 \6 n! ~' W- P3 S( Y
  2. #include <malloc.h>
    8 m8 Z9 O6 D' H$ N
  3. #include <sys/types.h>! R; r5 N" b/ w$ y) O1 t6 v. t
  4. #include <sys/stat.h>9 `( c6 J  j0 @) [; N& t3 h( q9 G1 y
  5. #include <sys/ioctl.h>; a: b, Q2 C! c6 w, y. y1 F2 a
  6. #include <stdio.h>% j* `" S. U+ o3 x
  7. #include <string.h>
    7 L" u( p" [( X/ L" p

  8. % F2 J, f# U- `: ~6 C! Q
  9. typedef struct {! e( ^" U9 E3 d" ]3 s1 }( R( ^/ \
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 _" Y  ~5 N% z! E* Q
  11.         unsigned int        sub_addr_count;
    8 a( ?4 A% {+ `7 j
  12.         unsigned char*        e2prom_cmd_data;2 \  x8 {$ `4 n  N3 P
  13.         unsigned int        data_count;
    8 v5 P3 N) Q/ j" m9 V9 p
  14. } e2prom_s_cmd;
    ) d( H, ^% H6 \
  15. # Q0 _3 |, b. T2 I; j
  16. #define E2PROM_CMD_READ 1
      W8 V: O+ Y. L! s3 V2 \, ?
  17. #define E2PROM_CMD_WRITE 2
    5 s( l' Q8 N4 Y' A# ~3 L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # g$ I+ B2 P; a, z  m

  19. 6 T& ^& F0 f/ N1 x" X/ U) z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)/ l' v& b5 \/ c& S/ A& A
  21. {
    + f" H8 v4 d0 X' R; Y) Q; B4 i- }
  22.         int fd, ret;" D0 {1 A+ G; t$ u2 o+ m
  23.         e2prom_s_cmd arg;& g! `/ t& ~* A* @7 D9 C; s' |
  24.         unsigned char buf[0x18];
    . C, w$ L8 x; z8 j: T! D
  25. , M5 L, K: \+ H( k1 Y4 Z+ b* @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" _( }6 ~* `$ c& [- y0 w* \
  27.         if (fd  < 0) {: ~" p  A6 k1 B8 N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 P9 E* x0 {" P" d
  29.                 return -1;
    # I" Q. u: C- _/ x8 k4 D
  30.         }
    ) n) n# y0 @- y# A6 w
  31.         arg.sub_addr_count      = 2;
    5 x/ v+ q7 C6 c$ a; C
  32.         arg.data_count          = 0x18;& P. C# w  W& W, G: @% ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 P  g: D1 S: [- |7 T
  34.         arg.e2prom_cmd_data     = buf;
    . b8 z5 S  |6 G) I! }/ [: @
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * Y! u0 s2 C; E9 {! K0 e3 q
  36.         if (ret != 0) {& ?3 Q+ _; ~  Z! B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " M5 A4 h- R% P! y
  38.                 return -1;
    3 ?* L# Q  T7 |7 W4 k
  39.         }
    / y( ?9 ^4 Q: T/ p
  40.         memcpy(mac, buf, 6);. D% o1 h( x% y, ^
  41.         memcpy(stbid, &buf[6], 18);
    2 N; E9 s3 a3 U# D( w. L" h, Y
  42.         stbid[18] = '\0';1 H. U- l6 B; ~. [4 _$ ^  {9 K5 O  i
  43. , F2 a: Y; T5 F; K/ ?
  44.         return 0;
    % d- R! ~2 t+ c7 p: e, U
  45. }9 T  k! m- L) [% A

  46. - }- r( ^& ]+ \4 n$ s1 j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    8 s% k' {9 T: b: H3 q0 a
  48. {
    ! b8 M5 Y6 h9 ~' F% @4 M
  49.         int fd, ret;
    8 y% h- a3 I7 I* t
  50.         e2prom_s_cmd arg;
    ' J+ y" R( U$ b! ?1 }  \) y8 [
  51.         unsigned char buf[0x18];
    ! Y' k7 R" I, b% z5 L* D, z0 x3 m

  52. % V- E6 z7 C  x+ @& z
  53.         memcpy(buf, mac, 6);
    . w- P: N8 X+ Y: R$ a; p* q& l6 F, J
  54.         memcpy(&buf[6], stbid, 18);, b7 N) l- n& O2 M7 `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! s! i2 X. U5 j
  56.         if (fd  < 0) {
    , n7 [& n( e8 T  o2 W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);" l' z  T- l( q/ ^3 ]0 N& C
  58.                 return -1;7 g( E8 E+ T' h
  59.         }; ]2 f/ y* p3 x/ E6 c
  60.         arg.sub_addr_count      = 2;! G% J0 I) h/ R
  61.         arg.data_count          = 0x18;
    . \+ b( a- R) ~/ {
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / Z$ Y3 m. g2 x3 i; c
  63.         arg.e2prom_cmd_data     = buf;( S! S; W& q$ k' ]( K: u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);6 s9 A) L; `( z3 E* x* H
  65.         if (ret != 0) {: U, k& y, w: W. t# h1 M2 F* r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * |; p# p$ u! g& C
  67.                 return -1;! W' P. G" [4 y
  68.         }1 q: m) ?0 J" q$ D- Z) s

  69. 6 P2 T' Q$ P" ~' z# J* V- t% z4 E; m' F/ c
  70.         return 0;# s, w7 q2 O$ f7 S/ _0 x9 u
  71. }6 H. w8 u: Y$ P4 I) n
  72. , ?, f- s9 n+ C7 r3 ~
  73. int main()
    ' S, n# c' r- b
  74. {# b" H! v; Q4 w
  75.         char c;- h, @1 w% _$ M; Y( x) W1 n) P
  76.         int i, macs[6];  t( |0 d- X. u& ?/ k8 {6 c
  77.         unsigned char mac[6];( O% d  h! N2 g3 J7 w) f$ Z! v
  78.         unsigned char stbid[256];
    / k, I4 N4 w7 _, d% j) I% q  n
  79. / L+ [' [8 D+ x$ T6 y0 h
  80.         if (readparam(mac, stbid) < 0)
    2 e% t/ y* X, d  B3 j0 v
  81.                 return 1;
    " u- k- z6 Y7 E8 ]# l

  82. / ]4 A5 j* Q+ U# ?3 g% {
  83.         printf("Current parameters: \n");& U" W, o" g+ T, x  ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) i/ P7 J& q" n. }* g( H0 v( l
  85.         printf("  STBID: %s\n", stbid);# ]. e+ e4 B* o3 Y( F6 t3 G, L3 ?
  86.         * C$ [; \% _' b6 u, Q! \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 \: s; m9 V+ N! u8 M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 [9 H/ J7 g4 M
  89.                 printf("Input MAC error\n");* |( [) s* t0 _: b
  90.                 return 1;" ]& P( j6 g8 w
  91.         }# J9 H+ X1 X9 B* ]$ B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ v  ?$ H! t# L
  93.         printf("\nPlease input new STBID: ");
    7 {* w5 T5 L( R1 ~$ n4 v- Z! e" h- g
  94.         scanf("%s", stbid);* C5 q$ J* H$ ^6 P1 {0 M! T
  95.         if (strlen(stbid) != 18) {
    . B: u- \. B/ d. i) B6 G+ R& R
  96.                 printf("Invalid stbid\n");. }! y+ E) A3 ]3 G! y. V0 h7 ]
  97.                 return 1;
    : t1 m  }. y5 ^5 |2 f, o
  98.         }9 a" L  _! D$ m: M& g
  99.         printf("\nNew parameters: \n");3 k# c) _( O! A; U2 Y7 I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 _  ]: y7 T+ G
  101.         printf("  STBID: %s\n", stbid);
    6 l5 U; Z! \( u# S7 G+ ?  z
  102. * U+ d0 i, i1 F/ X* T' B% u2 t
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . K# {9 R0 g$ w) s9 X+ ]
  104.         for (;;) {! R  V$ \7 d- J; x6 l4 r$ w
  105.                 c = getchar();
    " ?+ \0 J7 c# K/ h4 q. F. F
  106.                 if (c == 'y' || c == 'Y')
    ! s) W' ~: W0 V9 Y$ o7 O
  107.                         break;& h2 Q" ~$ x: {6 @3 I
  108.                 if (c == 'n' || c == 'N') {
    ; e5 d. h1 q# z: P& S
  109.                         printf("\nAborted.\n");
    9 R( m5 G# A) o$ w
  110.                         return 1;
    7 B4 ?5 _% W9 S: m
  111.                 }
    7 e6 k! g: F& J1 T1 d( f- H
  112.         }
    1 y  S1 u" w7 |) b) {
  113.         if (writeparam(mac, stbid) == 0) % |" J& [8 n8 r8 Q1 s1 y, T  t
  114.                 printf("Parameters changed.\n");7 D/ f$ Y( \; Z. |
  115. 6 V! G/ y: _# L
  116.         return 0;! {6 J+ ?& ?- [! u5 S
  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 8 X& W! M5 j. b# D8 ^  g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 y4 b6 T4 i4 b& z
你用的编译命令行格式是什么?1 k0 v& s9 I- T/ ^
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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