查看: 16710|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  R8 h3 M/ z1 G' X0 u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 T; c: j+ J( e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 D7 q5 j% `/ B4 u+ L; Cusage: himr <address> <value>. sample: himr 0x80040000 0x05 a, @/ r% I- Y" L# `* T6 _! |
+ c( b5 z" ^8 F/ e6 B9 W9 o# \, f
$ x- ^1 }" N* V
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, v0 j3 h6 q3 d( a5 E8 p) \8 X

! O, t. `% ]; u  `+ Z6 N6 s" v补充内容 (2012-3-8 09:42):3 G! L6 p$ h* T- T6 i" U
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数& ~% V5 {! \( j$ o& v3 _
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- G. H8 ?# H' R) U
5 ^- `( ^/ U+ o2 {) P( _6 Y/ S1 G
himr <address> <value>. sample: himr 0x80040000 0x0
+ W: E: ^5 v" J" O  E* _$ }6 L7 x
& B1 h8 M" y( d* ~例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 R. U$ |' }3 @/ P( q
himr 0x80040000 0x00: a; H3 {9 f* G0 Y7 @7 j' Z
himr 0x80040001 0x11
4 R' z) s$ {& @& {: f: B. mhimr 0x80040002 0x227 S. P9 t: e8 @' N2 I- f5 I+ i# Z
himr 0x80040003 0x33
) e) D% _; I1 M2 f# n, K( Whimr 0x80040004 0x44
6 |4 {$ \: ^- D: \/ U! nhimr 0x80040005 0x55
) I! ^! t# Q+ ~0 S( I% c% S
7 `* g1 v- j6 e; PSN也是类似。
9 W1 y9 n8 }% N5 j
. v! @1 i  O3 f# Q现在主要是,谁告诉我们MAC和SN的地址?  ^+ R& I- J$ @9 W% E
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 3 ]& b/ |: @- y3 q: X) Z$ T
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 q5 ]6 l* @5 O% W% _
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ }% ?% ~6 ?! i8 V' u6 z
" o$ W3 N, z7 u& t修改的代码早有了。到今天不会编译。5 Y4 a7 T. A) i( w
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 l5 g/ H$ S) H1 Q& k% o+ P, v) }
  2. #include <malloc.h>: N+ t: p+ [) t3 `8 L+ O
  3. #include <sys/types.h>' L5 R1 s# p' H. A
  4. #include <sys/stat.h># G5 I% G1 E0 {1 B' {" d
  5. #include <sys/ioctl.h>
    ; x9 ]6 R8 g: R% B, @( E
  6. #include <stdio.h>$ d- ?( \/ t* C- o3 D& e
  7. #include <string.h>+ J0 N( k) _% E
  8. & C; C$ O  ^" Q, w$ F0 Y5 R" R
  9. typedef struct {6 T7 L; `; a/ Q/ q
  10.         unsigned int        e2prom_cmd_sub_addr;
    : l1 W, w) D  L3 _9 U8 q" I& C- m1 M
  11.         unsigned int        sub_addr_count;
    ) l" c9 ~1 w0 @% e
  12.         unsigned char*        e2prom_cmd_data;) t9 |2 `4 I9 {
  13.         unsigned int        data_count;
    : u3 t7 H2 M' q' ~
  14. } e2prom_s_cmd;+ s1 C: ~# k/ O% \

  15. # _' D6 g: C  L$ S9 c
  16. #define E2PROM_CMD_READ 16 Q8 E% l5 z# S! `3 H; M3 v6 V
  17. #define E2PROM_CMD_WRITE 2
    $ J4 p# ^0 H6 ~: K7 D% ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! K7 K2 t5 G; k$ i4 Y, F) a, g( u

  19. $ q  q& u* A! l, \) l, [, @
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! k3 n8 u, B" S/ n+ h
  21. {
    3 B2 j$ g/ r6 \. |
  22.         int fd, ret;
    ) n) ]6 I: h0 {7 O  v. \
  23.         e2prom_s_cmd arg;( M' ~+ c% e" M% @0 J
  24.         unsigned char buf[0x18];6 F% q! M2 @- g. n' i' W

  25. - K: H+ L- C$ k2 }1 O& x2 _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - ]0 B  O0 C, L. J0 g/ g. {
  27.         if (fd  < 0) {" u) G6 k. h2 \1 K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 D# y, ^1 c2 U4 k( G  d
  29.                 return -1;
    + t$ g! n7 F! a# ^+ d. \
  30.         }
    0 P( T+ z& R: Y. r
  31.         arg.sub_addr_count      = 2;
    8 e% Q% C. L! H% C: r* R; v
  32.         arg.data_count          = 0x18;
    3 V! T, j8 \9 }; d; `
  33.         arg.e2prom_cmd_sub_addr = 0x290;- _4 \& B6 r" ^. g& ]! B4 Y
  34.         arg.e2prom_cmd_data     = buf;5 h  j0 k) l/ F/ g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* D& b$ i0 x1 V% S2 f0 V
  36.         if (ret != 0) {; _: K1 T7 D8 n5 D( M
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 P2 \' D* e$ ]3 \0 d' z" s
  38.                 return -1;
    9 u7 {: g' e" T0 Z) h( p
  39.         }$ X/ R) {1 p$ m" q
  40.         memcpy(mac, buf, 6);
    , I7 V0 ~! ]. W+ r. Z. G: \. s
  41.         memcpy(stbid, &buf[6], 18);
    5 K9 o- ]& H0 ^6 v3 M
  42.         stbid[18] = '\0';
    # D5 g2 \- A1 @- ^

  43. 0 b! N" M3 G; C* h5 B4 B( f
  44.         return 0;
    / c. L+ s! g( U( t
  45. }1 A0 p% i7 ?0 f' @
  46. / f& c; V$ v% N' p
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( ~7 K# |8 f$ _2 i8 G/ \! m+ L
  48. {
    * d4 I. q, w# ?2 T' [
  49.         int fd, ret;6 s' s; G, L" e# n0 ^! N' c7 Q6 l
  50.         e2prom_s_cmd arg;0 Y/ o% Z3 q- @% N( V8 Y
  51.         unsigned char buf[0x18];" P) S2 B! k" P+ g, e. ?3 p3 ?: f

  52. ' v+ _& ]+ o' O! M3 P: g
  53.         memcpy(buf, mac, 6);2 s# e2 B& D9 u9 O
  54.         memcpy(&buf[6], stbid, 18);  }1 Q# u3 K9 ^6 Z: @
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, n$ @& G/ o" p7 B
  56.         if (fd  < 0) {7 C7 M: w1 D6 m+ C$ ~- j- H! D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! D9 o  ]8 @! ~
  58.                 return -1;
    7 g) M0 z- q- s6 x( i5 n
  59.         }
      v- Y5 V& O- V0 R! d2 j4 O
  60.         arg.sub_addr_count      = 2;
    8 _' Z' c! @: m: n( e3 l" `
  61.         arg.data_count          = 0x18;3 i6 f/ c( o3 W% l0 C8 j
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    7 n7 c! T% @/ O+ L' Y
  63.         arg.e2prom_cmd_data     = buf;5 R# l0 V2 o) o! r2 K1 o, x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . W0 h- s; o. g8 S1 A; R
  65.         if (ret != 0) {4 T: e+ w- `4 g: C# p. C- G1 M
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, T1 J$ R# {& {# ^  g% L$ y5 g! Y
  67.                 return -1;
    5 [: \% u2 w7 H" Z
  68.         }
    : Y5 l* H0 S" N* B

  69. + b* W5 e& u9 b4 n' N+ J
  70.         return 0;/ D6 P9 P* R. F+ L
  71. }
    1 S( p  }" q$ k" I
  72. 4 m" W' ~4 |0 c8 b
  73. int main()- H9 X6 A/ p5 J& P3 r
  74. {
    ; m$ o0 r! }9 h; p3 i
  75.         char c;
    % a- ~" x1 n4 I5 l' Q/ m9 z" W* l
  76.         int i, macs[6];
    " I5 y# i, y, p8 w
  77.         unsigned char mac[6];
    1 t, y1 U) I; ]1 A
  78.         unsigned char stbid[256];5 u+ }4 l8 I, y0 h( T6 Z( F  q
  79. 1 `/ x6 m2 I4 U
  80.         if (readparam(mac, stbid) < 0)
    1 P) W7 l$ _! b0 h$ [, O! C/ u
  81.                 return 1;
    : n' w/ w  @: _8 j' S& F

  82. 1 F2 }& a/ B# m: ~
  83.         printf("Current parameters: \n");, B3 l4 U+ {3 n7 Q8 @1 ?1 Z3 |
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , f. J6 _: J, |' G! f9 o: y7 g& K
  85.         printf("  STBID: %s\n", stbid);
    1 d* S. l, ^3 j2 I( [/ ~7 x3 M
  86.         % ?0 c, X9 A, `5 g, O: u5 i  R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . ~. J5 J% q  }: P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 y/ x! M3 i; h2 B/ c& L
  89.                 printf("Input MAC error\n");2 {+ r" k& I* H7 a+ A, }
  90.                 return 1;/ P' S; n. f/ A7 {6 C7 X
  91.         }
    4 V, o7 L) \5 ~1 o( ^; F& M7 l1 D7 ~6 o2 B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 ~+ p5 m% B% N/ _6 P% h8 a
  93.         printf("\nPlease input new STBID: ");
    0 |- [! y4 {7 K6 k( Z* S! z
  94.         scanf("%s", stbid);
    , I' C. I: u, m/ q
  95.         if (strlen(stbid) != 18) {
    / Z# P& H$ E. r' h# ]; M
  96.                 printf("Invalid stbid\n");3 w* e1 }1 ?7 z: E. [- v7 b$ @
  97.                 return 1;* j. X3 j. w( V' i4 \
  98.         }
    6 O8 A* G7 {3 v; P- F  a
  99.         printf("\nNew parameters: \n");8 ]- F2 V/ @- d8 v
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ \% X* ]; d1 }* C/ B: w  K
  101.         printf("  STBID: %s\n", stbid);* H, a- `( V$ s5 o* D
  102. 6 X! Z$ \+ R0 o. ~" y" e7 {. ~# L
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 l5 D; v7 ]; P9 V+ p9 h, A
  104.         for (;;) {5 S% }7 D$ M& Q  Q4 F! b
  105.                 c = getchar();
    + K  i( Z5 U2 H3 S3 P, W4 q' Z: ?( |
  106.                 if (c == 'y' || c == 'Y')
    5 I: v* J  m6 ?' Z7 J9 G
  107.                         break;
    ; _+ K# z3 c. k8 e$ P  l
  108.                 if (c == 'n' || c == 'N') {
    , ?9 C) ?, c; R! F- U& d
  109.                         printf("\nAborted.\n");
    / s0 F) |$ t. c- a
  110.                         return 1;
    % H6 g  L4 [% N/ R
  111.                 }
    + T( k2 \6 Z* P# S
  112.         }
    ( p7 I6 p4 g- h" J# {& R5 F2 ?
  113.         if (writeparam(mac, stbid) == 0) , k- E7 h9 z% d
  114.                 printf("Parameters changed.\n");5 d4 H8 S5 \8 q3 K+ \

  115. - Q: s9 _. y* J' \* k5 u' \
  116.         return 0;
    + n: C1 r5 I* F+ Z( e. H2 d* \
  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 ( g9 H9 }8 X4 {- }- A
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 l$ w6 F7 i2 z" F, n' Y
你用的编译命令行格式是什么?. ?/ n# R1 p( {" r: l
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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