查看: 16864|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr7 E) j- N2 a9 v3 G
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig' }! }/ ~. M6 m  h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 I4 F6 i5 p* F4 a
usage: himr <address> <value>. sample: himr 0x80040000 0x0" \+ Z5 P' A, ]
# `; j' N6 y/ N# k/ q- u) C" b5 v( c- H
' j: J7 S6 K1 G
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! g0 @0 p4 ?( p+ ^9 Q' ?  |1 {1 [$ W; l
- ?* b  R/ Z* a5 o. i; w/ K补充内容 (2012-3-8 09:42):
: c' P/ b4 z3 V& E4 {http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数) c2 q( O) F/ t. {6 s$ }
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。- x8 [; w* h* C1 m. c$ x
% D5 c8 C" z( W, `5 ^
himr <address> <value>. sample: himr 0x80040000 0x0
6 ?$ V% L! w2 L  }& D3 e0 [; h7 A, b# e- ?: a
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 A4 V: Z/ S) m
himr 0x80040000 0x00
% ^3 E; j2 w; z, o3 v; _% lhimr 0x80040001 0x11$ t0 R3 Q! {- P
himr 0x80040002 0x22. F3 W0 x( v: j3 r% S3 O$ Q( b$ `
himr 0x80040003 0x333 h2 r% K9 ]$ I$ ~* L
himr 0x80040004 0x44* U. f  J$ i7 X, `! N( V3 h  C
himr 0x80040005 0x55
, E- f1 y6 V1 V5 s
; `: X( c9 h4 b1 K( xSN也是类似。- O: @* J5 x3 s3 X" @
" E) w8 \. t) {4 j6 E- X, S& u
现在主要是,谁告诉我们MAC和SN的地址?1 b- ?* ^, p6 D3 T& N; Z$ t
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- O! Y+ g' b# m9 d0 F6 P& P/ a& t一直想找到运程修改MAC和SN的办法,苦于无解啊

# d0 |! p/ F2 {7 I源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 T4 |( ^8 N  J* b* X5 Z
, D: ]; a: R" X* s& E修改的代码早有了。到今天不会编译。/ a# V, |/ d* _$ V/ X. S
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 w8 g: z9 Q8 A# a8 h
  2. #include <malloc.h>
    # W& _( o! p7 ]
  3. #include <sys/types.h>
    ) B4 A7 ]- s7 ~$ u0 v
  4. #include <sys/stat.h>
    . j& y" x8 p2 x; g. j( e6 L
  5. #include <sys/ioctl.h>& c; |4 y& H+ T- t+ y) a
  6. #include <stdio.h>4 o1 |$ J2 j6 H) V4 i- R* M1 z4 q) x
  7. #include <string.h>1 ~6 G# ~5 E' K$ w+ B0 P5 K

  8. $ v% B- B0 E# {
  9. typedef struct {9 O: M5 F6 u  C4 \: `  H" q
  10.         unsigned int        e2prom_cmd_sub_addr;: [, r. R+ }* f5 j5 \
  11.         unsigned int        sub_addr_count;( L1 u! t: N8 _) k$ A
  12.         unsigned char*        e2prom_cmd_data;
    9 y+ @1 E. x8 D1 d* M) G
  13.         unsigned int        data_count;
    ( W5 j2 m7 ]# h% S+ u4 i
  14. } e2prom_s_cmd;
    : [8 X: v& n2 t2 \. l2 d

  15. % W- v+ I7 E7 |8 U6 h
  16. #define E2PROM_CMD_READ 1
    5 |$ m/ h; Y+ x
  17. #define E2PROM_CMD_WRITE 2  A3 c7 d' N( p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 y) F, [: }/ q+ f, K9 D5 {

  19. 7 o( ?& L9 n( M8 {; f# l# [, W4 H' G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & |( ^/ w: m5 n6 U% B5 S/ n
  21. {
    1 U; }, |, v! N: [' [# s
  22.         int fd, ret;
    . ?% _; [( |. o5 X( l
  23.         e2prom_s_cmd arg;) ~  O1 p/ @5 U, W2 X4 ^% q% i
  24.         unsigned char buf[0x18];6 b  V( {+ H2 v5 a; N5 ?
  25. / g3 t+ s# B2 U; z" _3 W( Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( D. B) A' D' F# Z% T" g
  27.         if (fd  < 0) {
    2 `( B9 k( s6 \7 f2 f, \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 b5 [* A/ \- e2 Z& d3 U: q9 k
  29.                 return -1;# D% @( R) K. U0 J; Q" a
  30.         }
    5 _  y  J+ A1 |% n  `
  31.         arg.sub_addr_count      = 2;* ?) J. l3 B9 I5 O8 F$ @
  32.         arg.data_count          = 0x18;; I3 K, I2 u) p4 p) S  ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' C$ ]* o3 b) i# N8 R& M% x. i* p- w
  34.         arg.e2prom_cmd_data     = buf;* x% K. |+ k5 O& R( m" S6 V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 w7 n: f5 }" h- E1 \" b
  36.         if (ret != 0) {
    8 C4 Q# }% E7 |0 n& E" C& ]: U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ `2 }- ~" V! e$ V
  38.                 return -1;, \; A0 e6 I. M7 f
  39.         }
    0 l, P, }0 Q$ e* M  A3 j
  40.         memcpy(mac, buf, 6);" l/ K8 R6 U% @# `: D& u4 P
  41.         memcpy(stbid, &buf[6], 18);7 B) F3 _7 `/ x+ o" D
  42.         stbid[18] = '\0';2 F- o9 `5 E9 h) |! x( `% m

  43. + x5 [, C  R& S  d2 i
  44.         return 0;+ M# s; n8 p- y. g
  45. }
    : J& M8 [& t2 s- P9 N: E
  46. - E: R+ i+ |  W9 q/ b7 f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , Y2 m( t  G9 m  \
  48. {8 R: F$ G0 `* P3 l
  49.         int fd, ret;
    ( ?1 E' K( p1 U5 b
  50.         e2prom_s_cmd arg;6 O8 ~  U0 C- A# g* ~
  51.         unsigned char buf[0x18];3 r3 A' o- G+ l- V3 |; b% b; U

  52. 9 V6 p, [9 x+ i, E6 P; x2 i/ g
  53.         memcpy(buf, mac, 6);
      n3 Q5 j: `  t
  54.         memcpy(&buf[6], stbid, 18);
    , e! P( b: H+ `( x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    - s) n( i  ^( u& j3 y8 o
  56.         if (fd  < 0) {
    $ v$ |+ M1 n3 c0 E* R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ o6 n/ g* _* _6 E
  58.                 return -1;( @/ n& V  @: S' c
  59.         }& u2 o0 l2 ?- W7 s* [) x' O
  60.         arg.sub_addr_count      = 2;
    + `$ Q/ V) d2 R; N: y
  61.         arg.data_count          = 0x18;5 U! @$ E4 }  l% i8 P* c5 o
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 p+ j0 _1 ^& \  ?1 ^
  63.         arg.e2prom_cmd_data     = buf;, y9 q9 r( T( H) W1 E* m/ o7 u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 B/ z$ H6 r1 X( e, i
  65.         if (ret != 0) {9 {# n" `6 a, M
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % q0 F0 G' Y# x& d8 l7 B3 ~8 C5 l
  67.                 return -1;& d6 N2 t. @$ ^4 _* l+ p  }
  68.         }
    0 u# c. _) P6 g7 k- \( B: c
  69. - ?, O$ u* G' o
  70.         return 0;
    - t5 S, _0 p$ H) g  M3 U9 }
  71. }
    : s1 V8 E  E* Z1 k  O

  72. 1 }- I0 g( _1 O2 {1 G
  73. int main(), k7 ]  M/ i8 ]8 n; e
  74. {
    9 v) p0 N& q% v- P- P$ e
  75.         char c;
    : {, u% M( U! F( B
  76.         int i, macs[6];
    ! g/ c! s9 x2 n9 i
  77.         unsigned char mac[6];
    0 @5 u- g) o4 r8 |
  78.         unsigned char stbid[256];/ V- W" s0 G( h1 J; I% v

  79. % t# F, d, c% y
  80.         if (readparam(mac, stbid) < 0)+ b$ u) Z! |6 c+ F9 g
  81.                 return 1;5 u3 Z1 ^! r& M0 V) O9 v, s4 K  b
  82. ) ]4 s' _0 @# r4 U  r1 `# o$ Q
  83.         printf("Current parameters: \n");8 Q+ K. W# ~# y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" ~9 j6 n6 i# H) t
  85.         printf("  STBID: %s\n", stbid);
    # I7 A* U1 U( f, t
  86.         8 P, _7 r( T3 H: b7 b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 z0 }1 k+ D: a. o5 W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 l' P, R6 D/ L- Q3 ?8 m
  89.                 printf("Input MAC error\n");
    1 e0 K) {' E# H
  90.                 return 1;- k- s( \2 ?1 K4 V( u. U0 D. J3 e
  91.         }: f" G4 Z7 T' m, t6 x7 b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) `. U  k+ {# t
  93.         printf("\nPlease input new STBID: ");
    * B1 c. n4 |2 V* c6 ^/ b- E
  94.         scanf("%s", stbid);
    % a% b* t- J* C) Q% L  K& {
  95.         if (strlen(stbid) != 18) {$ d+ r# ]7 L" z
  96.                 printf("Invalid stbid\n");0 l& p" o  }5 o$ _! m" ?
  97.                 return 1;
    & A' j) \8 I8 Y1 g( z
  98.         }* s; W4 c5 K9 Y' c/ |( f! j6 p
  99.         printf("\nNew parameters: \n");
    : y4 Q% Q- v# M7 m. a4 i8 y( E: `/ }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, Q! X2 r1 U4 f9 N( A
  101.         printf("  STBID: %s\n", stbid);
    * o3 k  q9 Z- B& N* R

  102.   l; ?4 p6 @3 L. s" L
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 }$ y/ ~+ O+ R* p6 A
  104.         for (;;) {9 z( D5 T, o5 i$ S: |$ P
  105.                 c = getchar();( [9 H! d$ X! p! g1 M1 y
  106.                 if (c == 'y' || c == 'Y')
    - E  ?  d8 u) c6 x$ V% A' W
  107.                         break;
    1 D) J- F; b8 }  m- n/ Z5 L# F
  108.                 if (c == 'n' || c == 'N') {
    * O7 v  s2 ~/ [/ o3 P$ D
  109.                         printf("\nAborted.\n");
    1 P7 n- ~- i* u+ v4 |% r
  110.                         return 1;- T* `$ V/ N' A- _) o& E/ A$ D/ v4 m
  111.                 }2 m: m7 _" M: l9 W; \! |+ H! [
  112.         }6 E6 b8 j7 K) G4 B: N
  113.         if (writeparam(mac, stbid) == 0) & m. v( w  p4 I+ ?- T6 ]9 d8 S
  114.                 printf("Parameters changed.\n");. Q0 b& I- D# k6 p/ Y$ n
  115. 3 T8 J2 n; f- e6 z5 p
  116.         return 0;+ D4 c4 U( ~8 H$ D% s
  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 3 u/ L7 l1 {5 ]1 }" B! ?1 [7 f
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( O8 `$ O  F5 W: g: o你用的编译命令行格式是什么?
- u1 ~* O/ v# F' e1 K5 m$ k' ?. Z
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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