查看: 16564|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# |! A5 [* t: Z5 q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . L& ?. B8 w+ h6 g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" X2 @2 h* M6 Z% X* X8 C# q2 M3 l4 [usage: himr <address> <value>. sample: himr 0x80040000 0x0* j( X) v2 R: k5 c8 `4 c

' s& h0 N) N) j' m2 Q* V7 N5 _/ m0 G, C
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) [0 X0 s: u' m

+ E8 C8 J. J8 \) h" Z- j4 }" }补充内容 (2012-3-8 09:42):
5 w9 s5 d9 K: p( ]http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数+ ?! R8 ]6 Q: D. E: l, Y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 Q1 t# Z9 e, X& _2 z
. |% Y* Y( R( H  s0 i1 a
himr <address> <value>. sample: himr 0x80040000 0x0
  N% I2 X) u* B; |5 \9 T: z% q
( \7 ]" c: R( F. B例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, I! D' r% n5 t5 t. z1 C# o) rhimr 0x80040000 0x00
9 D- X" Z( |: vhimr 0x80040001 0x11
! g1 W: [, `) L- r) K' Xhimr 0x80040002 0x220 t( h0 h/ t" b) n0 s
himr 0x80040003 0x33$ E4 a2 y0 g; j' B0 P
himr 0x80040004 0x443 b+ r, w" j( U. |9 w
himr 0x80040005 0x55
) y7 _6 N9 z/ y* ]* l- v" w
  b7 }  e$ g2 t/ TSN也是类似。  S( g- u1 j, g' [' D; ?

# K, b" O+ H& d% i/ l现在主要是,谁告诉我们MAC和SN的地址?9 R6 i& U3 Y' D! A& j+ |! y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 K% \4 c2 p/ [" J9 X一直想找到运程修改MAC和SN的办法,苦于无解啊
) J5 F( ?! u/ D% j
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - g' N- i5 Y1 Y' L  N

2 N6 U4 T5 ]8 c6 v修改的代码早有了。到今天不会编译。8 Z  c# P" W$ f( g% }5 g# e0 E- r
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 I, q6 I# v; {; r% `
  2. #include <malloc.h>
    + n' Q, x2 f9 `5 B/ [' d) `4 K- Q
  3. #include <sys/types.h>
    # D; q) E" e0 `" K+ e
  4. #include <sys/stat.h>, p7 ~: ]/ D8 b
  5. #include <sys/ioctl.h>
    $ I' {: J! Y+ H: D; t9 u/ Y
  6. #include <stdio.h>
    - ?, O+ u& s; J. Q, [( H# U
  7. #include <string.h>
    ; X5 X) \0 P1 v4 f% h0 H
  8. 6 Q& o0 }" ?1 Y( `- b
  9. typedef struct {. h: r* [! Z+ n8 |) m. T- Q/ ~
  10.         unsigned int        e2prom_cmd_sub_addr;& N2 \( w$ Q- d/ _- O  _
  11.         unsigned int        sub_addr_count;6 h3 l. {  y6 W5 H& [; d
  12.         unsigned char*        e2prom_cmd_data;
    4 ~* r  C0 `: w6 g3 d9 T; K3 t
  13.         unsigned int        data_count;5 U% x1 ?. K% j5 U7 n) J4 X6 F
  14. } e2prom_s_cmd;* a, S( }- V/ Y& s& p# t9 H
  15. 0 z8 _' c  R: e; E: ~6 t
  16. #define E2PROM_CMD_READ 1  \8 W$ i+ R, U4 d, }
  17. #define E2PROM_CMD_WRITE 2
    % K% V/ P& I# F5 Z' x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / I$ l  n. j' s
  19. / N6 {4 |0 T; E9 s* s  Q& S* n( x, v
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% R  K4 V5 ]. {* r( v2 x2 W$ N
  21. {
    & ~# y0 F$ m- T3 Q2 Q  b2 c
  22.         int fd, ret;
    - I3 m/ k4 l8 y2 i9 ^. V
  23.         e2prom_s_cmd arg;
    $ K3 g  A# N% @
  24.         unsigned char buf[0x18];+ o8 u! E5 l% ?4 g3 j5 S

  25. # R, b9 {6 m: r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 _- A1 h' ]5 n" p0 ?- n. f1 z
  27.         if (fd  < 0) {
    ! F& J3 B# U; @- p8 K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , ^0 `7 L- O3 m% R% F# e
  29.                 return -1;
    ; X/ l4 O3 x/ e8 Y6 t* v
  30.         }
    3 F( X% s3 o% b, R7 W" q! d2 {
  31.         arg.sub_addr_count      = 2;
    ) _" t+ Y" _" [: M
  32.         arg.data_count          = 0x18;
    " a' _. r1 _8 G; A# m8 p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # E8 e# _9 c( i. g# J, \& ]" s
  34.         arg.e2prom_cmd_data     = buf;( p; M+ V' H% j1 {. D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- c3 i6 a& N0 [
  36.         if (ret != 0) {
    / r8 v* H9 u: ~0 y" `! f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & M* W* T1 x1 z
  38.                 return -1;2 e" [; A3 \& B
  39.         }
    6 a* P, ]* W) p: T% U; n
  40.         memcpy(mac, buf, 6);
    & z' K( X+ L  B
  41.         memcpy(stbid, &buf[6], 18);
    9 O2 I/ Z4 p, a: y/ I0 A
  42.         stbid[18] = '\0';
    ; x8 L' A- ?% {2 n9 i6 g

  43. 9 |3 {- b* y" C, T/ b. M
  44.         return 0;  ~* @0 ?% U' M3 t  A1 V
  45. }) W/ |. v+ K5 e" W6 T; q& k1 X

  46. + N/ i' a# e1 [9 Q4 ?9 ~8 G- Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - @0 i8 Y1 h5 B6 J7 h7 F- I
  48. {
    / y/ f' |/ P* \& N* x) f: V
  49.         int fd, ret;: M: h+ j. Y! N+ E
  50.         e2prom_s_cmd arg;
    & |) b$ l0 C! U* S8 A% b) N
  51.         unsigned char buf[0x18];
    ( ~% M5 l+ H' w$ u$ A4 E

  52. 7 k6 m, V8 Z( Z! [
  53.         memcpy(buf, mac, 6);
    7 s, D, K/ [% K7 v: x  Z
  54.         memcpy(&buf[6], stbid, 18);$ t$ w2 n$ I0 ~9 N$ d0 h/ D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      C' b( _0 \# K4 U, p7 z, C
  56.         if (fd  < 0) {* u  O, u, n# b5 Y4 M1 p$ w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & B* o& a/ [! W3 J) x
  58.                 return -1;  G. {; s3 d6 d
  59.         }
    - _& L: ]2 {+ y( Y9 H% }
  60.         arg.sub_addr_count      = 2;
    : o: D' N! N2 ]0 j! i
  61.         arg.data_count          = 0x18;$ j' Z* a* m( d: t& `4 O
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : H& L  |4 @! X. _
  63.         arg.e2prom_cmd_data     = buf;. k8 W) I$ F5 B: t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ ?5 p* P& z' E/ n" l- ^0 @/ K
  65.         if (ret != 0) {8 v/ }/ p! ?' u0 W, w: W1 E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ' t  F5 G0 d' p, ], ]2 a$ W' q
  67.                 return -1;
      L$ l1 n5 T( j
  68.         }
      h/ d; }% h8 q$ i- g) }; I0 x
  69. 7 K* k7 }3 u3 V4 e7 A
  70.         return 0;
    7 [! `8 D  h4 Z4 A0 k
  71. }, S7 e: B( q& V, u7 x! g2 W
  72. , n9 ?% a* b- Q5 L! f
  73. int main(), ~  u3 w' e: d. f3 Z8 S& ~
  74. {
    3 ]: j0 x: {, B; z6 D- o2 g
  75.         char c;! g7 [. d9 q( Z
  76.         int i, macs[6];; U8 [4 M( d! j/ {$ Z9 n
  77.         unsigned char mac[6];
    ( M9 D! ~/ ?! L; |7 {
  78.         unsigned char stbid[256];
    5 r6 `+ I4 r; G& i( P; e, Q

  79. , c" l3 W/ B! K$ I/ n4 J- n- Z
  80.         if (readparam(mac, stbid) < 0)$ S3 e+ y! P" Q4 t2 g2 ], i
  81.                 return 1;
    + ?& V# B- i7 ^' P

  82. 0 m7 u& g4 @  F6 M8 ?# ~
  83.         printf("Current parameters: \n");
    4 H' B, S* k" `5 e0 j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ T/ L  c% A8 Q: J" H
  85.         printf("  STBID: %s\n", stbid);
    " J# {& c) a1 {4 {
  86.        
    3 g1 V1 y' L; L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; l3 `0 _% H. b% p' b% M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ' g6 f( z% W1 a  b3 H' k( }& \% X7 r7 K% f
  89.                 printf("Input MAC error\n");
    7 i1 t$ t$ T1 C4 e0 M5 e8 L
  90.                 return 1;
    1 [/ l- V$ m0 `+ F) D
  91.         }9 z+ v7 V# y# a0 u8 z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 z" k: s# f0 d6 x- ]
  93.         printf("\nPlease input new STBID: ");
      r' p8 |+ N* q. o7 B
  94.         scanf("%s", stbid);% y4 l; f; _$ n; i$ B/ i
  95.         if (strlen(stbid) != 18) {! V" \& e1 Q6 A9 O* x
  96.                 printf("Invalid stbid\n");+ F7 ?# k' a" U8 Y, ~* D" f
  97.                 return 1;- [- f% _2 j* D% x' W+ j5 \
  98.         }# n% u7 p+ `% d5 a
  99.         printf("\nNew parameters: \n");
    9 _) F1 a$ c( v4 \9 r
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( b/ i/ ]4 N( a, M# t
  101.         printf("  STBID: %s\n", stbid);
    ; e4 }# V+ G. l2 F% x& b4 b

  102. " s0 C* n" D; t) D$ [  j- ?: B
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 x( D, U! g; t' ?
  104.         for (;;) {* }' f' Q& ^. H; [
  105.                 c = getchar();6 n: J* n: C# Q; f: y
  106.                 if (c == 'y' || c == 'Y')4 [* s( z- m) {/ t+ Q
  107.                         break;% P( n; ^& p# Q0 r/ m* a
  108.                 if (c == 'n' || c == 'N') {
    . l' Z- V1 u$ k0 H8 B8 u2 ?
  109.                         printf("\nAborted.\n");0 |2 e/ q8 M  s/ {  g, x( V
  110.                         return 1;
    ! O/ ?5 ^) E+ s) O6 |3 Y" l
  111.                 }- N4 `6 ]) W* K- S+ \: G
  112.         }( z! ?) x1 [4 B
  113.         if (writeparam(mac, stbid) == 0)
    ; _) ~9 L8 T0 Q1 E
  114.                 printf("Parameters changed.\n");0 q, P; `7 X7 J& b; ?, k
  115. % O6 M( N& v  }0 t' P9 L$ o: d& j
  116.         return 0;4 m8 c7 S1 l* Z: j% B  E  l/ B7 J
  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
$ }+ \4 Z; Y. e& z. c* y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% |, K  i" C8 p, l* S9 f0 e
你用的编译命令行格式是什么?" G+ A6 U1 `0 N5 Z( i% _2 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客服返回顶部