查看: 16567|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr& W7 M* Z  v- K, \, [6 i( Y. ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 u7 w7 M" V& w8 P4 N# m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" M. B4 N8 T0 g) j9 k" e
usage: himr <address> <value>. sample: himr 0x80040000 0x0# L  Z' T' y2 F* ?
2 B* A# ^. t$ A* d+ G, w2 g

2 F4 J2 I5 u' U* Y( ~6 ~, `不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
5 p! i3 G% \$ l% E! e$ p0 D3 r/ c* e6 A' W9 u0 W
补充内容 (2012-3-8 09:42):1 k6 ?9 A/ \" h1 Y3 R) ]. A- _+ h1 f
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( z1 C, v5 C- W, p* T这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。0 [9 K! e% l) J, l2 b: |1 k9 Z+ q0 t
7 h9 r% a6 ~4 G$ Y/ J# p! l
himr <address> <value>. sample: himr 0x80040000 0x00 u7 b$ {; a0 |. x
- y( b3 b# ~9 V4 d
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- V! F- j6 r3 z% R2 j/ q7 G+ Z
himr 0x80040000 0x00. ^5 [1 ~7 I6 q: I: }
himr 0x80040001 0x11
9 R8 w' e& r2 w, Zhimr 0x80040002 0x228 p$ y$ X! W7 _1 s
himr 0x80040003 0x33% @7 r0 _$ x' U; S/ T9 |' }
himr 0x80040004 0x446 W! L! O. K% m" ~$ M8 M0 ~! H3 i* J
himr 0x80040005 0x55
1 f! \( j1 T% h# B
: Y' B( q' |% T  Q2 z8 eSN也是类似。
% c" K& P5 e0 C; W& }  |6 A- |& L. |7 C; ^/ g' [! x' P; x, M
现在主要是,谁告诉我们MAC和SN的地址?0 L5 {8 O+ N( @! U+ _/ T
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
: u6 Z* w; o" r一直想找到运程修改MAC和SN的办法,苦于无解啊
2 o! ]2 Z( _; e( y: f
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: y" }: X1 `; F
3 V6 L# E1 E& q" @! Q3 y% f! P+ O修改的代码早有了。到今天不会编译。) W2 j) P4 S( f# E4 r5 p
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 n. d; S2 G$ t2 O5 X) {
  2. #include <malloc.h>6 T! F+ Q6 l3 g. l$ ~* \& S, T
  3. #include <sys/types.h>
    8 O* p7 G9 y  G/ T# P3 d, o5 t& v1 z
  4. #include <sys/stat.h>& Q4 P/ m  w8 ?7 M9 [3 X
  5. #include <sys/ioctl.h>
    % E2 y3 Y0 X% O$ k
  6. #include <stdio.h>; _# H3 ?1 n5 ~% v
  7. #include <string.h>
    , a5 O) s) @' H% l' [, P& o" D: K2 U* [
  8. 7 c$ }5 j* q# u+ K; e) E5 k* |7 [
  9. typedef struct {
    4 x" {: }- K* z
  10.         unsigned int        e2prom_cmd_sub_addr;
    * f5 A( L& }1 F+ v; {: |8 F
  11.         unsigned int        sub_addr_count;' P% F4 ~9 D" {; k7 C
  12.         unsigned char*        e2prom_cmd_data;
    5 K+ H4 n8 A- s+ B! Q
  13.         unsigned int        data_count;- S! z6 X: E9 w% \7 h. g2 w% l
  14. } e2prom_s_cmd;5 x+ S. o( X, \

  15. & O* e. R8 g% g3 B
  16. #define E2PROM_CMD_READ 1  r2 k5 N2 [( ?+ U) X" c7 k$ D' M
  17. #define E2PROM_CMD_WRITE 2( P: \9 K' n/ ]: ]
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 n3 \, u; l  G& j( W

  19. : l5 J/ e/ W" e6 W# F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- |7 S9 S# U/ v2 k/ l9 N+ N
  21. {
    " @3 o) l1 [4 M6 ?# z1 M' H
  22.         int fd, ret;
    4 C0 C! G# k* O- ^! S
  23.         e2prom_s_cmd arg;
    - s! Y% M5 W$ _& Y  [) ]
  24.         unsigned char buf[0x18];) e7 d/ |! [4 v2 \$ m

  25. + y# ~+ K) j" g3 u* L$ R! R; K* O+ u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + i4 M- x0 C/ s/ R9 y- ^! o( w
  27.         if (fd  < 0) {5 m7 s9 t4 G/ R% Q& \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; }# K- ?! @1 X; c6 V# |: p
  29.                 return -1;
    6 R9 q7 r+ R1 j! U( L
  30.         }
    ( Z$ Y- R# b- W9 {
  31.         arg.sub_addr_count      = 2;& S; y" u( n/ ^+ P9 P
  32.         arg.data_count          = 0x18;
    8 G- r: P: T5 ~  I
  33.         arg.e2prom_cmd_sub_addr = 0x290;  e9 r2 P  p0 C
  34.         arg.e2prom_cmd_data     = buf;
    0 D" E, D! E; r! C. v
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # Z1 e+ w: r4 Q/ U# Z! i* X; I  [
  36.         if (ret != 0) {) \' k6 ^# n. W
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. W7 Y5 C& k. E2 u
  38.                 return -1;
    ' ~. S' F+ Q1 v$ M8 l- J5 W" [
  39.         }
    2 j! L# l% j) X
  40.         memcpy(mac, buf, 6);
    9 y$ i1 {3 g& \( t, P
  41.         memcpy(stbid, &buf[6], 18);* U8 r2 P& H  G  J, S
  42.         stbid[18] = '\0';. n$ {/ G  J! u! f1 k
  43. 7 c/ J! U8 F, ?# O0 O. E6 z
  44.         return 0;
    ! E+ A+ }: j3 W) a1 S& |
  45. }7 g8 }; J9 }: P+ c' o$ k
  46. 3 N- v7 i* u) @! Q% }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 Y+ H0 L8 x7 X* H  V
  48. {+ R( Z% ?9 p' `3 X2 p
  49.         int fd, ret;
    9 C* _4 z) ~% g9 m9 ?
  50.         e2prom_s_cmd arg;
    : @0 Q5 {+ _( n4 t6 b2 ]# A, N6 T
  51.         unsigned char buf[0x18];3 _( M. i3 t1 L4 X
  52. ; x8 |+ c2 A% v( W! k
  53.         memcpy(buf, mac, 6);# o3 e0 q; @& h* Q
  54.         memcpy(&buf[6], stbid, 18);
    ! D' k6 k- g* Z! h5 R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 G' }- t  p+ ?/ b  a
  56.         if (fd  < 0) {
    & w3 M" ?2 Z: h5 P5 o/ r1 o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 n2 |, |+ g1 Q& o7 s
  58.                 return -1;, v0 f5 @! C( V
  59.         }
    $ t% O1 w8 G8 `  g# ]0 e" ]
  60.         arg.sub_addr_count      = 2;4 g/ t4 f* i. \% E  O5 j
  61.         arg.data_count          = 0x18;/ K/ h. Q) S; K3 A0 q, h# A
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 y$ F( \: h5 F/ I$ m/ ~  x; n9 C
  63.         arg.e2prom_cmd_data     = buf;% R: m/ N: m! Y' K# F2 C
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 n1 e% Z% H; x% P7 ^* U# p
  65.         if (ret != 0) {5 L7 T& v9 g' t+ R+ a/ O4 k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' f- @4 l. Y$ W- t
  67.                 return -1;& X  `; u' s/ W+ I1 G& D
  68.         }
    9 Q1 `7 S$ D( V% f2 p: e
  69. 9 a1 U9 z' S2 q
  70.         return 0;% x0 E4 k7 B2 k  C5 O  Q" P
  71. }
    % {# g8 x& k/ ~6 f

  72. # n! q( J) O3 |4 ^: \2 \
  73. int main()- M5 ~& i* |4 w6 a# }' ^
  74. {! _9 F' L7 O$ ?
  75.         char c;
    . x/ ^% h5 i; w' E; u- S8 i3 S, `0 c
  76.         int i, macs[6];% N: x- s$ f: Y3 n( P' k) j
  77.         unsigned char mac[6];& h) f, x! ]+ c7 L) ~
  78.         unsigned char stbid[256];! Q) E: x7 d7 D3 ^6 Q; |
  79. , l/ g/ a; U; T
  80.         if (readparam(mac, stbid) < 0)
      S1 R- v1 ~6 X/ |1 b. m) k+ U/ l
  81.                 return 1;9 d" \6 i2 L$ z  u

  82. 9 [. J9 V1 _- T
  83.         printf("Current parameters: \n");
    ! b( P% o, \. D8 D4 \7 u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 [6 J- B! \* B' X
  85.         printf("  STBID: %s\n", stbid);, W! W$ q+ v0 o* _
  86.         / i' O2 i/ v8 @8 ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    # M8 s# u* m0 \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! u% f6 I- Q9 N2 Z; A" {6 |* G
  89.                 printf("Input MAC error\n");# \! W% O: m2 M5 `. A' M
  90.                 return 1;
    9 j* n) w6 j7 J, {0 C" i
  91.         }5 U: x! y% L) [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ z- b! U( t! T" Z7 V: B' ~
  93.         printf("\nPlease input new STBID: ");9 w  J' A$ V* b1 f# @9 @2 S
  94.         scanf("%s", stbid);) j% G8 G! R  g2 x3 x
  95.         if (strlen(stbid) != 18) {, E7 N* V( {" c& N4 y6 ^+ T5 E
  96.                 printf("Invalid stbid\n");
    ' @1 \; K5 Q/ ?; K' a9 F7 b
  97.                 return 1;
    8 D2 T- R: I$ x7 |; g
  98.         }* y5 P6 H  O3 N* K1 G/ Q
  99.         printf("\nNew parameters: \n");
    $ z+ n, r* \/ [1 L8 f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 ^) F: d' c$ ~# U
  101.         printf("  STBID: %s\n", stbid);
    ! e% t' a) ]2 A3 K( V7 J6 D

  102. + f, V4 _; O3 D* q* e% ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 @7 }& M2 {5 H" G6 c
  104.         for (;;) {; R! g5 H; o4 i, C$ d6 u1 m0 D
  105.                 c = getchar();
    - q9 o  G) s0 `& o
  106.                 if (c == 'y' || c == 'Y')
    : ?5 b$ O6 B  Z3 D
  107.                         break;4 }# H' w( z4 R- O* v5 x/ L
  108.                 if (c == 'n' || c == 'N') {7 P" j  F8 {8 ]# S
  109.                         printf("\nAborted.\n");
    . U8 L% R8 \7 r4 T4 @. b
  110.                         return 1;
    $ r5 U" ?  W1 k& Z; r
  111.                 }- @  p* o8 e2 O( }' J6 C
  112.         }
    1 j" ?* r# w: Q2 u. _
  113.         if (writeparam(mac, stbid) == 0)
    ( p( E5 a6 S$ l0 x
  114.                 printf("Parameters changed.\n");
    . |% [/ z4 m- M% U1 K
  115. ! e+ F% y5 Q% ~1 l
  116.         return 0;% |$ D$ q9 V% {4 A
  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 ' p5 B8 E5 u, f4 }! B$ l# M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% B0 \4 N( I2 w6 W
你用的编译命令行格式是什么?
6 d; F  o4 M4 \2 c: p3 ~  O/ 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客服返回顶部