查看: 16979|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 L9 _0 i5 [' J' F+ ]4 R% |0 x, k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # O) y6 ~" `9 z# i, T: s* A* u+ p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
* U/ G' N$ w" O0 ~* u) k% Husage: himr <address> <value>. sample: himr 0x80040000 0x0
6 Z8 H' f4 R4 ]- [% F3 z, `0 R7 z: E# B  @
6 g& E, W' L2 G+ a/ [
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& o# j) [# D% d5 a& G
4 M# {$ ~# o* n8 X) C/ J  G
补充内容 (2012-3-8 09:42):' W& {8 o" d$ R
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- K3 H9 J# [9 W; K4 C# o, G. h这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
0 h: d3 T  z  @- G5 S9 n4 [8 k* X( m5 Z1 r
himr <address> <value>. sample: himr 0x80040000 0x0
$ [: P, S2 v  P. ~* t& K; F9 p5 O! m; K+ M6 g. S$ O# b2 R+ F6 J% `
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- x* m3 n0 J4 ~5 W1 T2 Shimr 0x80040000 0x00
3 b9 R5 @  m/ {+ `+ }$ Rhimr 0x80040001 0x116 {8 v- G. q# f2 H
himr 0x80040002 0x22
4 H* s, b3 S) h% e+ }himr 0x80040003 0x33: S$ v9 G: w% }" H1 s
himr 0x80040004 0x442 ~) w9 X7 i' Q7 W; s2 d, o6 S6 e
himr 0x80040005 0x55
# w4 c+ ~# S1 f3 g1 l9 ^6 s
4 r" q! E2 r: U# l" v2 GSN也是类似。
+ P$ D9 A1 j8 m) W. y$ W. P  s0 ~* Q5 T
现在主要是,谁告诉我们MAC和SN的地址?4 _7 s, M" F# I4 q
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 ?- w# r4 Q1 o0 l" e
一直想找到运程修改MAC和SN的办法,苦于无解啊
' k$ W0 [3 m& H, z% S
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 j0 V7 V5 T; F& r3 P4 ]; r1 Q  p8 x5 L
修改的代码早有了。到今天不会编译。
. Y# l; J5 u# [2 m$ W需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 G3 e; R9 X* c
  2. #include <malloc.h>
    * a6 }# L5 t( K) }1 a9 \! e
  3. #include <sys/types.h>
    . t% x' C/ d1 i8 c  K) @
  4. #include <sys/stat.h>" {: z, A; ?8 ?; ^; ?
  5. #include <sys/ioctl.h>
    2 m9 L( c: ?+ G0 P
  6. #include <stdio.h>0 ~6 v1 o" O9 P
  7. #include <string.h>; z! I1 _% p/ h
  8. - O' W# Y: c# T6 L2 J
  9. typedef struct {
    4 |  O$ C: F' A% E7 U7 E6 m5 [1 H
  10.         unsigned int        e2prom_cmd_sub_addr;; K' @2 ?* ~7 h
  11.         unsigned int        sub_addr_count;8 t8 z* d  F1 O" S
  12.         unsigned char*        e2prom_cmd_data;
    # W5 |  B/ O  D* Y
  13.         unsigned int        data_count;6 H! O8 K+ ~% n$ m' p
  14. } e2prom_s_cmd;$ u! X, M9 U" J& N
  15. ! i4 q4 S+ c/ ~( h8 v( z3 j
  16. #define E2PROM_CMD_READ 1
    8 u2 N+ i* y" E( Q# w7 S7 q. t
  17. #define E2PROM_CMD_WRITE 2/ a" o& _3 Z9 `: h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 L, K! I$ y+ C

  19. / j1 y7 h- a. E1 `" g: ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 X1 O6 E! D9 ~- i' \  Q3 l. r
  21. {. K- v0 c/ ^' L1 W4 I. o5 y" p
  22.         int fd, ret;
    ! Z5 L$ E# O0 X0 h. i' ?% l
  23.         e2prom_s_cmd arg;
    4 c' g; U* P2 z& |3 o
  24.         unsigned char buf[0x18];
    ; Y/ C; c! C7 m* ~* d! w
  25. ' ^: d6 ^% H; x' }5 S2 K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: T3 L' v' j; b  h- O
  27.         if (fd  < 0) {
    ( \4 D3 Q/ ?, r; c5 r& Q* R
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " `) h' z9 Q- `2 ]
  29.                 return -1;5 p4 b0 ]' O/ k2 T
  30.         }! I8 I. [$ v7 b) z
  31.         arg.sub_addr_count      = 2;9 `  E# n& o5 ~0 r1 t4 l" l2 _) _7 X
  32.         arg.data_count          = 0x18;
    ( J" w7 `3 E% N- Y! S
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 G6 s% h0 {. V+ A7 |
  34.         arg.e2prom_cmd_data     = buf;
    7 r, ?. H% d& [6 q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      x1 L4 H  X: F$ z) ^: J, F
  36.         if (ret != 0) {* K: N6 L% ^) G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; O9 E; f4 r$ X; I( T# P' `+ \
  38.                 return -1;
    - w7 ~3 V+ i9 t* f) m" B7 G
  39.         }2 d+ Y* g3 V0 S3 W, ?
  40.         memcpy(mac, buf, 6);1 @' ?6 {4 R3 d: d, T1 h' a
  41.         memcpy(stbid, &buf[6], 18);- C! G: k* _8 z/ K* b& W
  42.         stbid[18] = '\0';8 u% }7 B0 V' c% P5 u) m! j
  43. . U7 f5 J; [" u
  44.         return 0;- H2 ]# d9 l8 F0 b; q
  45. }
    % {7 v+ S! R2 \; _0 \, t& w+ T; O
  46. 2 Q4 q- V# Z, p0 V% q6 n+ P: `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 E) a' M7 l3 l
  48. {, J- F$ f+ Y9 \: r
  49.         int fd, ret;1 Q$ Q. u6 ^3 {& l
  50.         e2prom_s_cmd arg;" P( @6 {# L# @; |5 f, H$ b
  51.         unsigned char buf[0x18];" a! A( d; {( R& f
  52. 8 F4 B+ f2 e3 A1 A. f
  53.         memcpy(buf, mac, 6);
    3 {/ ?( r& U  D) o  b! A7 b* N
  54.         memcpy(&buf[6], stbid, 18);& u6 z6 @. {. B8 s! v- ~, A1 s
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 }: d( e/ b4 b  U8 J, s
  56.         if (fd  < 0) {
    ' n  X4 c. g* S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % K( c, q$ O1 Z/ }" \
  58.                 return -1;
    % n7 x  n6 B. @3 H( ?
  59.         }* W8 }( R* ~& w
  60.         arg.sub_addr_count      = 2;
    ) }* O' n  m4 v0 x1 x
  61.         arg.data_count          = 0x18;
    0 M2 Q. [8 d6 w2 A$ r
  62.         arg.e2prom_cmd_sub_addr = 0x290;% F+ R8 ~1 Q& }. x8 J) j% L4 V0 {
  63.         arg.e2prom_cmd_data     = buf;: v5 j5 Q: k7 R: J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - I5 w' o  Q; y) i# z4 F- N/ v
  65.         if (ret != 0) {
    $ [5 c, Z: G2 S! O( B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 T, @% e+ P$ J8 G+ h) b7 M
  67.                 return -1;
    . \/ p! N* R( b/ ]9 `
  68.         }( n: Y. T) _' a$ k; G0 T
  69. : g) [1 F$ b- ]! @9 x1 ^
  70.         return 0;
    1 Q9 @( L/ l  f5 k' ]
  71. }- ]: y5 f. `6 D4 E9 |0 X: Q
  72. , V# o1 U$ o7 ?; v  q- }1 y9 w
  73. int main()  _5 ~9 \$ r% k0 @( e# A& m$ T/ b5 z
  74. {
    + ?$ Y  J2 q' ?3 o0 q, y/ b! s
  75.         char c;9 G  x3 N' v3 n2 U# s
  76.         int i, macs[6];" h" H( G) g3 a+ ~0 e4 l
  77.         unsigned char mac[6];* t" b' d& F. L% l7 G# }% o* F8 J
  78.         unsigned char stbid[256];. {& E7 @# n& p$ l" G
  79. : m2 f& R5 D  i) k3 A  j  e
  80.         if (readparam(mac, stbid) < 0)( {4 y! {  a6 g9 p. q4 y: Y! _! g
  81.                 return 1;# ~" C; o! O1 \( G" U# g- p  K
  82. 3 n; w& i2 [0 F7 @+ T& r
  83.         printf("Current parameters: \n");/ x9 n' L1 K4 y7 P+ v+ d+ n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 U2 s) c6 S* I% z/ U
  85.         printf("  STBID: %s\n", stbid);
    8 a/ ?$ k5 n! h' H& P
  86.        
    4 d' W* c; N! c7 Z0 C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * D, V. B& e$ D- M- @" e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 e- u/ G/ S$ X8 A# Y+ s6 Q% {
  89.                 printf("Input MAC error\n");
    ! S& }, O/ e  L" O5 M1 x
  90.                 return 1;
    : J. C; F  h" g7 ?
  91.         }7 }8 B6 I. W$ i% P
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * _, ^" q4 _+ o8 R& z
  93.         printf("\nPlease input new STBID: ");- B0 p8 l$ Y+ ^' c" s
  94.         scanf("%s", stbid);: ]" X  M1 \: p
  95.         if (strlen(stbid) != 18) {1 X1 u2 @( R6 w$ v" M
  96.                 printf("Invalid stbid\n");. D) e" u% ?) w* S" b
  97.                 return 1;6 `5 O0 m- T* P) }# j9 R; h
  98.         }
    3 A7 q" x9 }( }+ A: k* \. I7 a
  99.         printf("\nNew parameters: \n");
    1 v8 S+ F  v( @0 L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 j+ d+ ?4 F2 d
  101.         printf("  STBID: %s\n", stbid);
    ! o4 O+ {+ F) l. y

  102. 0 ]5 w3 N/ L) A
  103.         printf("\nDo you want to change paramemters? (y/N) ");! f7 j; C4 y0 S8 e' i, ]1 f5 \
  104.         for (;;) {( r+ t: f% o. C8 u& ]$ L1 H
  105.                 c = getchar();
    3 @% {% c  e$ u
  106.                 if (c == 'y' || c == 'Y')
    $ d, d+ o  l' n1 M/ Z. W( }! U
  107.                         break;0 j* N5 t# T- S5 W
  108.                 if (c == 'n' || c == 'N') {
    : z3 a/ `- B/ |# v7 S3 a" ?1 t
  109.                         printf("\nAborted.\n");/ O9 a* N4 I' ^( d2 W7 {( Q9 \1 N
  110.                         return 1;7 j5 B/ c+ L1 A0 A) _9 n
  111.                 }
    ; A$ W, N* L# V
  112.         }
    ( E4 d  Q4 u: @# h" T( X0 s$ a# b: A5 j9 _
  113.         if (writeparam(mac, stbid) == 0) ( w  S/ @6 F0 c2 X
  114.                 printf("Parameters changed.\n");
    / z2 x2 y. Q! u$ C' y2 X
  115. 3 m/ `4 ]1 C: B9 W
  116.         return 0;( Q- j, c5 p3 d3 n3 Z, n
  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 B1 b$ \# F2 B! I7 ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 k' N) x# |9 x你用的编译命令行格式是什么?
+ r. H) C: t# J! T; P6 C
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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