找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15452|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" [$ z1 N2 {- I1 i1 B# b( [7 }2 v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # \9 u" H8 a% A% A* \5 _0 s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% \: S6 k: E; d1 [( l& Ousage: himr <address> <value>. sample: himr 0x80040000 0x0
1 t& ~" q/ d9 `1 j( P! i* L) @. _* y+ h5 c' I# R6 G
, K5 |+ X: L+ x  L/ d
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: a$ L, G! k3 @5 X1 `/ W
: D1 m4 H4 d( W6 p& ^) `补充内容 (2012-3-8 09:42):
" ^! c0 D  D) r7 F( D& _http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 p; s0 D' D! @# j( [" A" U
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
; W+ y& z+ M1 x& x: v; q6 c5 Q, g( b
7 S/ i/ g, |- q' H& Bhimr <address> <value>. sample: himr 0x80040000 0x0
6 T# A0 F$ l% X9 y% \* k9 w5 q
9 e* K6 Q; @% T( d例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. h! }. s, ?" i7 }himr 0x80040000 0x00
" N- O5 q# V3 N+ h( |0 V8 shimr 0x80040001 0x114 b! r; F4 Z: B. Q$ I4 h3 J9 N1 S  I
himr 0x80040002 0x22
$ z# R5 p7 q- \0 E- ^* ^himr 0x80040003 0x33% B: B/ q' o; ~1 C, `9 z
himr 0x80040004 0x44, C9 _' V" v9 [( ~1 n* [
himr 0x80040005 0x55
, M6 Q0 V; m4 n  s' E+ x9 w; N0 K) w( K) ~  {+ y8 y
SN也是类似。
) `3 K0 k' Y1 t: @5 j) |; K& Z3 A; M. B# N; `- @( |" t9 `0 N
现在主要是,谁告诉我们MAC和SN的地址?
2 V) |* B, n0 a1 j1 l
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ i' R7 D* V0 o1 o一直想找到运程修改MAC和SN的办法,苦于无解啊
; q: `6 |; m* J6 \' J
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , w- Y& t6 v4 N* Y
' u1 y, |3 r9 F! x
修改的代码早有了。到今天不会编译。
) \6 @; l# W! _, T3 u需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>. Y' U. z; ?' E! n9 m
  2. #include <malloc.h>+ t" X9 N0 S# J5 G3 \2 R' u
  3. #include <sys/types.h>
    # Q. c6 U" A  F# `" l" d
  4. #include <sys/stat.h>6 ~! F0 X+ v9 R( W7 u% E3 M% N& I
  5. #include <sys/ioctl.h>
    ! i( Y( {' v1 P9 H( `
  6. #include <stdio.h>
    ; L- c" ~" U- g) Y8 Z
  7. #include <string.h>  j- O0 \, d  U' H% N5 i6 ~

  8. 5 j! Q% A" W, b- a* v  t/ _7 R8 s
  9. typedef struct {
    1 ?- H: h/ y. K, B' I# E* [7 m
  10.         unsigned int        e2prom_cmd_sub_addr;
    / @. f2 y' m5 |0 x8 G' ?) R
  11.         unsigned int        sub_addr_count;
    7 m- }2 g  M5 G/ Z2 f! X
  12.         unsigned char*        e2prom_cmd_data;
    / K" D% }2 B4 h2 J$ V
  13.         unsigned int        data_count;9 D! l+ [1 D* w; I3 U* t# H
  14. } e2prom_s_cmd;
    ; E2 t! f# \; m5 L
  15. ( m1 a- g3 P/ Y4 D. ?
  16. #define E2PROM_CMD_READ 1- U" R4 T+ K+ ^7 K( K! M) N9 B, R% E
  17. #define E2PROM_CMD_WRITE 2; V3 F, W' Y0 R# W8 K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# k' c/ o, K9 j. N& M: {
  19. $ R! v3 ?( X, Y4 ^( s9 P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 l9 I( h: b4 J+ r* h" q- ]) J
  21. {+ y0 \5 t' j) P* K, f# c
  22.         int fd, ret;
    5 L5 c. a7 l2 R0 Z, B8 D
  23.         e2prom_s_cmd arg;  Z% @6 T- E: u- k
  24.         unsigned char buf[0x18];
    - J4 t0 j+ C# W  N" o& o  c# S' C' c

  25. * N- H+ M! g9 @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' G# C0 ^, G! t( y3 J' s0 D: o" M
  27.         if (fd  < 0) {
    7 ?! d5 a# o+ S. O$ ~8 V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 p( |: q2 R$ x) ]
  29.                 return -1;: |# l2 g) E- M( @
  30.         }
    % @: M3 \% v" n! y0 q, _2 Y
  31.         arg.sub_addr_count      = 2;. S$ w) j/ h+ v) V* X& Q4 p
  32.         arg.data_count          = 0x18;
    8 X+ N% U/ ^. l
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 _, \# a  B" N, u/ b
  34.         arg.e2prom_cmd_data     = buf;/ ^1 v  d+ J6 Q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      o) e0 m# i# f# {* T8 t! k2 }
  36.         if (ret != 0) {
    * b2 e' B4 `# ]' \+ K% E8 O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 a! R2 U' _1 n9 B
  38.                 return -1;
    . H9 X& e2 _( z
  39.         }3 f; ^5 |( J' G+ w' Q7 e( K( c
  40.         memcpy(mac, buf, 6);' A* |1 \, @( X5 ]( t( q* y: \- t. S
  41.         memcpy(stbid, &buf[6], 18);1 p) o# G5 `9 @; ^
  42.         stbid[18] = '\0';
    1 Y2 S- }& z: u, p1 A: i; G+ h
  43. & _6 |: W0 k4 q. n3 }; j
  44.         return 0;
    . _- |  a$ x* g& b" i5 `/ E
  45. }
    - m* @0 i& N! X% c4 ]0 ~
  46. 1 z+ A$ n9 I. b; d8 A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- E" F' J9 e5 [' n
  48. {1 j% C" s9 r; y5 a0 E( N
  49.         int fd, ret;: C; z7 R7 K1 c# l
  50.         e2prom_s_cmd arg;
    . C9 q  O9 D# x9 m- n/ @/ x
  51.         unsigned char buf[0x18];. j6 ]! _! g& s) p% @# d" P2 u

  52. 8 a# k$ L8 G1 h$ X  v
  53.         memcpy(buf, mac, 6);4 |8 L" f2 `4 A  M6 n$ g
  54.         memcpy(&buf[6], stbid, 18);
    " V) E& L9 J) s/ k( h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, G' d& v( c" C& [0 W: g
  56.         if (fd  < 0) {
    ; Y, z0 o3 N, S; [+ F+ D7 T; O: x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  ?& }7 d0 I) _! b
  58.                 return -1;
    1 }4 {- y+ `+ k+ p5 a
  59.         }% Y8 N1 q) x: i
  60.         arg.sub_addr_count      = 2;
    " Z' o$ v) b, d" n% }( b# b
  61.         arg.data_count          = 0x18;
    + O$ Z/ T! N# S2 S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " v/ r3 S# B- T9 S* o! K( q0 N1 ^. \8 m# @
  63.         arg.e2prom_cmd_data     = buf;
    4 K% o' H( X( |$ B9 P# F8 k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # q+ Y4 ^" \) ~8 q9 z" ^
  65.         if (ret != 0) {% ^0 a* ?# Z2 }* x, S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . V1 ?& m& R# O3 e5 R# D
  67.                 return -1;# C7 N$ G9 o* h1 l( `- b7 G
  68.         }
    & R+ C: J: u+ Y! m8 _( n, t
  69. 5 v+ I. K$ ]$ u, W
  70.         return 0;
    ; C7 L. C$ R& u; {/ s
  71. }3 Z/ ?  j1 P8 y

  72. " _) N1 v9 A# R/ H. p
  73. int main()
    - n7 w3 f% @. J3 f4 x; @: M
  74. {9 c0 v, M' h5 x4 T0 F0 m: X
  75.         char c;7 k4 Z6 k1 n5 A' |3 z) @
  76.         int i, macs[6];
    * ~! p* d" {+ T! W9 `) Q: V/ o& M* |
  77.         unsigned char mac[6];' b& `$ ]1 B1 `2 B
  78.         unsigned char stbid[256];
    : n! Z( G7 j/ x& y

  79. ! }$ B" b4 l4 e" H8 r+ N, i5 s: X
  80.         if (readparam(mac, stbid) < 0)
    5 @" w7 |1 Y+ X4 ], E
  81.                 return 1;
      p0 C1 e* j/ E7 o5 p$ h/ s5 }

  82. 9 l* n9 W/ i! {5 O0 B7 g
  83.         printf("Current parameters: \n");) i2 ^& y5 G! l! u2 R0 U0 G4 C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % X# O1 F8 s2 s: N. z4 C
  85.         printf("  STBID: %s\n", stbid);4 j% K' }" ^! l' n3 {9 G
  86.        
    : ~2 ?2 P" B8 r" c$ s/ v9 W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 n7 L) Z$ U4 i( A5 J4 M7 y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
      l* E& K2 O8 Q. G& E+ z5 h
  89.                 printf("Input MAC error\n");3 h+ I- X6 n# R6 c& s
  90.                 return 1;
    9 _  P& `5 s% A+ H
  91.         }1 {5 |3 d* z- S9 |+ ^9 V* ]
  92.         for (i=0; i<6; i++)mac[i] = macs[i];1 r/ M1 @# Q! `' d, `# a
  93.         printf("\nPlease input new STBID: ");
    % Z, ^) }6 f  t8 T4 x/ u- G
  94.         scanf("%s", stbid);
    2 t: G. \+ Y) I4 G0 V
  95.         if (strlen(stbid) != 18) {
    # b7 u* f2 T9 ?7 M! N
  96.                 printf("Invalid stbid\n");
    ! O# n: E/ B3 K9 J9 ]' g5 y
  97.                 return 1;2 x: Z/ y6 i* P, c* y
  98.         }
    ! W/ M$ Y/ p( w' _0 m( f/ v
  99.         printf("\nNew parameters: \n");
    . N- v# x: _4 O8 k8 z8 F
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. q7 ^9 a" s+ Q" o& ]7 e, m
  101.         printf("  STBID: %s\n", stbid);1 f+ z3 V- ~  U6 `
  102. - h9 ]& N+ J+ `
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & `3 u; f! N* u; s  N% S  Y
  104.         for (;;) {
    + {: S5 K( a4 i( f! n. Y8 |
  105.                 c = getchar();% z# o3 [. c# H! ?" b
  106.                 if (c == 'y' || c == 'Y')
    ! {0 @7 N, j4 X( V2 a
  107.                         break;8 i3 |; S7 X8 h4 s( t% A/ _/ R
  108.                 if (c == 'n' || c == 'N') {
    ( h) N0 T/ u- @0 z+ ]2 M
  109.                         printf("\nAborted.\n");
    , @# F! R( S2 c; e7 C
  110.                         return 1;8 `% E7 M: ]4 ^$ y7 R; L
  111.                 }
    " L4 _7 B- q& ~; {
  112.         }
    " H6 I8 x1 f' G! a4 P$ Q
  113.         if (writeparam(mac, stbid) == 0)
    5 a6 o/ O4 B5 j  x
  114.                 printf("Parameters changed.\n");  @6 }4 \# e" C, v# f5 W  J8 J6 S9 t
  115. 1 L% U# z9 A9 x. f
  116.         return 0;4 K# u; `. \9 ?6 D' b) q
  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 9 e1 Q; Z$ v# y  Q: t* D
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. u, b9 d, R. Y5 E你用的编译命令行格式是什么?
4 F4 H6 d/ B7 `1 Z' \% Z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-7 05:28 , Processed in 0.032765 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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