找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15702|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# J( l/ Y% n% E, K$ W! l. X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 l  d+ ?1 q) {
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* U. _6 u9 O3 Q* A* z1 L
usage: himr <address> <value>. sample: himr 0x80040000 0x06 ?7 P. K5 P* t$ f% D7 L/ Y
0 c! W5 H( M8 `" a0 d: K, f6 [
+ k- `# B- r5 e1 H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& J! y3 V& T: y' M2 Y8 ~/ j; Y; p( E0 N9 S  R4 s
补充内容 (2012-3-8 09:42):# j0 M" D# I' P
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数" F/ _9 `+ V0 A. j( K! i- B
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
/ V5 C9 Q1 S* }; ?* g, `
) I4 C6 f* T: C5 A# _5 ]5 ^% G5 Jhimr <address> <value>. sample: himr 0x80040000 0x0& d1 P! `- B) r' m) ^

4 z7 T% i/ h3 \& a例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: I+ z, z! r5 P* B) r$ Shimr 0x80040000 0x00# ]( O3 s2 E2 q8 Z" p, r) y
himr 0x80040001 0x11
) X0 h) H8 t) @3 F4 P6 N$ I6 Whimr 0x80040002 0x22
. q; I! w3 P/ Ohimr 0x80040003 0x33
' o1 k) _9 C0 y2 q+ X9 w8 Phimr 0x80040004 0x44
" z' Z- p+ g. Qhimr 0x80040005 0x557 }& l# K6 F% c
5 p9 ]$ X' n* \- B4 z; E. f
SN也是类似。
, Q7 ]* [) d2 Y! w
- Y& n' E9 N* |$ Q, w现在主要是,谁告诉我们MAC和SN的地址?
; @8 o( ]& c) n
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! \) ~: G1 ?1 N+ V  R
一直想找到运程修改MAC和SN的办法,苦于无解啊
; ~* q5 {. k6 W, U9 m8 u+ r
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) z1 u" I3 U  l

/ ]: G, k7 X, D, p4 o  N$ w+ K修改的代码早有了。到今天不会编译。) p' G+ R: J% e7 G2 P0 P( w
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 R. q% |  ^2 t* O
  2. #include <malloc.h>
    5 `3 L) `  F7 `
  3. #include <sys/types.h>2 p( ?) v  ?3 U& V# L/ A
  4. #include <sys/stat.h>% u6 p0 {. z0 c8 h1 J
  5. #include <sys/ioctl.h>
    . O. j# ~( l4 @3 p" O8 \
  6. #include <stdio.h>/ M3 e# @0 r! M' Z  L* j
  7. #include <string.h>" W, v3 a7 q8 I* |& F* {
  8. 7 @7 _: W2 j& {8 T5 S" ]! A4 D
  9. typedef struct {
    # Y/ n  d/ t* r9 t/ ?: ~
  10.         unsigned int        e2prom_cmd_sub_addr;
    / ~7 U8 C& e. P. z* g  r( ]" v
  11.         unsigned int        sub_addr_count;; ^. r( O) {5 c# ?  w8 K
  12.         unsigned char*        e2prom_cmd_data;. d5 d: o$ S, E
  13.         unsigned int        data_count;
    * z# K. ?. T' }. V" g- G* \
  14. } e2prom_s_cmd;
    ) o6 E1 c! @: P2 R5 s$ e

  15. ' g; y" q' q- b2 U( A7 l
  16. #define E2PROM_CMD_READ 1
    6 ~+ r5 L' h& e& `* h
  17. #define E2PROM_CMD_WRITE 2! s* b+ q9 l/ |! F* z) h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 b: W7 k5 P4 Q; s- }: o
  19. - ~* l4 i* _+ b, j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)* O; b) @7 f3 W
  21. {5 z3 p5 z0 A4 h* i( y4 L! ^
  22.         int fd, ret;6 R( j' ~0 p/ l" v) q
  23.         e2prom_s_cmd arg;
    ( }5 z3 J2 G+ D$ K0 l& x
  24.         unsigned char buf[0x18];. T6 a3 m# k7 r

  25. * N7 e% Y' t8 f2 t- Z7 y* e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 G- Z* `& n9 `! {8 ~* v1 V2 R" D
  27.         if (fd  < 0) {+ A1 Q# j; p; d1 H! f2 [& K" D9 A, u
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 v3 J: G, Z  c2 F
  29.                 return -1;
    1 F$ B4 P# H2 F$ _) V# ?, z7 ~
  30.         }, z2 |7 H; V4 v2 }7 O7 ~; R! D
  31.         arg.sub_addr_count      = 2;
    1 p: y4 _3 M/ g/ `( X8 O3 ]
  32.         arg.data_count          = 0x18;
    ! \  Z9 n6 S  A4 x. L
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / ^) g- L8 v9 i5 a
  34.         arg.e2prom_cmd_data     = buf;
    - H8 R; h: U% F2 c7 n5 r! }6 Z: L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' J0 r% `, r, ~- m7 S
  36.         if (ret != 0) {% S8 |; }& n. [% g9 ]4 s# Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 r4 N: A! b) n9 M! D4 q/ s6 u4 T
  38.                 return -1;
    # k8 G# R, [) R
  39.         }
    $ F9 a/ {2 P6 R" u- Q  @3 z7 M; {6 i
  40.         memcpy(mac, buf, 6);
    8 J" E" W. c0 T. L6 Q# e; g) g
  41.         memcpy(stbid, &buf[6], 18);
    ' z) S* ]! w6 C+ I3 K& t. N( @* S
  42.         stbid[18] = '\0';
    ; r0 v# f# g  T
  43. + o+ u# \; Q6 j
  44.         return 0;/ u9 J9 U' ]/ @: }- e  B% U
  45. }
    + U) T, A0 Y: I6 j" x: L# [$ S
  46. / i* I. v1 l. I0 S4 o; \: {. _* K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 S# z/ g$ S* ]3 {& `. r
  48. {: K9 `1 q/ W' C: e' G
  49.         int fd, ret;
    ' O: ]% {' [* t( ?! o* O
  50.         e2prom_s_cmd arg;* S2 @) j/ w# w( x
  51.         unsigned char buf[0x18];
    7 G, V% {$ \% W2 I' R4 m( ]

  52. ( k( F6 {* [  ?( ~- H! \
  53.         memcpy(buf, mac, 6);
    / U1 n8 a$ |: _
  54.         memcpy(&buf[6], stbid, 18);; E5 R1 Z* N" ~0 L! ]/ u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);* o$ ~5 V* a5 ]6 i. k
  56.         if (fd  < 0) {9 N- Y8 p" c, z( n) B8 N7 w. T
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ h- d3 c7 I: l) X
  58.                 return -1;
    4 n8 Y$ r% U# Z- Z& e8 z$ a8 P
  59.         }* g- ?0 O; [/ b) t
  60.         arg.sub_addr_count      = 2;( ?- q3 Y# V% x( P3 C
  61.         arg.data_count          = 0x18;
    / v. G: u; d- H) ?* D# l
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " P  q: |2 }4 t0 `2 v/ w5 I2 P
  63.         arg.e2prom_cmd_data     = buf;1 V' H0 L) Z% V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 I. I4 [5 l- d% Z6 R: S
  65.         if (ret != 0) {, T* z2 P4 p% R- I- ]! v
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, [8 D6 Y, z' K) S0 ^
  67.                 return -1;
    ; |' c  Q( y/ `
  68.         }
    * V2 D$ w- s4 |! X9 x
  69. . W9 P0 ^: ?/ }: W/ O
  70.         return 0;2 S$ U" h9 q" |& u5 k# z
  71. }' @0 g4 j9 J6 a) v

  72. 4 q6 e% t. f* g: _0 Y) _9 F
  73. int main()
    1 q% @5 _2 c* Y3 Z7 U1 i
  74. {
    * |0 Q' ]# U, n/ |6 {- I
  75.         char c;4 V- f8 S# W( g
  76.         int i, macs[6];
    " c' n% u' I* b1 y
  77.         unsigned char mac[6];
    6 Y8 T& X( A% A; T. [$ S
  78.         unsigned char stbid[256];
    $ _8 G1 V+ `6 U) {$ I$ f

  79. 5 N2 }$ _) y9 m1 d5 m( `. d
  80.         if (readparam(mac, stbid) < 0)$ b1 {9 E8 E& |& H  m. ]* e
  81.                 return 1;
    4 t  G- F: t/ T( z% O
  82. 1 |6 v+ j% ?4 E  ~
  83.         printf("Current parameters: \n");  C. t: s; W+ ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* z- U, X  A- _, F9 U2 T
  85.         printf("  STBID: %s\n", stbid);
    / P  N$ E% Y' y( m
  86.         4 K" }! z6 c4 x1 p0 W0 l2 N( G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 K8 e0 o) G" {) \( f. k, a; K! O* k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 O- e/ |4 `# u& l  a% [- u. }7 ^9 |! }
  89.                 printf("Input MAC error\n");
    0 `' u( f7 a' X& j; r4 i
  90.                 return 1;
    ; t% W  G- M' [  j# n2 f3 f8 V$ K
  91.         }& G  C/ X$ @2 L
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    + `2 @  ~- X2 Q6 r' s* \
  93.         printf("\nPlease input new STBID: ");
    6 n# b- ]1 I5 n7 _# ]
  94.         scanf("%s", stbid);  [4 p& ^$ M- `; `/ D
  95.         if (strlen(stbid) != 18) {
    , E, i- j4 d/ K& M" t$ k
  96.                 printf("Invalid stbid\n");5 s5 x2 Z. C  v7 D2 r) q! |1 @$ W
  97.                 return 1;) D' V0 [) A; W
  98.         }# Z8 p- |: q. M# e) P2 K& ~" z
  99.         printf("\nNew parameters: \n");
    4 f$ a, U/ Q5 h4 j- _* ]: j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 }) X  m# R6 ~, _% {
  101.         printf("  STBID: %s\n", stbid);
    1 j8 d2 B8 ^0 g4 t; x9 M3 g: ]  r
  102. ) D, z  Z8 d0 p2 \/ p0 j" `$ C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 r( P: e% D$ d6 |% M
  104.         for (;;) {( |; O: X/ P  ~- b: z
  105.                 c = getchar();
    ; }9 Z4 m6 D7 C( l; @! a
  106.                 if (c == 'y' || c == 'Y')
    + n' Q" ?2 H, A
  107.                         break;
    4 d6 m. S( g& D
  108.                 if (c == 'n' || c == 'N') {# ]1 R9 W, ~" `& A; h
  109.                         printf("\nAborted.\n");
    5 s0 y' e4 t, p
  110.                         return 1;
    8 _3 z( Q+ h7 I0 ]
  111.                 }3 j8 I. Z% k$ [9 P4 J- Q
  112.         }
    - `, e! C; W* \8 V" ^4 @) ^
  113.         if (writeparam(mac, stbid) == 0) " S6 r) k8 P1 M% |
  114.                 printf("Parameters changed.\n");: Y2 ~2 E( n5 m/ B3 `8 B+ H

  115. , l: n  F/ u  g# F' f  q/ G
  116.         return 0;8 n9 l  E8 l9 }$ {+ r9 K
  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
% s, i3 p8 ~  ^% q* Q+ j" y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" c; {" \* ^! t/ E$ |; d6 n你用的编译命令行格式是什么?
& t1 J. i1 q6 r, K. {7 t- n7 w
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-1 10:11 , Processed in 0.023798 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表