查看: 16531|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 S- P3 _: O  t; M5 k/ I; f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 G" {1 o2 Z: B6 V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
7 i# c2 c* m0 K! \/ x; jusage: himr <address> <value>. sample: himr 0x80040000 0x01 N2 \& ^( J# ]  _5 q* s9 m! G

, X+ S1 R: U/ l9 q0 D. p4 Q0 r( \/ n, X( v
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# @1 S& ^% M, ]$ i; ?
. Q' Y5 Q: e( n; T: O
补充内容 (2012-3-8 09:42):. \& G+ ?1 D& y8 \1 L5 H
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( x$ r1 G; W  @  k1 f! ?. Y: r
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
& r: a: Q, ~0 S# L" h! s% o3 v+ V7 ^5 g7 P% z5 m$ z
himr <address> <value>. sample: himr 0x80040000 0x0
, S6 F" r8 F' @2 ~( ^% _9 M$ M& @" }2 m0 E" u3 f
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ ~+ v; s& M4 v! ^! ]8 }himr 0x80040000 0x00
# U4 b% H: h& U3 `+ J& W) t9 Vhimr 0x80040001 0x11; Q6 Y/ t) |# ~4 q! z
himr 0x80040002 0x22$ T$ T% ~* T! A% Z. B* y
himr 0x80040003 0x33
, j* g7 a# P0 p" o) t& a: vhimr 0x80040004 0x44
9 u& @+ u- T0 B( X  F8 ?& whimr 0x80040005 0x55
" e1 C; i6 {" a* b/ U" [
) f2 F9 K' z( ^SN也是类似。
0 T& H2 G# x; C2 x7 Q: {+ E% a9 w4 E' c; N1 \  i0 G
现在主要是,谁告诉我们MAC和SN的地址?6 f; W! W: M( n/ R& e, @% A7 h
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( t4 d/ N/ p8 \, E1 y! E" W, p一直想找到运程修改MAC和SN的办法,苦于无解啊
- J8 U2 ^, Y! Q1 e
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " E& E0 c$ Z9 S$ [

+ V7 L. @0 @3 I& u修改的代码早有了。到今天不会编译。
0 Q# G$ O/ c: }9 z. z, z7 u, Z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 k# o' I/ |( H. ]- T+ K+ o
  2. #include <malloc.h>
    1 o/ o$ w3 r# L
  3. #include <sys/types.h>  N. _) y" N% `8 y: x2 i$ q2 \- C9 w
  4. #include <sys/stat.h>
    - P' L1 r* f- _& W) b
  5. #include <sys/ioctl.h>
    ( L9 {6 o- ~+ M, w. D, X2 o) }1 }
  6. #include <stdio.h>" Z  j7 o. M$ I8 U- I) q" R  U0 l
  7. #include <string.h>
      g% D" E0 K1 a; {& k7 A

  8. $ u7 Z. g6 T' h" g( s
  9. typedef struct {8 [* c9 q8 }3 M5 F/ f3 H
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 l2 D! H  E* q) p
  11.         unsigned int        sub_addr_count;
    , B  I! k% K7 R3 P
  12.         unsigned char*        e2prom_cmd_data;' i( D5 [) |+ h6 I6 q9 U# U
  13.         unsigned int        data_count;
    4 K/ V& N2 E! W9 r2 i
  14. } e2prom_s_cmd;
    - h+ U& r* C, ~3 l# b7 y) [
  15. " H# s  ~: k, q. a1 S
  16. #define E2PROM_CMD_READ 19 x1 B4 ]+ t1 Q8 s* E+ W3 ?6 V
  17. #define E2PROM_CMD_WRITE 2+ w7 ~, a# A, r) u* d1 C8 T8 G; k
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - N$ |4 P$ L) K3 z/ A) ?

  19. - u" X+ i0 N& H+ K; |1 ~4 l  l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      o/ d0 x- w5 W1 ?5 v# w
  21. {
    ' f4 G) ^; t  H3 n- q
  22.         int fd, ret;/ u( Q# b4 g0 i4 B- w$ a
  23.         e2prom_s_cmd arg;+ t; c1 W& s/ b! A
  24.         unsigned char buf[0x18];
    / w* n8 N- P: K* |  Q

  25. 5 o8 f7 s- ^2 y, P  }8 }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . t' Y( p5 |# C
  27.         if (fd  < 0) {
    1 I7 _) f6 O7 {) q- \& f: _- m5 q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 m% f: y( E- O  U8 ^2 a% b: v0 h
  29.                 return -1;
    7 J1 g- O- y7 s, q$ E% \1 [4 o
  30.         }: `& c) w( e. W: v, K. v/ ]
  31.         arg.sub_addr_count      = 2;
    2 v) B: U! @1 |# Y3 \8 R- Y9 B0 {
  32.         arg.data_count          = 0x18;& D8 C1 `7 ^0 u- G" @# N2 I
  33.         arg.e2prom_cmd_sub_addr = 0x290;' r0 q1 u7 f6 }# Z4 o/ q
  34.         arg.e2prom_cmd_data     = buf;
    " J0 d% b1 f  }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% B) c- U, ^9 _5 U
  36.         if (ret != 0) {
    3 m+ B- ]8 T2 q& F, W) G9 ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 n! K+ L6 p( Q+ j/ r' H
  38.                 return -1;5 R& Y. r& L/ C: ~4 t5 i& D0 W" E
  39.         }, `6 e8 p6 O5 ~! r9 E( J  E' ^
  40.         memcpy(mac, buf, 6);4 B$ s! f, E. {
  41.         memcpy(stbid, &buf[6], 18);' E$ p" T) S  ?8 ?! G
  42.         stbid[18] = '\0';
    % G" I7 p( y' R+ O: }$ r4 V- {
  43. $ c2 Y! Q$ M8 B2 P: `% W
  44.         return 0;
    6 _5 [7 @, W- z. \9 r. u
  45. }
    6 L9 T9 ]) A* V
  46. + N* y' Y5 r- [; I/ x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 @. {8 E- o+ U$ |
  48. {
      O8 X$ H2 k0 X: {2 M- B
  49.         int fd, ret;) Y: Z- e- c/ G2 V4 N2 e- {$ u
  50.         e2prom_s_cmd arg;$ x5 U7 ~( Y; ?) A( s) R
  51.         unsigned char buf[0x18];
    ! w% O! `( v' ]' G! W4 `2 x& W8 W; S0 ]& f
  52. 0 ~4 L7 R( l* E5 P9 T+ ~% h
  53.         memcpy(buf, mac, 6);
    ' S/ {  W0 o1 Y5 ]( i) M- n
  54.         memcpy(&buf[6], stbid, 18);
    , R4 P) P, i( \: T) S( X8 R% R, x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : U: q! E& T) p/ ]' g( J
  56.         if (fd  < 0) {
    7 R9 j* o& W5 M5 J4 N5 P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % ]+ f- R2 g3 {
  58.                 return -1;( D8 Q/ J, z! p* ?; X% p
  59.         }; J0 J) f7 H) y) G8 Q  M
  60.         arg.sub_addr_count      = 2;2 A( l; |' V6 I: [, s8 f, V( c# m
  61.         arg.data_count          = 0x18;$ ?0 P2 W9 P" v- p2 l
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( Z5 }0 `0 a# `9 G1 p# |9 V
  63.         arg.e2prom_cmd_data     = buf;# T& K( r# l4 \5 }4 T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: F& f/ m# i0 S9 c' j. d; g
  65.         if (ret != 0) {- Q8 O) C+ Q! r" O! D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* I) g. V2 N5 x$ D: H/ d  `% H
  67.                 return -1;: u5 F2 _! o; D* q
  68.         }
    - V* ^% R9 ?- U) i3 L; [7 V) s

  69. . C) j7 m* {; c: j* ^
  70.         return 0;
    : ~! ]8 \, N2 U7 ^& r
  71. }
    7 G/ b& ~7 o$ G

  72. & h/ F& R, A; D, M# Q8 K
  73. int main()
    + R% K) u5 \  ~- j; ]5 w6 `# v
  74. {
    3 }' p7 [) ~0 x8 B/ w5 k$ ~0 v
  75.         char c;
    " E& F% d6 }$ |$ t
  76.         int i, macs[6];
    2 [+ k/ h+ w8 p- `6 `6 r
  77.         unsigned char mac[6];1 z' M7 p6 v# v4 G
  78.         unsigned char stbid[256];
    . z; R$ @& L% r* a

  79. " _' L; u5 S/ F# v3 g3 W4 d$ k/ ^
  80.         if (readparam(mac, stbid) < 0)
    + V9 Y% J8 b0 T2 p
  81.                 return 1;7 A. C1 _) k" D* ]+ k$ V

  82. 8 U/ l3 X  Q! L+ ~, D2 w4 }8 T7 O
  83.         printf("Current parameters: \n");& T( H' s, _0 V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 Q9 \6 e5 y* b) p+ j* h
  85.         printf("  STBID: %s\n", stbid);
    1 p% ~5 M# m+ v0 D
  86.        
    ) }  b/ Z9 V, Y. z( @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 g0 W4 P8 {. M' \: p1 _% e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 ~, r+ _0 ~  b( T( W
  89.                 printf("Input MAC error\n");) G: i9 ?# c9 e$ o. n
  90.                 return 1;
    & F" Y3 t, F; `
  91.         }
    & O  b: E/ V/ q# t/ g& V1 I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( l$ Q/ T9 R, j/ w* k0 _) \# W8 U$ H
  93.         printf("\nPlease input new STBID: ");
    . R( ~/ e" q& y( _- b
  94.         scanf("%s", stbid);- B& G) Y% F3 Q% d  w- j+ E- B! B9 y% |# G
  95.         if (strlen(stbid) != 18) {
    + J6 i! J" U2 z" C4 ^  k
  96.                 printf("Invalid stbid\n");% S+ Y% _; h4 r2 Q# ~
  97.                 return 1;6 P8 R7 h2 f3 x# D$ V6 @
  98.         }) o2 W8 t2 C% |
  99.         printf("\nNew parameters: \n");: M3 G- I  l5 v$ m- D" l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) @( ^$ y0 n/ D# e
  101.         printf("  STBID: %s\n", stbid);
    / K7 F( E, p$ p0 ~* A7 Z

  102. % f: ]) y+ h, Y" F# S; h5 o
  103.         printf("\nDo you want to change paramemters? (y/N) ");& l( [) V+ u( A# y9 n5 x
  104.         for (;;) {
    / Y, N  Y/ T0 D( i1 b
  105.                 c = getchar();4 b1 ^8 @! i% b* ^$ W) z
  106.                 if (c == 'y' || c == 'Y')
    . g- ^0 o. y4 E# a6 X8 Q$ }- W% b8 l
  107.                         break;
    8 x' B  P$ M3 k! v
  108.                 if (c == 'n' || c == 'N') {
    ) Q: }6 t( b# u% q3 w) a- q
  109.                         printf("\nAborted.\n");
    / u, ?3 }0 U6 Z; y, z  `; {5 o. I" D
  110.                         return 1;
    3 O$ N7 e7 V  F% }
  111.                 }
    1 {( J8 p. l- X) Y$ f% c4 J
  112.         }
    & ]! Z. c8 `5 B- {2 N' y
  113.         if (writeparam(mac, stbid) == 0) % Y0 Y/ w% q7 B4 }
  114.                 printf("Parameters changed.\n");$ S2 J& n# j2 v9 B. h1 H1 T4 m

  115. ! K. s) P1 ^8 N) X) \4 i
  116.         return 0;3 e; J! P9 J+ l6 I$ i% T  M9 g, n
  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 % ?# M2 ~/ T$ E; e# Q0 J0 L
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 M9 k, w2 @& y5 p! d
你用的编译命令行格式是什么?' f9 U: [' t5 Q4 {& Z8 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客服返回顶部