查看: 16883|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; k" r* J( [9 O( H8 q: l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; R8 u2 V. g  a7 L% a9 o' u$ v1 U
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( S+ R; K, `; w2 ]" Kusage: himr <address> <value>. sample: himr 0x80040000 0x0
9 e; y& z& p8 S8 f" {7 H
+ i* S: z( `% m1 c# U) j* f  o  b$ ^6 ?6 z) B; D
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 C6 z" b" `: j9 x! H* L& M+ i; c+ g: [. |) h# f
补充内容 (2012-3-8 09:42):* L8 h* h6 G' u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
6 _3 Q7 y# U# m. [! c这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。+ {( M! P& `  O! `: D: F( X9 n

0 s. [) ?: t0 ]9 s2 _/ @+ f1 Shimr <address> <value>. sample: himr 0x80040000 0x0
: ~- Z. E. N( q7 l3 q! s' W1 N2 \2 u9 q% H, U) Y- s# X
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- X0 ?. t( o0 J* Hhimr 0x80040000 0x00' o$ {6 K3 S; ?  R3 I' P) o; E; T
himr 0x80040001 0x11
+ B6 o( i- r2 E: q/ f. ohimr 0x80040002 0x22$ b- x5 H7 u. h1 n. p+ C
himr 0x80040003 0x33
$ D5 w. b6 A9 {% y0 ]% Chimr 0x80040004 0x44" Y8 C3 b0 c  [6 C+ E2 F( m
himr 0x80040005 0x55
5 q2 ^; C. V& G+ r  c& ^* I3 c9 S) V2 F( z  {, c3 N
SN也是类似。6 J4 S9 R. r: G. ]# B. Y  b

# j; f2 E! r: n* f- m/ Y4 w现在主要是,谁告诉我们MAC和SN的地址?
5 p) s* C$ p' }1 E* B" u5 q  ~" z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 f6 g! g5 e3 M: R- O, L& m* h6 n
一直想找到运程修改MAC和SN的办法,苦于无解啊

- o8 G6 j! s; ]( r8 W7 h' \源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : [4 W+ o0 i9 ^
7 u6 Q" e( W4 Q8 W, l) x$ |
修改的代码早有了。到今天不会编译。$ c5 {& `0 w% t6 H8 `8 X/ m
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 v& f$ C( X" Q! y
  2. #include <malloc.h>% s# i4 P1 Q1 ]8 g8 s7 I; _8 p
  3. #include <sys/types.h>* x- g, }* w+ G' K- l$ N$ D
  4. #include <sys/stat.h>
    & |, g9 V# I3 H6 L8 Z
  5. #include <sys/ioctl.h>% S+ L/ y3 z/ u. Y% i, V7 y
  6. #include <stdio.h>
    3 {# }5 Y' A8 w. B' T4 [- R
  7. #include <string.h>$ |+ `* h# \2 L. G+ [: |: C& @

  8. % h3 c' j( f7 F# t* V; n: p  a" u
  9. typedef struct {4 a# n) o& t5 o* x. m+ Z/ P' b
  10.         unsigned int        e2prom_cmd_sub_addr;9 S2 P! m5 |( w+ b( R
  11.         unsigned int        sub_addr_count;
    # N  {$ h2 R% j9 Z4 @  s9 ?
  12.         unsigned char*        e2prom_cmd_data;6 n5 v  P- u5 ~# Y2 i0 y9 b
  13.         unsigned int        data_count;. R( Q' J, s% j" m+ _1 C
  14. } e2prom_s_cmd;* z' D5 W# o$ \. O* \6 }$ p
  15. ' b6 C) ?  C0 g
  16. #define E2PROM_CMD_READ 1
    $ S/ n) f& ~9 y0 a- i
  17. #define E2PROM_CMD_WRITE 2: j( p; y9 H1 C6 N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ w# f6 ^) y; p( o+ T9 q

  19. 8 M5 m) Z0 ]! c$ d% B  r  g% p, b
  20. static int readparam(unsigned char *mac, unsigned char *stbid); Q4 e+ m1 O7 Y4 d1 C
  21. {- ~" \' c/ I; U# V* E" C
  22.         int fd, ret;
    9 z# B; F* s; j) C7 d  {( r
  23.         e2prom_s_cmd arg;
    . r9 H/ w8 t- f, r
  24.         unsigned char buf[0x18];
    ) ~" B2 Q& r3 V  o/ w4 y

  25. & b- n$ ^, Y$ l/ ^1 ^' z4 d8 j$ U
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  v2 U0 ~% q: }+ m
  27.         if (fd  < 0) {( D- L# M0 }( i# H7 P' H  q, k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);" e" @2 \3 h+ ^& {3 m9 h  E
  29.                 return -1;2 _8 r2 L& z& V4 T
  30.         }4 X! c4 ?- u1 k8 K5 u; W
  31.         arg.sub_addr_count      = 2;
    8 r+ k/ i: ~# G
  32.         arg.data_count          = 0x18;$ |8 @1 b8 ]# a0 P% H3 Q' ?& n
  33.         arg.e2prom_cmd_sub_addr = 0x290;1 O8 [! y* v/ W& @1 C% h# |: L
  34.         arg.e2prom_cmd_data     = buf;% u. P- K8 K; I" }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    . N3 W8 j0 s) E6 ~8 o& _
  36.         if (ret != 0) {
    6 q1 p. l: J/ f$ R2 K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. m/ B# L7 i0 u& z+ u) I# }9 G
  38.                 return -1;
    # }) H% O* n5 H" `/ T4 v6 A! y- W
  39.         }- {& O# E% q$ U( }9 l5 g2 W( @4 h
  40.         memcpy(mac, buf, 6);* `0 x: C( _& H0 z9 ^+ K$ _
  41.         memcpy(stbid, &buf[6], 18);- l: I3 y+ [! z" K& K* t: |
  42.         stbid[18] = '\0';
    7 U7 I7 r  q3 U- x% z2 U3 t2 U
  43. + w9 L- |) n+ S% E# n6 Q  ]) N
  44.         return 0;# ?6 Q4 J9 E/ O1 ^$ S( B
  45. }6 j1 M4 _2 [: v5 ]* ]. ?
  46. ; T1 J0 F( V7 t3 H7 f7 N* N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - p. C$ \( f4 S: N( L  r, ]
  48. {- H1 l) |; y& j' b# x0 K4 ?
  49.         int fd, ret;' H0 c' ~: ]% c! N! }% I
  50.         e2prom_s_cmd arg;
    7 J! o' j* Y: u: B5 U7 B
  51.         unsigned char buf[0x18];, q6 }% t2 H. K

  52. / c- P1 x& d+ X% T0 k
  53.         memcpy(buf, mac, 6);
    2 N" t3 o# k( a( T; t. B* f6 J3 k
  54.         memcpy(&buf[6], stbid, 18);
    * e/ _: I7 L- p/ y- O/ S3 o6 R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( a6 q. \' ~- l
  56.         if (fd  < 0) {
    . A2 P; J0 H7 x3 X# ^% h& t! m+ w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ R8 K8 _, D: T$ Y) @; g# f
  58.                 return -1;
    / T( A9 n  H7 n1 ?. E
  59.         }
    ' Y( y4 D6 A# Q
  60.         arg.sub_addr_count      = 2;
    ( t( T3 ^. A; _; G) V
  61.         arg.data_count          = 0x18;
    ; g' h, G" N# r" ^9 g% f: p+ g* q# F
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 {' _6 G7 e' R' \
  63.         arg.e2prom_cmd_data     = buf;$ D5 \, A4 R' z* l& W8 ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 u& c" R8 M0 h' i. x
  65.         if (ret != 0) {# N/ I/ P- _7 i3 h. n+ z8 _3 |  A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ' n8 _6 ^$ _! {5 _. r
  67.                 return -1;" O. F* |, x+ X2 H' f
  68.         }
    0 x  N9 g0 m- j

  69. * Q& p6 \- x- y8 x
  70.         return 0;
    0 R$ x7 O! }% G7 v* }' k
  71. }5 `& p, G0 C3 q4 H' f) x& Z- K
  72. , S# m6 ?% d: X6 p
  73. int main(); H  }. N, _1 {* E0 {
  74. {
    / n- A) c' J9 c
  75.         char c;& j! V( t, z0 f* |& Q/ x
  76.         int i, macs[6];
    ! Y0 }. ^1 a- ^& x  G  T
  77.         unsigned char mac[6];& h3 m5 ~& X. N% R
  78.         unsigned char stbid[256];
    * Z9 c" N' C9 o4 [/ {7 x

  79. * O8 T5 N7 Y, K' c5 V0 h+ i* s
  80.         if (readparam(mac, stbid) < 0)
    7 |/ V- L/ r' @  F- f5 h
  81.                 return 1;* m* ^! U% w2 z7 |
  82. 8 D$ M/ B1 o$ X& O$ s* Z
  83.         printf("Current parameters: \n");0 H7 k' \8 l& L: e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 x6 B( k7 I, a% f! {; d$ s
  85.         printf("  STBID: %s\n", stbid);
    9 d8 g( J8 S( o5 S5 k: e8 N
  86.        
    . y, e; Q8 y' f1 ?* }" s# a" E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / b2 s. Q8 X9 i% w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 T4 L+ D. r# o) [8 D9 b5 W
  89.                 printf("Input MAC error\n");* g& B3 k6 e' @, u7 ?
  90.                 return 1;  A) ?( _8 N7 f
  91.         }
    # K: a8 n  Y) j
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 ^; z! |5 b# L( S" l4 V
  93.         printf("\nPlease input new STBID: ");
    7 x; }: J2 u* f+ O' A$ w% x
  94.         scanf("%s", stbid);
    " C+ U0 b8 b" r& c; \8 v
  95.         if (strlen(stbid) != 18) {, v6 e; o. y0 p& d+ y: r6 [
  96.                 printf("Invalid stbid\n");
    - Z0 x; j& L0 r
  97.                 return 1;8 B4 n0 T" _- Q9 X
  98.         }
    : b5 i  n' e+ s! F) E0 }
  99.         printf("\nNew parameters: \n");" _5 J( n9 P9 ]. i, o* ^) g
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ S6 g+ E; X% w5 o) D* S( d
  101.         printf("  STBID: %s\n", stbid);
    6 A7 V$ f: w1 t3 I, P
  102. * B; W* b# Y0 d9 B9 o! B" }
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 i7 w( v, E' V; ?6 V% D! k0 a
  104.         for (;;) {
    . H4 K0 V4 w+ O
  105.                 c = getchar();5 \( Z; @+ h6 a  e  y; J
  106.                 if (c == 'y' || c == 'Y')/ C" \, p; d% Y1 s- S- h! N6 y
  107.                         break;0 x) p9 ^: E$ ^# T; G
  108.                 if (c == 'n' || c == 'N') {
    8 \0 E  S3 u8 _6 G
  109.                         printf("\nAborted.\n");* s3 @* y: I* a% M% q
  110.                         return 1;3 ?' m3 r& f& s
  111.                 }
    2 r! |/ L7 m. Y+ Z4 R( I0 M3 b5 |
  112.         }/ G( q+ e. x6 b& \
  113.         if (writeparam(mac, stbid) == 0) ) |1 C5 G# Q# `/ X& A
  114.                 printf("Parameters changed.\n");7 @9 s$ T. U! `  e7 ?+ g

  115. 1 c9 q4 B2 I4 u
  116.         return 0;* Q% Q/ b1 ~6 i* J0 [1 y
  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 . |, c  h. R! y- h/ D3 r1 ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 B/ F( S, G/ x% T. a! @  s2 f9 F你用的编译命令行格式是什么?
/ g: w5 T- H8 s; p1 |
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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