查看: 17617|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    " a2 G: K! k( N) l& @7 p3 Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & L9 ]+ ^7 e7 G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, ?6 Z) A  ?: G: F, g1 w- k2 Qusage: himr <address> <value>. sample: himr 0x80040000 0x09 s9 q/ v( k8 {7 z% G  A( D
0 g8 A* {( q/ V+ k9 ?# ~$ U6 T" U
2 G  F! Q- g/ ?4 k4 p
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 p; ^3 S, Y6 y, P- L: y
$ n& I% ~1 L1 W* s8 q3 M* ]; ]补充内容 (2012-3-8 09:42):
. |+ |7 K+ t' b  i+ i3 A: Z- jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 U* i0 w% M1 H- O' Q5 V+ r4 @+ U1 Z7 {这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。) m- J. O! f; |, S! F! @9 i

* ^1 K/ _4 {* k, @' ~himr <address> <value>. sample: himr 0x80040000 0x0
" c- d9 t1 T& l3 y7 D. l' g
' ~9 b; P7 A6 x# q9 j: n8 K例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
1 n. F4 z, G8 ?; P9 |. J0 |himr 0x80040000 0x00
9 v' J0 \, n5 ^; x& z" ihimr 0x80040001 0x11% p) d  ]7 R( V' O; O/ l
himr 0x80040002 0x22
- y! l& s# O8 g! `himr 0x80040003 0x33; x9 O# G& ]  Y& t6 R) f
himr 0x80040004 0x44: _# l- f$ J. j2 F3 @
himr 0x80040005 0x55+ S( M: g$ N- R) w0 }
# s- W+ a2 P3 z
SN也是类似。9 s5 R& \# g* \. H& t. m

/ m5 K1 w7 A  k$ }# _5 U5 m6 g现在主要是,谁告诉我们MAC和SN的地址?
8 a; Z' x/ M  {$ ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 ^1 U/ l8 m- r/ Q- ^) O5 I. L
一直想找到运程修改MAC和SN的办法,苦于无解啊
  v. d4 ^9 q) k; W* _/ y6 P+ L
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' y3 E/ F+ ~. [! D

% E/ ~6 U0 j! N  `+ h' q( H修改的代码早有了。到今天不会编译。
2 V! `1 s/ Y( d3 v: W( O需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    . w7 u0 A; o( N6 ~( U# a4 v
  2. #include <malloc.h>
    + t4 {- i0 z( N$ K  K
  3. #include <sys/types.h>
    8 H. Q* p! m# M
  4. #include <sys/stat.h>1 Q/ B% r* F- I* x" n
  5. #include <sys/ioctl.h>1 g) d3 O& r2 I0 F0 `9 n4 w
  6. #include <stdio.h>8 B: K2 q  T+ s. z8 S+ ^9 _8 M
  7. #include <string.h>4 i0 ~  R& p' n% S: y. F
  8. % V) }$ y  c" R6 A- E( Y/ c
  9. typedef struct {/ H% v  s7 w  f$ \1 i1 }2 q5 \
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' `1 x  {9 Q. _0 K  i6 V
  11.         unsigned int        sub_addr_count;
    * w1 R# F. P% n# A1 e* t" u& ?$ Z
  12.         unsigned char*        e2prom_cmd_data;
    # h1 z# a6 Z1 @+ V; Q
  13.         unsigned int        data_count;
    - W; q8 Q) ]$ k  c
  14. } e2prom_s_cmd;9 v0 m' s/ h& i* k

  15. 7 ]# h$ ], x, f
  16. #define E2PROM_CMD_READ 1
    ! b  W- Q. \3 ]( @3 n  P% \
  17. #define E2PROM_CMD_WRITE 2
    / r7 ^% p5 A& Z6 g
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 U0 x) F; V2 ]& v7 o$ h; `7 g
  19. 2 L- ]& W( c8 L3 `' ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)' ^( l! Z$ Z. K2 [' ~
  21. {
    & v! H! r8 d! {+ D: I2 B8 M
  22.         int fd, ret;
      g0 f& i2 \6 y8 _$ d% k1 |
  23.         e2prom_s_cmd arg;/ u1 Q8 I+ x  H$ M7 W, L
  24.         unsigned char buf[0x18];
    * o( G7 Q7 M% N5 j

  25. . T/ ?2 o3 `) k( t3 w( ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + R; z4 G  h6 o. L; A
  27.         if (fd  < 0) {+ S- F. h* V4 y- X) J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* @  _& z' G* p0 {
  29.                 return -1;) E  s( Q; H# Y4 N5 H+ R- w  E2 X
  30.         }
    * [2 M. }, y/ ~" @& s
  31.         arg.sub_addr_count      = 2;
    6 K  n: d/ C, i) x, ~) z5 u, u6 [9 F
  32.         arg.data_count          = 0x18;
    8 j) Y- \, I3 C" p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , i) J" r" W( A: ?7 c/ U4 `
  34.         arg.e2prom_cmd_data     = buf;. @. q$ X- W; K2 P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ X; t0 \% ]- D6 r# K! j
  36.         if (ret != 0) {
    0 \! h3 u9 _1 f. b5 I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ B- h% E$ `9 z. ]/ ?& k
  38.                 return -1;
    # |: N) ]2 v5 @1 c/ C+ O+ V
  39.         }) `! z# }7 @7 K% [
  40.         memcpy(mac, buf, 6);" T( u4 O+ O% G1 X$ H3 n  l7 t
  41.         memcpy(stbid, &buf[6], 18);
    9 i" z* C6 F- L& e  P
  42.         stbid[18] = '\0';- z3 z. Z9 L8 t+ K
  43. ; n0 N: ]& t3 K0 B9 n- V
  44.         return 0;/ f  g2 N/ v! z7 P2 Z/ o
  45. }; K5 I/ Y1 |3 T2 i

  46. ) @) ?# [/ b6 Y) s0 p% c
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ K# V- a! _! q9 n) P
  48. {8 _( G# i& F1 z8 A5 _1 H
  49.         int fd, ret;
    # @; o7 r& E: U% ~
  50.         e2prom_s_cmd arg;2 ?9 r7 ~$ k; r4 E# r0 r
  51.         unsigned char buf[0x18];
    9 @# H9 {8 K; F3 I0 c+ }8 s& @
  52. 6 }* F% s0 t- d' |$ H1 o% {! ]
  53.         memcpy(buf, mac, 6);
    : |1 @0 A7 \% |9 {6 n$ z/ ^1 G: n
  54.         memcpy(&buf[6], stbid, 18);6 s/ b8 M# x, b) c8 Q! \* l+ M# a6 @
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 M7 k2 v; c. W* e
  56.         if (fd  < 0) {. ?: V9 V/ w: p: J- M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : q# _$ b2 X, c* K) ]' ^# T
  58.                 return -1;" s5 A6 m! c: S3 t+ R
  59.         }
    9 Q/ J/ p" _6 _0 S
  60.         arg.sub_addr_count      = 2;
    * w( t+ F; C/ ^4 Z; l; g
  61.         arg.data_count          = 0x18;" S; r8 `  Q4 b
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 e/ _" I: \6 y; A0 E
  63.         arg.e2prom_cmd_data     = buf;
    4 t- ^$ |, ~8 w/ M8 y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , T, I% W( F9 f1 {1 Z6 u, Q
  65.         if (ret != 0) {
    9 u- b* l* P' p6 T* b
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 i3 X8 z: t& f& {: G; v: J) b
  67.                 return -1;
    3 H" N7 q( f. D5 ~' A5 K
  68.         }
    7 p9 }" e2 N) A1 [- i! M
  69. $ R( H3 a8 X1 H& z' [( G  T$ P" ]0 m. |
  70.         return 0;4 w* g! s3 B  m  H; v5 x
  71. }
    , F, n* B  Z) ?% N- d
  72. : }% q' d. ^, i
  73. int main()
    - n7 U1 I8 w  G+ b3 e7 U; j
  74. {- P8 N  A: g0 Q! T) i
  75.         char c;$ w: q: B. x6 `  {! v
  76.         int i, macs[6];
    & ^+ Y: [1 w: V3 q# q
  77.         unsigned char mac[6];
    ! {6 {. C; w) I" G6 g$ I
  78.         unsigned char stbid[256];
    ' s! v4 t: v7 [6 D: L
  79. . ]2 X2 Y0 G" A1 \  v
  80.         if (readparam(mac, stbid) < 0)" E# i) U( l# U1 C, F( }* _
  81.                 return 1;. y5 j9 L: \, @) B

  82. , q3 y- p  ]2 u. N; m- x
  83.         printf("Current parameters: \n");
    , g4 c8 G1 Q. L% [& j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( \1 P* U  r9 @7 ^" I4 Q
  85.         printf("  STBID: %s\n", stbid);
    $ E' s! x3 E. e6 l& l
  86.        
    - ~" n5 Q. N4 F) z$ p# U
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");- T2 O5 S1 T. p3 c" H$ h7 c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) ?& _/ ?! a8 P2 E- I: e* i
  89.                 printf("Input MAC error\n");
    9 v' r( t$ o8 O8 ^
  90.                 return 1;
    4 X0 V2 m$ t0 w: Y% f' {
  91.         }
    , R: W/ G( j3 N' B6 T! n! i" H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( s8 {" E: f2 ~- s5 B
  93.         printf("\nPlease input new STBID: ");
    ( O5 h8 N! z$ X2 ]) t! c
  94.         scanf("%s", stbid);" V) }* V8 I8 F$ V, L* T
  95.         if (strlen(stbid) != 18) {6 P+ u( \+ c9 a5 K0 H7 b8 R0 @
  96.                 printf("Invalid stbid\n");
    $ S1 T7 e7 [- o5 _4 e
  97.                 return 1;) G3 P/ B7 d/ ~
  98.         }
    7 u  l: W+ M$ S5 N: V5 Q
  99.         printf("\nNew parameters: \n");4 F, w' w: \/ o3 q5 d7 |/ Q# O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) ], T1 M/ _' @+ W, w1 j
  101.         printf("  STBID: %s\n", stbid);3 p2 w; R" Z1 f" N1 |

  102. * F. Z3 y( e. ^- i0 h9 L) Z
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ! F# F. x' V  Y5 B4 ^1 \) i
  104.         for (;;) {
    * @1 P$ X. f0 |' h! `
  105.                 c = getchar();
    4 O3 W/ j( f/ ?% T) f: ], \; m
  106.                 if (c == 'y' || c == 'Y')* v. {) N9 a: d6 D; r# g2 q; Y
  107.                         break;
    - Q; w' H. }. T4 ^( ^" W
  108.                 if (c == 'n' || c == 'N') {, B1 u# F3 o3 g
  109.                         printf("\nAborted.\n");/ p% G* x' F7 I2 V* i8 p
  110.                         return 1;
    0 y; s: ?- I. D
  111.                 }
    - K! Q  {' A* d. f0 j4 c
  112.         }
    9 r- X1 C- B  ?0 D7 d9 e
  113.         if (writeparam(mac, stbid) == 0)
    ! c3 R8 g  I+ Q
  114.                 printf("Parameters changed.\n");
    ) x$ s- i' f8 _; u
  115. ) f3 K" @, m1 }2 G, T( n0 u! G
  116.         return 0;9 W: m5 T. \# j9 \  |: P
  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 ; i1 d7 J6 w/ H4 A' l
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 |7 m! Z# \% A* Y1 P
你用的编译命令行格式是什么?
/ |+ n, L6 ~' B  r+ D
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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