查看: 16335|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr' j* ~, O/ Y* n$ y& Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% a. x. d4 n' T' `; d& G, M2 ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 Z" F' o% c: L) T
usage: himr <address> <value>. sample: himr 0x80040000 0x05 k  F& U. n9 m) F. e' Z9 ~
  Q) E7 _& H  ?3 \
# M- n5 q4 Y+ C0 E6 |$ }! B: m6 A2 v
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?  H9 i: g9 j, o9 G
! N2 h# E' r' K
补充内容 (2012-3-8 09:42):
* s8 a) i+ b, S& [http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 C% b1 z9 c% l5 q+ c" i% L
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! S; k8 u1 |7 @. @! `

. T% n$ `7 \9 P# i/ L. }  n  Jhimr <address> <value>. sample: himr 0x80040000 0x08 {& N6 N4 d! S  u  u/ Y

6 Y' I1 I) s: A# j5 ~例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 |/ Z& A4 U% u3 ]; q6 M; }0 g
himr 0x80040000 0x00, A5 |' ~9 @) T, L9 h* E
himr 0x80040001 0x11& i8 T# w0 T( y6 x, t6 \
himr 0x80040002 0x22
* n/ C' o$ ]' N5 shimr 0x80040003 0x331 a/ r9 m. b0 F1 y  t
himr 0x80040004 0x44# z, {' L3 i$ O2 K6 |
himr 0x80040005 0x55$ z/ M8 N6 o! q# q" x/ s
- x5 B% J7 N' l
SN也是类似。2 q8 p7 P, O" k+ b. T5 u& o  t

4 Z' |" J% n* ~0 w* q$ L现在主要是,谁告诉我们MAC和SN的地址?/ j; I7 l  v2 m4 L- S6 M$ @
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & A& i6 J) d, V
一直想找到运程修改MAC和SN的办法,苦于无解啊
' s, c3 [0 M6 |( r6 q' m
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( H5 m" {" Q* o8 e* L  ]
. Y5 w9 q3 p9 X3 Z. P1 S
修改的代码早有了。到今天不会编译。
  c$ v. y+ U/ E/ z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: ~) a& m9 e/ E" H
  2. #include <malloc.h>: b- j3 J9 u: r. I6 p: H5 m. A4 r
  3. #include <sys/types.h>
    3 E/ T1 u- W4 P3 N
  4. #include <sys/stat.h>4 A( N* k, c/ @1 }. H" \
  5. #include <sys/ioctl.h>
    8 Q; M" M' |) t! |" b
  6. #include <stdio.h>7 C. X- E! g$ D
  7. #include <string.h>
    ! e" u% e- m4 _7 b8 k6 S# t! N

  8. 4 h6 x( n5 a4 j% [0 R. c$ _
  9. typedef struct {- _; N/ X$ q; N$ `1 i! m! J/ b! c' A
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) v$ Z. T5 y; r8 m' S2 [# J( a
  11.         unsigned int        sub_addr_count;
    6 B  d4 ?  l9 J2 M% p% _
  12.         unsigned char*        e2prom_cmd_data;
    3 a2 v5 f- B% p# M
  13.         unsigned int        data_count;8 Y6 {3 h7 t! U" K
  14. } e2prom_s_cmd;
    / v) F" M5 |" I% |9 R6 G% Z
  15. ; f1 O& j( ^$ H! }. P: `
  16. #define E2PROM_CMD_READ 1
    + V) {1 r/ l& O# n( P- K* N
  17. #define E2PROM_CMD_WRITE 28 u# E+ {7 h% L6 J6 h' I1 C" n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 F2 |3 ?" H0 z1 j8 ^( J
  19. & K! N; `4 z( E5 P. o" @) G3 {: Z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 ~$ i& F+ K5 L5 B) b$ ]
  21. {
    + x" F1 l1 J6 g& o3 }
  22.         int fd, ret;
    % ]7 L! O2 z8 U9 [, O& T
  23.         e2prom_s_cmd arg;. K1 X$ B% ^' s/ M5 B$ V* W
  24.         unsigned char buf[0x18];
    % s: q. o: t. u( D$ i" L* `6 [
  25. ( N# ^* U0 n% M! E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" T9 d  s3 P, A) f! l2 L* ]
  27.         if (fd  < 0) {- Y, a  b$ J# y9 z6 D# t& R3 h1 E
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- X9 t- n1 b1 ~$ d5 t# i& L
  29.                 return -1;
    / }8 v0 t: S2 L& q* B6 I
  30.         }* R* d. v3 w. d1 Q  L
  31.         arg.sub_addr_count      = 2;. S  k/ U) @' q) ^
  32.         arg.data_count          = 0x18;5 B  u: `1 o3 z" k3 X, _! l
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' N2 w, w* ^8 g
  34.         arg.e2prom_cmd_data     = buf;: ~2 {. a. u* Y. X  I" @
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # U# c4 W' _! N9 O
  36.         if (ret != 0) {( _3 _, Y! X6 N: S5 j! Z3 U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * _5 |* n% L; l2 A
  38.                 return -1;
    ) a* X8 [' u6 g. U5 n$ b
  39.         }
    0 K: r4 n, W* R2 i/ M
  40.         memcpy(mac, buf, 6);
    2 o: [7 t2 Y0 L$ e. [
  41.         memcpy(stbid, &buf[6], 18);
    6 H" I3 ^" S$ t9 m
  42.         stbid[18] = '\0';" \1 h, A3 V) M! O; Q  R! z

  43. 3 j8 X+ \) l8 U8 K7 `. M# @" _
  44.         return 0;
    : e7 u4 R4 d- p. P; b
  45. }
    1 h" e- s+ X7 ^; C" W6 Z
  46. ( d! J$ |% T- W6 a9 d- n4 {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , D- @* }7 d. h
  48. {" Y& V/ Q% ]; [2 f4 I  O
  49.         int fd, ret;
    ' r1 B) S! O9 S; w- n9 z
  50.         e2prom_s_cmd arg;
    & i0 R* r/ z4 P$ g( }( ]
  51.         unsigned char buf[0x18];
    ! o& z5 B; T9 C; U3 m2 i' I9 ^
  52. - s1 y9 Y4 `) z8 R7 V
  53.         memcpy(buf, mac, 6);' T8 @; C, u* I  E" Y' q
  54.         memcpy(&buf[6], stbid, 18);: C; v4 n* O. @8 O* C: n
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 o2 Q0 W2 o8 }0 Z0 H2 m2 I. E
  56.         if (fd  < 0) {
    ! o2 C* l  o; d4 S: Y8 a2 @/ ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* g6 d' p7 m) H$ F, c& J1 q  I
  58.                 return -1;
    6 S/ d2 Z) z  j" u! s8 ]+ A
  59.         }
    * |( S* V9 m2 e* f+ {+ x. |$ F$ H: {
  60.         arg.sub_addr_count      = 2;
    1 ^. M2 T6 d# v
  61.         arg.data_count          = 0x18;
    $ ^: Z- b, c0 r8 M
  62.         arg.e2prom_cmd_sub_addr = 0x290;; L* D; P8 a; d, e0 E
  63.         arg.e2prom_cmd_data     = buf;* T: C" g; D( \5 N4 A% [
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- i- c4 u/ z2 {: C  d- B8 F, ^, O
  65.         if (ret != 0) {, \5 n, g  P; x4 y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- P0 ]* k- Z6 F) q& c
  67.                 return -1;
      d) a5 t, S/ r# r9 U& G5 E, C
  68.         }
    4 K  h! s9 R, B3 T: n
  69. 1 p! O* K8 {& [
  70.         return 0;! Z6 q# B0 }( I: F
  71. }
    9 j0 C3 Z/ s9 q$ C
  72. ! H; H/ U( c, p) W7 P1 n
  73. int main()! O4 Y. J! P2 ?( K+ z4 Y; ^6 ]
  74. {
    8 q3 |' D5 ~7 p9 X) B
  75.         char c;0 T& _, c1 n& x, `1 q- U! K4 o( X
  76.         int i, macs[6];
    - D) e2 t; y  W8 Q, a
  77.         unsigned char mac[6];8 X" O% f' ]& h$ s' o
  78.         unsigned char stbid[256];5 i( `) C2 ]8 }  x) N. z+ D' N( d
  79. * F( j9 `0 Y8 v4 O$ q0 k  z
  80.         if (readparam(mac, stbid) < 0)
    - V! j$ j4 i- L& N9 u7 y3 K
  81.                 return 1;
    + L* t, y( N; a; Z5 Y

  82. 7 U% q+ Q. ^+ x: O/ `! |- N, u
  83.         printf("Current parameters: \n");! P2 H7 {0 E9 G3 O4 O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% [( M9 `0 K- @% |, x3 t( \# J
  85.         printf("  STBID: %s\n", stbid);
    3 U$ [; F9 T5 y, \9 G" n! y
  86.        
    4 D* k2 Q2 v; L, P$ w3 E$ W) S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 E. Q- X# I2 f7 N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! E3 t  J3 H* j
  89.                 printf("Input MAC error\n");
    ( a% r  f5 B6 Y4 k0 o
  90.                 return 1;
    ( |6 ^9 ~- R3 U' n
  91.         }
    + Y! X% A7 @. Y( B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " f$ t9 e7 k/ r3 O5 {/ U, C7 S9 c
  93.         printf("\nPlease input new STBID: ");1 Q# D' G) N1 O9 p: \
  94.         scanf("%s", stbid);
    # z9 }; b4 F' l$ z7 ^3 n
  95.         if (strlen(stbid) != 18) {
    1 t4 x+ o4 L- `- L, \/ d- c
  96.                 printf("Invalid stbid\n");0 L0 i4 B* x2 J, K# P; \* N
  97.                 return 1;( g1 l3 S0 Q9 Q0 x8 J5 m/ r: L
  98.         }
    2 A8 \5 A, w% A" x: P
  99.         printf("\nNew parameters: \n");7 u3 Y. e1 J2 |4 E$ t" [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 y6 [0 m9 V' |* y, V
  101.         printf("  STBID: %s\n", stbid);
    / V" s+ o: [) z- Y
  102. ) l. @3 E% m1 s. ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");5 }0 b( i* l: e/ l3 i8 I
  104.         for (;;) {
    3 G. R4 U; z0 s( F) P; v) B
  105.                 c = getchar();$ ?2 @1 y7 x& H; @: \
  106.                 if (c == 'y' || c == 'Y')) a# ^( g+ F4 b, n4 w
  107.                         break;/ j5 b' `. K+ H& w: v
  108.                 if (c == 'n' || c == 'N') {7 I1 g$ J6 o4 d1 T. l! _0 S
  109.                         printf("\nAborted.\n");+ u+ ~$ W: v, P& J* D$ [( h
  110.                         return 1;
    7 B) ]5 C) }* X3 Q- A: H! B; r
  111.                 }
    0 [( Y% v7 D. y9 p) h/ X* y
  112.         }" y2 |' O$ g* ^! ?- i: m
  113.         if (writeparam(mac, stbid) == 0) # H3 `% @/ p9 A9 v: U
  114.                 printf("Parameters changed.\n");5 U( C$ C2 \2 c3 t8 V3 x# w
  115. 1 O, y1 C3 Q& c0 u5 b
  116.         return 0;% L) c3 U, O+ U2 a' r, f* K
  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 / A- G: L; Y- Q" L5 C
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 c0 ^& F  |+ p6 H4 h
你用的编译命令行格式是什么?
6 V8 C' j3 v0 ?3 p0 ?7 e' q" o8 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客服返回顶部