查看: 17626|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" E1 ~9 w' N- u- u) L3 J
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  v8 I% R" ]0 m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 x/ s8 j  J( i, Xusage: himr <address> <value>. sample: himr 0x80040000 0x0
- y, m% ?$ R7 F: K0 M& I
9 D  ^2 w- o, N) x/ ?0 S5 H6 ?% V5 u" ~5 u6 Y
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ d5 Y/ k9 E+ h/ o% D

/ M3 p0 e$ v1 N* y$ s2 ]/ y补充内容 (2012-3-8 09:42):$ t+ u* ^# R* Q4 I8 k" ~
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
2 O1 P9 n, s: v5 a这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。  f. L( L9 W6 G9 m0 B
1 Y$ g0 w# T8 ~7 M. g
himr <address> <value>. sample: himr 0x80040000 0x0
6 M9 C' o% e& }! t% B
9 ?9 W( y: G3 e7 M例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 }6 I. S8 a8 e3 w$ A" xhimr 0x80040000 0x00
" S7 m. q( `0 @) ?- z* w  dhimr 0x80040001 0x11, A7 u; ?  I. M2 J% I
himr 0x80040002 0x22
6 I; a6 r$ D& z7 m- X/ t1 K8 H$ ahimr 0x80040003 0x33
! L5 y- l$ g6 j0 D8 O4 f$ Chimr 0x80040004 0x44+ R: Y# ~9 M2 j
himr 0x80040005 0x550 }6 R. [: ]8 ^' }6 @2 v- n

4 c6 @2 a- C2 |- G. b  c! y, @SN也是类似。" j( R7 N0 n+ i  F$ }, F) x
$ Q* d1 ~' q$ U# f# _, \  `8 X
现在主要是,谁告诉我们MAC和SN的地址?8 c+ [5 {. ^- F2 [  ?( M: {4 b
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
4 {2 _% J6 L: r' l0 H9 E9 B/ `5 y一直想找到运程修改MAC和SN的办法,苦于无解啊
4 X3 u5 A2 Z% I7 j
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & X9 C$ {8 `3 `, C  @  S$ j
! |3 s6 J! T% i/ I4 z/ `7 D* O
修改的代码早有了。到今天不会编译。, W1 r# V6 g8 F: a, u8 C' F
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " X; ~/ u3 K9 L+ p
  2. #include <malloc.h>6 c! E- Z1 D2 L% L3 m: s# _
  3. #include <sys/types.h>
    ; \2 R) ~5 [8 ~9 P' L# x0 c$ w) i
  4. #include <sys/stat.h>
      ]( I, X# |" Q! ^; u/ ^+ K
  5. #include <sys/ioctl.h>
    + i. u/ s& Z6 E+ w: i* K( U
  6. #include <stdio.h>2 e' u! A! M' }, x; X
  7. #include <string.h>
    + p: y( u: h4 y3 a+ q, g. x

  8. / _, x5 T" Z0 _- v8 r$ \% a
  9. typedef struct {- w* f/ v5 z2 q  }4 F
  10.         unsigned int        e2prom_cmd_sub_addr;7 G$ g6 ]$ B  }4 a) x# @/ C
  11.         unsigned int        sub_addr_count;
    ' b4 x* z) V: Y7 Z
  12.         unsigned char*        e2prom_cmd_data;( }" W2 ~& I$ X: d. y. M' a- o0 |
  13.         unsigned int        data_count;
    ) g- u/ }- V% v8 t0 p
  14. } e2prom_s_cmd;" K4 t, r1 d- D2 ]8 A
  15. 5 ?' k( Q, y- ?$ Q5 n4 D; c- c6 I
  16. #define E2PROM_CMD_READ 1( A# C( v8 ^- `
  17. #define E2PROM_CMD_WRITE 26 ]4 n* [# L7 O0 \$ {1 `; Q  F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ J& E' a5 M; u2 i

  19.   x* u. ~  D6 l5 r9 r. L% ]; E& l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 Z* r1 Z) }$ R6 q
  21. {; |" o) q" M: d# T, o* a
  22.         int fd, ret;- s( K1 _( s: L8 A/ a& x+ Y
  23.         e2prom_s_cmd arg;
    ! z  `" Y( ^8 X% b6 |" e
  24.         unsigned char buf[0x18];( _; r6 N& Z4 Z3 u0 ^

  25. ( W; S+ B! O, U  |( }$ Z/ M( f
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' F0 Z6 s8 [9 |0 L
  27.         if (fd  < 0) {
    " C1 w* K" z0 V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & u1 A6 N& d) W* e. q9 I- F3 x2 l5 f
  29.                 return -1;! U- a/ @: Q  _, G* R
  30.         }" R3 V6 c2 ~7 {0 u9 ?7 i$ ~
  31.         arg.sub_addr_count      = 2;; `1 O$ o- R+ e' S
  32.         arg.data_count          = 0x18;8 f' h4 ~1 i- P+ F
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 a; {; Z' b9 W8 Y2 O
  34.         arg.e2prom_cmd_data     = buf;
    9 T+ |1 g8 W9 U! j$ w( L- z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 h6 l; I; E0 w( J; s
  36.         if (ret != 0) {
    ( M# e5 p: Z2 C- h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# S- V0 r. j- f1 q. v( p7 T9 r9 A
  38.                 return -1;5 e0 u; m8 s# w& t
  39.         }
    & @& K/ z/ w# j! }: A. C! s
  40.         memcpy(mac, buf, 6);
    - G) z7 q- Y( b! n$ f" u
  41.         memcpy(stbid, &buf[6], 18);) ^: |4 {, B7 ~8 v
  42.         stbid[18] = '\0';/ N; `8 d; B1 p
  43. - F1 D0 R  Y# X! V# i" z
  44.         return 0;( W8 b# c1 L1 w7 Q; T; A' ?2 ?
  45. }* v# w' N2 ~1 Z1 C% K" g
  46. ( D  m1 x$ y9 v6 v: l- |: G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    8 C" I5 q; s+ ]9 c( d
  48. {
    / Y1 V1 R8 @7 S$ f' S# X
  49.         int fd, ret;7 t/ k8 a+ s9 B) v" m; Z6 }
  50.         e2prom_s_cmd arg;
    3 M" B. D! x2 Q4 F1 V( ]  z
  51.         unsigned char buf[0x18];
    . ]( i2 ]. V1 E9 v& `8 y; m
  52. ( s8 f% ]) A3 D. T% O
  53.         memcpy(buf, mac, 6);
    5 [7 h$ p' e) U* k7 x! A0 y
  54.         memcpy(&buf[6], stbid, 18);& B( f) ?5 D/ e( ~( }4 m: @$ C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" r0 k% D: o- Z' c; r7 _
  56.         if (fd  < 0) {) Z1 g% f* k4 Z' M" A& L
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( l0 Q6 B8 V# a2 e2 @8 w# R' x; l
  58.                 return -1;
    + _  n8 O) z' `. l# [3 n* }
  59.         }: f' j* ~8 y! `, D/ x9 X' p
  60.         arg.sub_addr_count      = 2;
    ' Z, R, `: ?, q- |" g5 _% w5 i
  61.         arg.data_count          = 0x18;" W* D( a. m' c4 u
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % S6 h+ v9 p! W8 _5 q
  63.         arg.e2prom_cmd_data     = buf;
    ( |7 W# w7 Y. a3 a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 j4 M/ L% m, b! b# T
  65.         if (ret != 0) {
    " j3 z0 y- R+ r% z* ~  p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: M! j0 |( X: Q# N% d9 T  y
  67.                 return -1;
    6 w  J  N. r3 K5 Q. F) z
  68.         }
    & u# f' @5 k; b6 y; Z" i) V

  69. , d% f$ X6 |. |! G
  70.         return 0;
    4 ~0 e; Q! k% r, \9 D$ u- f
  71. }. o# |& k4 p. p. Y' s
  72. ' Q5 p' B0 [2 C/ g. v$ Y' c
  73. int main()
      z/ E+ }; e3 [9 j. P7 f
  74. {8 Y7 C+ u  O% v2 ]0 g+ ~
  75.         char c;
    - ]. A  a) J1 x2 l/ n& L
  76.         int i, macs[6];& k  F; e+ v9 F/ M/ `$ d
  77.         unsigned char mac[6];
    . n* e7 _* m% W, P6 k
  78.         unsigned char stbid[256];
    # w) T. }! }% ?& w: b
  79. * z; p8 y6 S. g- W% O6 w
  80.         if (readparam(mac, stbid) < 0); z: |4 h, j7 b& ~1 E3 p( c
  81.                 return 1;
    - G  @5 [  J' q9 t& `; H' `

  82. + h0 W% h; T# q& F
  83.         printf("Current parameters: \n");
    + A# u0 F9 p5 {1 \& K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 q  Z/ s1 i3 b$ d$ f" ^. E
  85.         printf("  STBID: %s\n", stbid);
    # c4 V' ^% D: y( @: a+ B
  86.         7 O' [8 l. F/ W! D2 w6 i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    " s$ I; q; \& b& }; M  i$ ~# v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  i) U) M9 y  P; W$ J$ u
  89.                 printf("Input MAC error\n");
    6 `3 q: T3 r  l0 S: e
  90.                 return 1;
    " O4 Y3 K4 t% i4 U
  91.         }- j$ ?( r& A: u' [; g) V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 j  R- \! {. U, J1 _0 O
  93.         printf("\nPlease input new STBID: ");# d$ Q1 W8 w; T0 \* D3 f0 B
  94.         scanf("%s", stbid);/ ?5 x% N7 e! v0 M
  95.         if (strlen(stbid) != 18) {
    9 i3 w; A+ O3 V- D
  96.                 printf("Invalid stbid\n");* K" Z- t1 c0 z( a; ~% M3 o
  97.                 return 1;
    & R5 t4 w) {" ?& F/ X! V' l
  98.         }  V9 p; U: d( _$ ?6 k- S' r# n8 B/ _
  99.         printf("\nNew parameters: \n");
    4 }: {: I# t4 G0 U6 I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . [4 V' D, Z$ t* w" ^
  101.         printf("  STBID: %s\n", stbid);7 ~- q9 d" }- k; n- l: ?4 [+ A' E
  102. 9 _" |- J- f5 P: U5 G$ M
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / t: J' _, m2 d+ M
  104.         for (;;) {
    % E) b: ^) |# N  Z! `7 K3 M
  105.                 c = getchar();
    # d9 a) C- m: r1 ~/ e
  106.                 if (c == 'y' || c == 'Y')
    + X& P3 j, y/ c8 _  L$ Q- w
  107.                         break;
    0 ?3 d# r, T: y9 w; F
  108.                 if (c == 'n' || c == 'N') {
    4 |* J& B- A$ i# \
  109.                         printf("\nAborted.\n");; w) M+ A0 c2 f  e: V9 @6 @" D
  110.                         return 1;+ [; N# D; S$ d+ s$ \6 Q; X
  111.                 }
    4 a2 X) P1 Q/ T: M
  112.         }: ~1 a( o1 C6 Y5 U7 Y" A
  113.         if (writeparam(mac, stbid) == 0)
    * U9 x8 ~2 ?9 N0 K
  114.                 printf("Parameters changed.\n");, l! V! \) [0 N7 y, }9 R2 j

  115. - ]) a% M  F% H3 x# l
  116.         return 0;
    - \1 }# @/ Q: F& J" V
  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
9 k6 j' j8 [  x( D5 N( a在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
$ V: f0 L$ |8 G- I. T, ^) }& a
你用的编译命令行格式是什么?+ i' d8 _. ]6 J2 z' 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客服返回顶部