查看: 16344|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ I- x% F8 e# H/ y) x0 U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % B# b) u7 P1 Y% d9 f- U( p5 B% a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 b; Q0 h7 H4 Y+ h( Busage: himr <address> <value>. sample: himr 0x80040000 0x0
3 D' n3 W; Y" X" I$ t
: _3 p) S$ N1 M$ ~( T$ h( u  b
# m. s7 `3 @% V. Y9 L) X不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% R, ?4 m- \: k# p
8 Q' E- N6 N' ^  |补充内容 (2012-3-8 09:42):& J" J, s- ^! J- q2 \, ?9 ~7 k) g
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" S2 N4 W5 v* W- v这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。' T9 q. u1 P! d, {2 }; i6 a

3 I! h' Q3 W9 W' Xhimr <address> <value>. sample: himr 0x80040000 0x0
' w8 _7 _5 p% g, v! ^
4 m$ K, @. P6 M4 A例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 [5 C8 n) ?  X9 W5 Z" E$ \himr 0x80040000 0x00
6 s- f, l8 H! O, D7 g& fhimr 0x80040001 0x116 Z) r6 R. C# Q9 e
himr 0x80040002 0x22
/ B4 I  I+ C) B% M+ k4 v! M" V3 thimr 0x80040003 0x33( d" z0 ]1 M* g+ a8 p) Q+ ~8 m
himr 0x80040004 0x444 ^) A8 L6 U3 B: M* d4 O
himr 0x80040005 0x552 ]9 d3 }. Y, o8 l. C# o* p

: A, y4 L5 ]* W- i" Y/ eSN也是类似。; p. _- s5 R1 S# }: q0 m; r  F
+ R: Z; U* m; H5 V* y' b
现在主要是,谁告诉我们MAC和SN的地址?
4 s; ?+ a* L# I3 Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - i1 H+ i8 Z2 T. N+ O
一直想找到运程修改MAC和SN的办法,苦于无解啊

( e9 G4 L) i8 x1 w2 r源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 J4 M% B; N" y5 Z  E
+ @7 x: Z; |3 J& }; i% A! }4 u6 @
修改的代码早有了。到今天不会编译。6 i# y8 ?! p  U' o; H$ [; l/ y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 Z" ]' D2 N) o% _; n
  2. #include <malloc.h>
    ) D1 G( O" m/ e/ B
  3. #include <sys/types.h>7 J# T9 t6 K0 _
  4. #include <sys/stat.h>
    # [- b5 |( C# u1 L4 v1 Z" g# |" q
  5. #include <sys/ioctl.h>
    / R" {1 x9 c0 `) |1 X( [3 l
  6. #include <stdio.h>
    ! Q. C7 C; `1 g7 t  O4 i- _
  7. #include <string.h>2 z% t. u  F0 Y
  8. * C6 ?. E! c0 _  i- y4 I6 T5 V6 s
  9. typedef struct {
    . y9 m) M. ?- V  ]) x) d2 |5 {
  10.         unsigned int        e2prom_cmd_sub_addr;1 b, x3 {( {6 M, g3 j* z
  11.         unsigned int        sub_addr_count;
    6 X3 B# v6 d- y3 E& s
  12.         unsigned char*        e2prom_cmd_data;4 }% W& U# y+ s, i0 y% o) B
  13.         unsigned int        data_count;  ~& F; W$ l1 E6 j, w1 D
  14. } e2prom_s_cmd;
    9 ?$ F! X+ Y. {% p( C3 Y& ]1 w6 F
  15.   w# h2 \' m; b# ^$ f0 g
  16. #define E2PROM_CMD_READ 1- h* i5 K3 P0 z/ ]) L9 y
  17. #define E2PROM_CMD_WRITE 2" B1 t" w$ A, P  H' N: I- O
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", ~* ?* R+ U% V3 _4 L2 W% ?$ H

  19. , S! F2 M1 o: r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 u* U7 ~& N* l5 s' N' C1 n
  21. {" m" s5 H) s. q: f' H9 j
  22.         int fd, ret;9 |+ E' X" P$ B
  23.         e2prom_s_cmd arg;* I9 Y7 k( b8 l) R
  24.         unsigned char buf[0x18];
    6 _" S: m4 q, _4 L' e* G
  25. + G  A" G7 v8 P/ D8 h; ?% Z+ Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 u* i( L! y8 T
  27.         if (fd  < 0) {
    $ E2 R! J, d$ o1 `/ _* p9 e5 p" Q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 f' F) v) h7 }& ^* C9 D
  29.                 return -1;$ }% k3 e* j; U4 [4 ~2 ]- s$ p
  30.         }
    , o9 i* }0 m, X0 P1 y, b% ?
  31.         arg.sub_addr_count      = 2;0 I9 c* d8 u& [1 r/ y' {
  32.         arg.data_count          = 0x18;" T8 M% c0 N" i' a" ~8 w2 _. R
  33.         arg.e2prom_cmd_sub_addr = 0x290;, F& x: I; P( I: {( `
  34.         arg.e2prom_cmd_data     = buf;
    : ^7 M' F7 h0 H6 O
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 l" p8 f9 r& }  q1 E
  36.         if (ret != 0) {  f7 T* D& x8 k
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) g+ ^2 H3 `# q
  38.                 return -1;
    9 N' ~3 j8 _8 y
  39.         }, n9 b5 Q/ r/ S
  40.         memcpy(mac, buf, 6);, e$ [0 [6 J6 u0 Q- Y# J( v
  41.         memcpy(stbid, &buf[6], 18);
    2 p' i" N! }- a* ~" m7 C
  42.         stbid[18] = '\0';7 M/ B( @( t: `" O- r' ?2 t
  43. & U0 p, C" q) u( A- K& k2 H
  44.         return 0;+ D+ J0 x& y* x2 j
  45. }
    2 @# ?" `- z* o) y- Q

  46. ( a7 I% r, p) X8 L6 \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    1 Q! j4 b. V4 x' u
  48. {
    4 ^. f" G6 [& _  G4 q3 X- \
  49.         int fd, ret;
    + e" G  _6 d, S$ z5 l
  50.         e2prom_s_cmd arg;/ n& P. L+ x2 h( i' l+ h' |
  51.         unsigned char buf[0x18];- {4 j8 P, q' @  D8 Q

  52. ( ?% F0 ?- u1 d
  53.         memcpy(buf, mac, 6);. W8 b  z, R+ T* U+ A- Q7 _0 z, g  m
  54.         memcpy(&buf[6], stbid, 18);+ {: u; Y( Q& r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" {/ N9 L% {' Z
  56.         if (fd  < 0) {
    8 O8 e, |6 u7 T2 z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * q8 `, A! X' ]1 s; x6 F2 s
  58.                 return -1;
    * p8 O/ Q, d" \
  59.         }$ e& D5 y  q+ Q* [( U
  60.         arg.sub_addr_count      = 2;: E, k! Q6 m  O# P
  61.         arg.data_count          = 0x18;2 Q& s# q% g' e% R" j1 [7 r- ]
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 S  j/ c5 P9 n3 `& H
  63.         arg.e2prom_cmd_data     = buf;
    2 m# L; e1 Z- n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);6 }( i" j( J4 K
  65.         if (ret != 0) {
    + a& X4 g! n; Z- |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; F. d* Q# Z4 T1 e
  67.                 return -1;7 Q0 g/ G! w, ]" u
  68.         }: t  {% r; S  W/ T, ]: t

  69. : K) Z+ v( X2 A. b, h
  70.         return 0;
    / z* V. `5 y" z$ v+ X9 ^$ [( ]
  71. }* y* U! B* s6 p3 ]
  72. 8 o& q. _' a7 z, r
  73. int main()4 A2 F( n7 _+ d  z/ R
  74. {
    7 L2 g+ k, b+ Q. A
  75.         char c;% t# M8 w: r' k' N8 {! n( J+ L
  76.         int i, macs[6];
    , j( H7 Z# R$ P; E! u
  77.         unsigned char mac[6];& e; k) I; c# [# q7 U3 S& v
  78.         unsigned char stbid[256];
    6 I4 a2 |  t! R( U; H! B' r( U
  79. & L* e  P0 _4 W7 X. ~9 E
  80.         if (readparam(mac, stbid) < 0). Q0 Q% ^/ I+ j
  81.                 return 1;: I; T; Z) }) C2 N. \. ?: f
  82. & f. c. Y, Y3 X3 ~: R& H
  83.         printf("Current parameters: \n");
    ! _. r; D7 X) e2 i5 q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . T8 C' t! i3 b# D
  85.         printf("  STBID: %s\n", stbid);6 V$ b- F  E; ^5 G
  86.         . D3 \$ Z& J1 o" f0 X  T( y2 V# n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" m& l# l: M7 U) X% `9 d9 ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ' u: p+ _0 _* ]5 k4 Z5 g
  89.                 printf("Input MAC error\n");9 L2 x. M( ^$ H* \4 ^2 |
  90.                 return 1;9 @$ v8 z: |( ~! `) l
  91.         }/ I9 `: h# d, u( t6 D& I, N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 X3 [# U9 {+ B5 G
  93.         printf("\nPlease input new STBID: ");
    . B4 K) J6 `9 l( i& N) n4 T/ m# S
  94.         scanf("%s", stbid);
    . H/ ?2 k- g1 A# `- ^' N. Z$ A
  95.         if (strlen(stbid) != 18) {
    : _  W3 j: Y% v
  96.                 printf("Invalid stbid\n");
    # E3 t) H1 J6 u8 \" H* C. w) }
  97.                 return 1;
    + t& B7 z1 z0 R7 N' ~/ q- X+ r  P
  98.         }% m* h! m3 }; N8 V4 f
  99.         printf("\nNew parameters: \n");
    ' o3 T5 B. `$ i' u3 @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ q, R: e1 ?" U+ x( X
  101.         printf("  STBID: %s\n", stbid);" v. |6 T; e  E3 W

  102. ' p& n6 V) l( c) ?0 q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    : h$ |/ w# ?/ p3 @# Z6 o& b, }
  104.         for (;;) {- z5 D4 H% T2 }) i
  105.                 c = getchar();( L+ v8 v- R1 D
  106.                 if (c == 'y' || c == 'Y')+ \- T. I7 K2 g
  107.                         break;
    # P: H2 y' a, ]/ b; A7 D' t( R7 ^
  108.                 if (c == 'n' || c == 'N') {  B* U7 Q5 j4 W/ m7 A* {5 ]6 t
  109.                         printf("\nAborted.\n");
    9 P1 B2 m* z  x- z
  110.                         return 1;
    3 ?+ y4 r; d; r# m
  111.                 }
    * T( H3 g, |6 d6 r/ p
  112.         }
    0 T' c$ e9 C& o" s' g0 Y
  113.         if (writeparam(mac, stbid) == 0)
    9 L/ W* J$ U+ l! j. G- Q1 Y# q
  114.                 printf("Parameters changed.\n");1 Q6 A- G5 X) q0 c' j" m

  115. 7 N$ Y, o$ p! r7 U; Q5 _
  116.         return 0;
    5 Q: [( k( y4 H$ R' w. R/ `
  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
$ _- a6 t. |+ n1 W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 r/ J0 Z( F/ }3 R* Y1 ]) p2 M
你用的编译命令行格式是什么?+ G0 Q7 ~, i3 c; X3 L1 R
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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