查看: 16498|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    1 N% n7 v# M% v8 Q/ {& F2 d8 J6 W) W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! V. W( ^4 x! ]% o1 B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* @5 I) f8 @; O
usage: himr <address> <value>. sample: himr 0x80040000 0x0( B: g+ i) j0 ?% B  ^- E, E
8 _% C- a' `7 q2 ^. x9 z+ Y9 m8 X
$ {6 l2 V; o/ V
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- Z' l5 v' R8 [1 Z" A
) i% q1 n( Q" m$ |/ {3 G& k6 c4 H) w
补充内容 (2012-3-8 09:42):
' V- a5 @6 S/ E7 Jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( K6 D% b! H3 o5 g6 Z
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
5 \5 D! y, Y$ j& `. G" x6 }) f) W6 t4 v3 K' ~7 M! g
himr <address> <value>. sample: himr 0x80040000 0x0
9 P" h" y% |$ Y6 p: \
2 h! H4 w# m! D* @+ q0 ^例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 w! U& E4 V1 B3 W% p" V# r  e9 }
himr 0x80040000 0x00
& ]' |; ]0 o+ p0 w5 X! y, E. shimr 0x80040001 0x11
2 ?% A6 E0 {" K$ t( e& M: `himr 0x80040002 0x22- ?6 ]0 x% U$ T
himr 0x80040003 0x33
( e8 v) _0 j1 k; ~% uhimr 0x80040004 0x44
, @$ X; y6 F0 [4 a* dhimr 0x80040005 0x55
' r/ d# g/ W6 q
0 C$ |0 V1 s; ^2 o: V" qSN也是类似。, g' v4 O3 `/ U8 ?) @1 x
( A0 o, K3 I$ l2 _+ m
现在主要是,谁告诉我们MAC和SN的地址?: C4 h0 I+ Q% ^
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" B  A2 X0 w% b  j一直想找到运程修改MAC和SN的办法,苦于无解啊

0 i5 h$ a" g. O源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 s0 S! L7 X( M  \& y5 v( N' B/ w+ ]! w% }* g
修改的代码早有了。到今天不会编译。) n$ F3 u# a1 l( P- G8 u
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 L. \7 H8 b  F
  2. #include <malloc.h>
    " T. s# A! v( U+ Z* h! A# Q# o
  3. #include <sys/types.h>0 [3 `+ x2 N2 h: |) q2 U
  4. #include <sys/stat.h>2 _+ g! J* O9 M
  5. #include <sys/ioctl.h>0 _8 R8 }; l* h" h& z2 B! m
  6. #include <stdio.h>' E7 Z7 J! g$ u* e# W3 k. V# t
  7. #include <string.h>" U& Z; U( h6 D5 Y) h, @# \

  8. & p3 N( B% a- V% k8 L8 n
  9. typedef struct {
    . w% P0 d) ~/ r3 S) V$ ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 M; y# x% X; v, {0 [6 Y+ C
  11.         unsigned int        sub_addr_count;
    ( u+ ]7 U/ C$ @& Z% G
  12.         unsigned char*        e2prom_cmd_data;
    0 V) Y! x, g8 X
  13.         unsigned int        data_count;& E1 b. |) `5 v
  14. } e2prom_s_cmd;1 x: v6 L8 S) Z

  15. 3 O; ?* K* D8 {3 i/ @+ H% h  I
  16. #define E2PROM_CMD_READ 1; l! `: `: l( E5 u7 u
  17. #define E2PROM_CMD_WRITE 2
    . D  l6 a3 g1 r$ d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    " j6 ~+ t7 ?2 ]  L8 M/ l) r/ n

  19. 1 I' D7 j  O6 d& j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ c  y  g% s8 R6 z
  21. {% ~- K( q5 j7 P. i
  22.         int fd, ret;
    7 l& j/ [- |0 e) v, D! Q
  23.         e2prom_s_cmd arg;) Z/ ^  S! l) S; r7 f2 s
  24.         unsigned char buf[0x18];
    . ^, z% I2 [- {' a; m
  25. $ Q( o# ?' }) @7 N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / y8 q/ ~0 A% v. a0 |5 Q: n/ o
  27.         if (fd  < 0) {& l3 g+ `- W6 a% W& o$ `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # K) }! J& \. F/ S; u, |" U
  29.                 return -1;
    / B: D- q9 Z9 T! j  a
  30.         }( E1 |. K0 U2 z' }. U
  31.         arg.sub_addr_count      = 2;
    0 j0 o5 B4 h2 S0 ?# E
  32.         arg.data_count          = 0x18;
    4 F9 h8 u+ A: T/ R" o- K
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / |' L4 x+ M4 y2 T4 G( E4 A# O
  34.         arg.e2prom_cmd_data     = buf;
    ' g7 W* r" R9 {( Z3 X
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; s& Z( b4 j! V& i& \/ s0 V
  36.         if (ret != 0) {
    ) Y8 `  S) k5 e% z% j! t+ D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 f8 s+ x$ |+ K  |5 o* S0 }. [4 S
  38.                 return -1;
    ; }3 O7 I  M# K+ h, C
  39.         }# c$ Y* X' K, v( C* E- Y6 ~
  40.         memcpy(mac, buf, 6);
    - F* D; I& `4 f" e1 d, F: c" W
  41.         memcpy(stbid, &buf[6], 18);; o: p, ^# N! v
  42.         stbid[18] = '\0';
    / R9 f/ }; H' t& X$ D( ~5 [
  43. 3 E/ y3 |$ s: U
  44.         return 0;
    " z- x# q0 {) S% M; K- H
  45. }* Q3 W+ u- p# H3 G" l( Z1 m- }

  46. - ~) n8 g9 ?+ f  J- p
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  y/ H5 x9 T- Q3 l
  48. {1 v9 Z$ T3 Y' v4 E. w
  49.         int fd, ret;. G" D' l3 n  N; j2 v
  50.         e2prom_s_cmd arg;
    / A3 X( m$ q* c5 c$ ]  r& G% E+ j
  51.         unsigned char buf[0x18];) t/ v0 y1 _& ?7 |" E" \
  52. & F) g- X; r8 I/ A  U4 Z0 G  E
  53.         memcpy(buf, mac, 6);
    % R/ ?* R% j* q( z
  54.         memcpy(&buf[6], stbid, 18);
    8 B, H9 ]* Y* Z7 i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 o2 w) s/ k2 u- p, m" X
  56.         if (fd  < 0) {
    " P0 m: N* B, Y. }0 z1 Z2 L
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 y+ ^% z# y$ C3 L
  58.                 return -1;
    ! d. @7 Q; Y7 P. I: I* e% B
  59.         }$ e0 E7 U( o& H. h1 M* }) W
  60.         arg.sub_addr_count      = 2;) E+ o0 T3 q9 k9 E
  61.         arg.data_count          = 0x18;3 o# a+ h, z* \8 h5 s
  62.         arg.e2prom_cmd_sub_addr = 0x290;! D  _/ J" k0 Y3 q/ T& f
  63.         arg.e2prom_cmd_data     = buf;7 [! p+ e: e& {% ?$ c. S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + V3 n5 c: x5 d6 B
  65.         if (ret != 0) {) [; `* N8 q" i" k1 P( b$ x, F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) j1 g4 L6 k& D2 u7 e9 c$ [. J+ w
  67.                 return -1;/ j5 [, O& X* E
  68.         }. s! @3 w  o- L6 b6 G1 G5 K

  69. 9 s3 c& k* M! u$ A5 i
  70.         return 0;9 C; Z9 W9 E9 C& s5 ~1 O
  71. }& @0 V& d! T9 j# d
  72. 0 z# V3 E. E5 K3 f2 y+ m
  73. int main()
      b7 I  c0 p2 s8 c" e* p) v4 J/ P3 q. }
  74. {
    0 A' g# d9 n, J
  75.         char c;& ?! o) s5 f: k9 u! b( T5 K& q: r
  76.         int i, macs[6];* f* x/ L% _# ~
  77.         unsigned char mac[6];
    ) W  d8 k" s5 @9 }
  78.         unsigned char stbid[256];  n! A# A, }; c, ?; B) j, O! o
  79. 4 h4 w$ i2 k3 Q8 _! S+ @9 {- C
  80.         if (readparam(mac, stbid) < 0)
    / l' w& \' {# V0 b8 }
  81.                 return 1;
    3 j: p$ C7 B( r" B7 D

  82. 7 _( ]. M- E1 S) a- ^1 e' n4 @
  83.         printf("Current parameters: \n");
    . s$ f& C8 F7 D! q& n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 g# K2 W4 ~8 |+ E4 @
  85.         printf("  STBID: %s\n", stbid);# u! ?! @6 {+ z4 k* y6 q
  86.         1 [6 x8 _# l: o" ?! |+ _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + y0 Z# G. j6 N) X7 A9 s$ K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 d" K# K5 @# N5 r. w! I0 k. ^
  89.                 printf("Input MAC error\n");. s1 `: k$ v, J9 v# X
  90.                 return 1;7 e- o- M% s" Y; h) y4 d/ @" I
  91.         }7 E  A$ u/ Z2 n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - x$ S: F: G& J; g+ @
  93.         printf("\nPlease input new STBID: ");
    " y6 b4 @/ M) w& p( ~$ i' E
  94.         scanf("%s", stbid);. ~; ?' x5 k' K
  95.         if (strlen(stbid) != 18) {" R' E. o4 {' |, W% h
  96.                 printf("Invalid stbid\n");! Q1 M$ w$ N' m; b1 m/ z; a8 Z
  97.                 return 1;
    . y# f- V7 \+ M2 s" @. T% J- @2 }
  98.         }: T( g7 [4 Q, q+ H- ]; Z) N. H9 p
  99.         printf("\nNew parameters: \n");
    # a. ~1 n0 \0 w! `/ R+ i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& D: T" l. P* m& I3 {7 I9 D, W  y
  101.         printf("  STBID: %s\n", stbid);
    3 c* C" [8 E3 j# A

  102. 8 h4 Q) K0 d8 b' g
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    : ]7 Z  C: n4 i. o( O* L0 g$ b
  104.         for (;;) {
    $ O3 e3 U. o. F+ n
  105.                 c = getchar();
    + B  Z5 W* a) O  s3 [( r
  106.                 if (c == 'y' || c == 'Y')7 }0 X+ Q! M! _. F
  107.                         break;
    3 c; K0 v& j/ e' ^7 b0 Z1 D
  108.                 if (c == 'n' || c == 'N') {, a2 `2 ^+ F0 x1 ^2 y
  109.                         printf("\nAborted.\n");
    9 q  G4 l; I1 }& l3 d
  110.                         return 1;
    - r& z1 H: _( g0 z
  111.                 }
    9 j6 r' x3 w  z9 s- }# k- O' B
  112.         }
    9 a0 }0 L0 l1 @$ f+ L" |
  113.         if (writeparam(mac, stbid) == 0) 8 Q3 `2 a$ u+ k5 L5 A+ V( Z
  114.                 printf("Parameters changed.\n");9 W& j0 y. Y$ z. u% }0 \

  115. . v8 m7 `1 H% e1 X  _, s
  116.         return 0;
    ! O5 M6 n/ }" S% a, r3 }, _" [. i3 I
  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 ) C% v0 y2 M: t/ h$ A6 t  |
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" y: Q+ i* k% Z你用的编译命令行格式是什么?
* u- |# f6 }3 P8 G# m: b& ?6 p$ h" w+ 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客服返回顶部