查看: 17384|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' F4 l5 d: ?8 ^6 c0 \8 Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 O& I) j& |7 {! j  r7 l5 G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 M- I/ k3 O. p# e% X- G6 \5 m8 q
usage: himr <address> <value>. sample: himr 0x80040000 0x02 g5 D9 y9 q+ r; r1 N  w0 f2 E7 I
1 x/ F9 v& C# Y( U8 V

! n) Q. f" ~7 S% D" H1 K不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& U4 z2 d5 z) n( |
( D7 [* h1 Y" N6 i2 m% ^: S补充内容 (2012-3-8 09:42):$ C7 i( B! z1 u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 c2 a1 k* y3 i, R- h$ y! O6 h
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。) Q7 ^7 d% {( O* v- g3 D
- q# W9 X' i$ E7 T, A
himr <address> <value>. sample: himr 0x80040000 0x02 d8 H" b& _, w
( q: i. g0 k" b1 h# `( T$ u5 b
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。2 `1 D3 R/ `. G* P/ }: t$ D/ B
himr 0x80040000 0x00
6 I! U: F& Z. y& s& xhimr 0x80040001 0x11% _. w4 v: ~* X9 P2 p% q7 G
himr 0x80040002 0x22
0 R8 m9 r( @! {: }# F& chimr 0x80040003 0x333 e+ H: V# k/ d% O6 g. ~( a
himr 0x80040004 0x44
2 D$ l3 a; W8 I4 [5 H  V" \9 X8 {himr 0x80040005 0x55
. Q) `2 U% o2 \+ P4 d: a2 B: p) f2 G% v' q
SN也是类似。% s4 N3 B$ H( x* \' D9 W

, x# b# i. j( ^% ^5 t现在主要是,谁告诉我们MAC和SN的地址?
0 `# w* o2 D: \
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " g: x" D& @- G
一直想找到运程修改MAC和SN的办法,苦于无解啊

$ h! h. B3 V4 l4 g6 P2 R' B源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 }; i: _8 P' i7 R  Z& ]$ [; [; i
2 k  T, O4 \6 e# O3 ?( Q
修改的代码早有了。到今天不会编译。0 }! C7 X6 p. r' n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ ?8 k" U) E/ V8 N! o2 V
  2. #include <malloc.h>
    " z7 A9 {; l1 T
  3. #include <sys/types.h>
    5 K0 k$ J# R7 d; y
  4. #include <sys/stat.h>! n' f: k3 ~3 b8 u7 t4 `$ M
  5. #include <sys/ioctl.h>
    3 a6 Y, }+ w$ ], _3 S; n" u; N
  6. #include <stdio.h>
    & D/ d" l4 C. Y# g6 C, Z- Q
  7. #include <string.h>' o+ L$ x0 x( d' M5 c
  8. 9 y" i+ w4 }3 @3 O& s6 e5 I, r
  9. typedef struct {8 `0 T$ t6 }9 W9 p4 E. \8 A
  10.         unsigned int        e2prom_cmd_sub_addr;+ R8 t* S2 u' e) S0 C
  11.         unsigned int        sub_addr_count;
    9 Q' C; H) o/ x% h- i- y* W, K
  12.         unsigned char*        e2prom_cmd_data;- U8 S( p9 ^) v* i% z+ i5 d
  13.         unsigned int        data_count;) \! j# l& l* \- A( }/ C
  14. } e2prom_s_cmd;% S$ y. s# z+ I  `+ ]2 L
  15. ! \- |' v7 X9 |. u& m4 X( E7 y% c& {
  16. #define E2PROM_CMD_READ 1
    7 Y' u! B* J" u+ C/ ~7 c1 |
  17. #define E2PROM_CMD_WRITE 2: ^7 o. U7 v* v3 ^1 w6 Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 H9 c. M* {5 J+ d5 y  q) ?: y% [
  19. / F5 o1 Q0 _0 V4 i# x. h4 {9 _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 b" Q4 t, U4 ~
  21. {
    * C' t' f: ~  F
  22.         int fd, ret;
    5 k- s+ A& Y/ F9 L* F8 c) Q8 n
  23.         e2prom_s_cmd arg;
    2 R8 n, Y- T% Q% j8 j) ~  f, B  Y, p
  24.         unsigned char buf[0x18];2 E" J2 `- l3 V! c7 s- }% w

  25. 2 |1 i0 h8 H, q' U3 k% i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 d/ K. \4 i, a; w
  27.         if (fd  < 0) {
    5 V  K; q  m' ]0 [4 q3 Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 P# t. w: k! }* R" A
  29.                 return -1;8 J0 i5 z$ C0 U+ ]9 R2 V
  30.         }8 u4 ?6 i  N# D; s- S3 Z: R2 `' }
  31.         arg.sub_addr_count      = 2;* d! U) q& O6 M2 y. h
  32.         arg.data_count          = 0x18;
    % `) d+ z$ j2 l* |& `/ A& R
  33.         arg.e2prom_cmd_sub_addr = 0x290;' i, v- b1 J9 `' M# d
  34.         arg.e2prom_cmd_data     = buf;
    1 y, {% a% d8 x- P+ ^( S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 Y5 j, M+ ]2 p4 |/ O
  36.         if (ret != 0) {6 O1 t! e* O% x; D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 i0 y/ r  C, y* o0 l" e% @
  38.                 return -1;+ ^' R+ f7 f, E# ?8 {
  39.         }
    : Y8 w' j# A9 I. S/ |
  40.         memcpy(mac, buf, 6);
    # f5 C$ ?! I0 r1 M) }
  41.         memcpy(stbid, &buf[6], 18);
    # Q/ S" ]3 f; G" R: u) z
  42.         stbid[18] = '\0';8 R7 ^  ]- v( I1 f

  43. 4 K, E! }# }2 l" Q- K$ Z4 Q
  44.         return 0;9 F! O  U( C5 R2 I* {, v
  45. }6 ~" s  \1 A( V1 m5 H5 \
  46. - e% c0 }0 Y# J5 F: i. ~/ ~- ]
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( }! Q. p; G0 k
  48. {  h0 E1 t9 y5 P
  49.         int fd, ret;
    ) P. }3 I% D0 {3 u! n9 z  P
  50.         e2prom_s_cmd arg;$ H1 D6 B6 D% l; p0 p
  51.         unsigned char buf[0x18];
    * J1 {- Z6 g* ~" A9 H$ x
  52. ( \4 b8 U( ~/ r2 i" F
  53.         memcpy(buf, mac, 6);
    6 I% n' I6 U. t# S6 S3 @0 q
  54.         memcpy(&buf[6], stbid, 18);
    0 E8 O. {# {. H, m! C! V! p2 e( `
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: n: @: b/ h) R
  56.         if (fd  < 0) {
    7 @6 Y& q5 o/ A9 Y% I
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + a' ^1 G" }1 s. ?8 K; f
  58.                 return -1;
    1 B9 q- Z/ g( \) s- ~0 v
  59.         }
    / E$ X3 ?. }4 S9 _
  60.         arg.sub_addr_count      = 2;/ T% d  p$ Z' B$ w3 Z
  61.         arg.data_count          = 0x18;( a  u0 ^8 X& O( A$ [
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    6 \! h" t! q* f' M: ?2 ]9 R
  63.         arg.e2prom_cmd_data     = buf;
    1 Y% |8 n9 C0 n& V+ [4 T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# ^# S/ b; U# k& K
  65.         if (ret != 0) {7 j7 |; S" Y7 }9 g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; R3 F, h. O* C; H+ ~; g
  67.                 return -1;
      v9 \( j$ j5 h
  68.         }# x8 @4 ^; L/ A; `$ }0 f. P

  69. $ G4 c' J9 e2 d9 A
  70.         return 0;  k- K( z8 P& Z
  71. }' k; d' Q+ d" H/ h
  72. 9 N- \6 [! [7 m7 o9 Z$ P
  73. int main()& h. Z6 f" R6 m3 d  C: f
  74. {
    $ n- t( q1 U' q9 J% t0 ]( @6 _3 _' `
  75.         char c;
    # R! T8 A6 e4 u/ Y; d1 M( w" }1 n/ a( w
  76.         int i, macs[6];- `* R( N7 U- P* W# {
  77.         unsigned char mac[6];
    / l' o' {9 I$ q. e0 m7 F
  78.         unsigned char stbid[256];
    # C% w* T* ^1 y6 h7 W
  79. 9 A/ Y3 z1 K: ]. `
  80.         if (readparam(mac, stbid) < 0)
    " X: [2 i2 K+ s8 K$ O& H
  81.                 return 1;
    1 z4 t4 `, w% }) T% w9 m5 j
  82.   z7 J9 E" [: y2 ]. F: t- Y7 g! W
  83.         printf("Current parameters: \n");' v2 w8 ^4 N. O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 ?4 P4 A) C6 o' O) y$ k0 x
  85.         printf("  STBID: %s\n", stbid);' i+ b8 ]' P4 c. u+ y
  86.         ! m. q/ W0 H$ L) c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 U$ _' S1 G1 e" f! F7 ]+ z( o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; G& n/ l8 }- r' y# f
  89.                 printf("Input MAC error\n");
    4 Y; f; P0 @% h, G2 q  c
  90.                 return 1;
    $ r3 E9 t5 L; }+ D: I
  91.         }
    ( I5 [7 t& A+ |9 G9 m$ U4 s5 I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 t( Y! n; r7 _. `7 T! K
  93.         printf("\nPlease input new STBID: ");
    $ \7 B& n6 R& S6 u3 o
  94.         scanf("%s", stbid);; u# a9 v  S5 ]5 u3 {
  95.         if (strlen(stbid) != 18) {! Z. a3 T. `! i% E) M
  96.                 printf("Invalid stbid\n");
    4 \# K+ ~6 I: C# a2 }
  97.                 return 1;" I5 _/ p1 P. l4 Z& ^* c
  98.         }( X5 D. J% j- d% x$ y/ `
  99.         printf("\nNew parameters: \n");
    % F& S9 q8 z; t2 s3 h$ P! Q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : z2 y4 u. g2 j9 q' c% c+ g" T
  101.         printf("  STBID: %s\n", stbid);
    : C; d2 S  V: Q0 R) r+ {
  102. 7 Q; C! Y) B7 e5 n
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; D# M' j( w3 S1 X" c4 s1 e
  104.         for (;;) {
    $ ?. m+ O8 H3 h; T3 E, J( I
  105.                 c = getchar();; ^: ?, d$ b& V
  106.                 if (c == 'y' || c == 'Y')1 Y" L$ J! V# k! l9 Y3 j& k
  107.                         break;7 {4 ~+ ?  j# A* X8 i4 o
  108.                 if (c == 'n' || c == 'N') {! J1 T, i! r' k( B& G
  109.                         printf("\nAborted.\n");
    0 ]. f2 a1 m, d* p
  110.                         return 1;
    ( x4 s' l' u6 S  V/ `
  111.                 }
    2 c* r. ~' |9 r% {+ l+ T, v
  112.         }9 @- @2 s2 d7 w6 H& m/ c+ @
  113.         if (writeparam(mac, stbid) == 0) ; q5 F2 z  J/ g& I( ]
  114.                 printf("Parameters changed.\n");" x  b: t7 G+ ~3 j1 j
  115. * r0 N: u0 l# D# K0 i/ k
  116.         return 0;
    $ T+ k% N( _, y3 l# 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 + f! u2 Q  \- \* I# b3 U* ~  {
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 Y# L2 ], j0 M1 h
你用的编译命令行格式是什么?8 m2 o2 C0 Z* k6 t5 P. k# i0 X( F' l
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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