查看: 16412|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - Z, P6 Y5 G+ p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 d  r, V: y" J2 ~
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* \8 ~& A+ w& j  y" b5 e( b8 w
usage: himr <address> <value>. sample: himr 0x80040000 0x08 J8 s$ s+ B# e( n% I  Y! @
9 ?4 ^5 D9 Q+ s0 J

0 e5 J  f2 n" E不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# p) ^; a- _/ Z- Q) @; l+ V# N: G3 J8 Q. E
补充内容 (2012-3-8 09:42):
+ H' k; B6 H, C- q- E* f  `+ v$ zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数8 N6 T, |& B0 s3 V% B3 t% l  C% Y+ O
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
3 Y% u+ p! z/ u; Q$ ^8 h* i
4 A$ ^+ n* @) e' K  ?% ihimr <address> <value>. sample: himr 0x80040000 0x0; y( E* t' y, |$ h( d! ]0 I
* G( @* D1 I! o( j
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- K* u) k& Z- c1 ?5 F; z( w' n8 }% N
himr 0x80040000 0x007 ~# C7 b" W/ n* y/ p, Y. x+ R
himr 0x80040001 0x11
/ x3 i7 Q- e# Phimr 0x80040002 0x220 ]4 ?" U2 b/ N$ Y, H
himr 0x80040003 0x33
9 X5 S& x9 b& j* J% }& d! ihimr 0x80040004 0x44
1 d3 }+ J, e6 Z2 r* ahimr 0x80040005 0x55
# [- `3 J$ r  M3 _9 U2 o# o
6 z& p# f7 |( m7 I+ V" FSN也是类似。$ F' g5 ?; i" ]8 W. A  P' d2 S0 c

; H* Z/ t9 ~7 k, L& \6 s" k现在主要是,谁告诉我们MAC和SN的地址?! k+ u1 S- z( T, u3 E8 z
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% ^8 [- ^* `) ^. ^: B一直想找到运程修改MAC和SN的办法,苦于无解啊
$ q! z- s8 {! W
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . d" f5 {5 D3 i4 q" Y: a

6 s! l! }! c2 t5 }修改的代码早有了。到今天不会编译。
6 G5 Y8 @4 e# a" ]" |' n3 L6 |- X需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - |8 G( M! M0 v2 x. w
  2. #include <malloc.h>0 K" ]- _( n9 i. m) F
  3. #include <sys/types.h>) m; h5 p( e- k5 Q( q+ M
  4. #include <sys/stat.h>
    # X# \9 {+ B; m! ?6 _
  5. #include <sys/ioctl.h>
    / m# N9 K" E9 M9 b$ E) N
  6. #include <stdio.h>
    ( n$ A8 k6 m7 A8 |0 i
  7. #include <string.h>9 A4 M; J5 Z+ Z; z6 H7 M" f
  8. 3 }: _& p+ l, r
  9. typedef struct {- t2 N7 k2 r% _% c5 w- H
  10.         unsigned int        e2prom_cmd_sub_addr;: _4 x% a: W& ~" A) `
  11.         unsigned int        sub_addr_count;7 S0 ], g1 {! P, n9 G$ J' A
  12.         unsigned char*        e2prom_cmd_data;' @8 u+ n' Z# z  c/ t! u0 B: C8 Z. T
  13.         unsigned int        data_count;1 S( q+ Q- k. d
  14. } e2prom_s_cmd;
    4 E4 h2 d& j7 }/ Y4 b" L& ?
  15.   n. e" C  e; M, L! s
  16. #define E2PROM_CMD_READ 1
    # B$ I5 t7 y8 E( [, H4 D, ~
  17. #define E2PROM_CMD_WRITE 2
    ) ]/ ]# h  m/ I/ w' T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( h) G8 c5 N4 d: j
  19. ; A! G9 I3 k9 A, O7 d" d1 l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ ]$ f, H* y+ J
  21. {
    2 L! C! G7 ~4 f
  22.         int fd, ret;
      Y1 x0 J/ D1 S  V  a( u) z
  23.         e2prom_s_cmd arg;8 J6 `9 {4 }# Z1 r& z" k8 x
  24.         unsigned char buf[0x18];& X6 i) b" \- e
  25. 5 W  N' z1 N3 z8 I+ a8 h* V: M
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 V% F& k. i% O) {; l4 V- }+ b
  27.         if (fd  < 0) {1 O& E0 e4 [+ N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * G# n* q. U6 x7 H
  29.                 return -1;2 I2 t* {9 A& Q, J! F1 w7 K
  30.         }
    ' w. T( z. o0 ]* I1 ]
  31.         arg.sub_addr_count      = 2;8 @+ q" Y; S, S% m' @
  32.         arg.data_count          = 0x18;
    , t5 L. p+ A# j* U# J" j! N$ P
  33.         arg.e2prom_cmd_sub_addr = 0x290;5 y* u4 Y% M/ }& _8 ^6 Z& Q7 t
  34.         arg.e2prom_cmd_data     = buf;1 l7 e$ d; k) s" P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, v/ H) L; }$ s
  36.         if (ret != 0) {( o4 Q9 `; L+ ~5 G1 _, U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ a/ ^1 ?: H  s# C: I
  38.                 return -1;
    % Z9 z! D+ f- b% }. g$ T2 X2 N! b) }; N
  39.         }
    9 a$ ]4 @* p) d
  40.         memcpy(mac, buf, 6);
    ! ^9 G, \# A; X" D% y
  41.         memcpy(stbid, &buf[6], 18);9 J5 v, w$ e0 R; b6 ]% P2 m
  42.         stbid[18] = '\0';
    5 W4 W# `# v& k2 U
  43. 3 A$ Y8 d; Y, M' d3 q2 W  i! a
  44.         return 0;+ y( v* @; [7 f2 \# Z$ E# \: w
  45. }
    $ y( |6 y* ]; e$ S8 K

  46. & S- H5 I/ a3 x) `* Z0 }3 Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 I! Y% J4 C% l+ w
  48. {
    ( N3 H7 s- p5 l) \) {. N* n8 F# F7 }
  49.         int fd, ret;
    + e2 l6 G: p% v; y! k
  50.         e2prom_s_cmd arg;
    ! F1 G, T; B  a7 x
  51.         unsigned char buf[0x18];3 g2 a4 E  z% E+ }% _

  52. $ C# g% v, h, e# m: Y
  53.         memcpy(buf, mac, 6);
    ; r9 R3 l- {7 Y/ ]8 E) Y
  54.         memcpy(&buf[6], stbid, 18);
    1 U  c: S1 e5 m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    + Z2 {, I/ a) v) o/ r( a
  56.         if (fd  < 0) {8 Y/ Z' k1 o: r' T- l$ V5 W7 V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( V( }5 r5 d$ u$ b
  58.                 return -1;
    ( W* x) _1 a1 n; ^, Y0 v1 c
  59.         }1 I7 [# q3 W2 i# j. D; q0 J
  60.         arg.sub_addr_count      = 2;: u0 J, b( d" {0 i8 e
  61.         arg.data_count          = 0x18;" C! K7 w3 }1 l; Q: O# |$ N0 S
  62.         arg.e2prom_cmd_sub_addr = 0x290;: H1 s% m; O! p
  63.         arg.e2prom_cmd_data     = buf;4 h! \& j6 S& e
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - M8 ]; t/ O1 q/ F/ s  `+ O2 [
  65.         if (ret != 0) {9 o' B( M5 R( w8 m: q; u' _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: t/ ^' n& y% x3 K5 k* d
  67.                 return -1;
    0 b! O2 G% e3 P) B
  68.         }# Q, Z/ h: r+ E; b; n
  69. ! F4 k+ I& r# X
  70.         return 0;2 i; w1 V7 e$ H( ^$ l
  71. }
    ; E9 o! f+ s: _& T! G( T5 o+ m  a1 T% Y

  72. 7 I* ?1 k9 G) ^; C6 S: \# ?
  73. int main()8 h' f% D' y, ]+ m2 a5 `4 j/ a8 M2 R
  74. {
    . ^7 g/ f. j. ~) U0 ?8 Z/ {
  75.         char c;& u9 f8 F9 K  h2 B1 i' \
  76.         int i, macs[6];
    9 {( f! h/ m7 d- x' J, [# z
  77.         unsigned char mac[6];0 v; r+ ?2 Z0 Q5 g, b1 X
  78.         unsigned char stbid[256];( k& v$ r2 K! E: h: \, S: r0 P

  79. ! i4 U4 r" m3 p' t- b+ h& [
  80.         if (readparam(mac, stbid) < 0)
    0 c5 v3 N3 C2 I# `
  81.                 return 1;
    * A/ W5 I- o) {' }2 m# l
  82. 2 `0 d# t  K1 [- y7 n& ]
  83.         printf("Current parameters: \n");. P& G+ M" w! @# Y  S' k4 i- f6 ^# K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 G8 v( h0 ~' y8 r; c5 r
  85.         printf("  STBID: %s\n", stbid);
    ( Z0 Y4 ]- n7 @5 V
  86.        
    ) g4 h/ T) O3 ^7 r" j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 U. C5 G8 i. h, c' {# b/ @5 a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : {2 ^" A, b. {2 A# m3 D
  89.                 printf("Input MAC error\n");
    , k0 `8 D! t" t, E. r$ A
  90.                 return 1;( n4 R6 K0 u' z/ j' h. D% a& S- ?) ]
  91.         }
    + ~  R+ l3 g! [1 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . f6 x- \4 B5 `/ h; Z( E, z
  93.         printf("\nPlease input new STBID: ");
    0 W6 y: R- e5 `0 g, ^
  94.         scanf("%s", stbid);5 e) b& U; I! U. `; e
  95.         if (strlen(stbid) != 18) {
    ; O: m# U5 h; F3 z- U" ~; T8 b: x4 t
  96.                 printf("Invalid stbid\n");7 |  [6 C$ i- u7 Z3 D
  97.                 return 1;6 b( k2 y- s5 u; n' O* x
  98.         }
    / S% B3 r. O8 j. I
  99.         printf("\nNew parameters: \n");0 U7 C9 z7 Y  q( e& r, ?9 p# j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " k- k" _! G0 i8 U' P
  101.         printf("  STBID: %s\n", stbid);
    # J* a. V, n% U* H# J

  102. 0 A& \- u3 y+ r
  103.         printf("\nDo you want to change paramemters? (y/N) ");: B( j+ h5 ^' o/ r# ?
  104.         for (;;) {
    ; h0 p# z- @( y( n: @# }7 y
  105.                 c = getchar();; \% c& J# ^, D( H; X
  106.                 if (c == 'y' || c == 'Y')
    ; P8 M7 @6 ^9 w' V
  107.                         break;5 A) v/ J9 e* ?* ?
  108.                 if (c == 'n' || c == 'N') {
    8 F8 v. N+ N) c9 H, e
  109.                         printf("\nAborted.\n");$ W+ [0 @  a1 ^' p1 ^2 Y2 c+ A, H
  110.                         return 1;
    ' \* \/ S4 b8 E/ F  n' o; X3 S
  111.                 }
    - L# b1 _4 m; u) A/ w+ s
  112.         }9 {) t4 I* ~( m+ y! ~
  113.         if (writeparam(mac, stbid) == 0)
    + f4 K4 P  H% F
  114.                 printf("Parameters changed.\n");
    6 J% w+ b6 h: L

  115. ) s# O+ s  X  x* ^
  116.         return 0;
    0 G. B# b1 ^" G$ z
  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
( n$ l1 W9 s# _  H& ]$ N; p; t在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" ~' n9 s! P/ W
你用的编译命令行格式是什么?
" |* G9 Q% H! p7 p' j
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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