查看: 17259|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# B/ J: E' l1 q" R+ e- d
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& z( w) q4 K( t4 r0 A& w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, k& _1 ^4 T* g+ V+ E
usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 w' O0 U3 @/ ^' B  O8 P
. p- j, g% {  S& N5 p/ o# ~6 U* _. V% W3 S9 K
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 f& M  N3 ~; N/ M- f1 ~

4 X/ b; K6 l2 j/ A/ B补充内容 (2012-3-8 09:42):
- H) E3 o9 S; ~, thttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 C7 G( w) s( A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
% @7 x1 o& t) D( s3 [- v/ v  C6 i6 K  ]1 _
himr <address> <value>. sample: himr 0x80040000 0x0
9 `* p. T9 Y" ]4 x/ R; H) d& e8 X3 G2 P) a" o3 E
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& g& ]% b& \, @" \
himr 0x80040000 0x00
3 Z1 s( u1 V) ^1 a# W* h! ehimr 0x80040001 0x11
9 W6 T, ]5 ?% ?; Z) ^6 rhimr 0x80040002 0x22
3 L4 y5 d( E& P2 k: M7 yhimr 0x80040003 0x33+ Y1 |" m) w+ X- o+ u
himr 0x80040004 0x445 I9 N/ l! e/ V4 q' i
himr 0x80040005 0x554 Q; T- q# l9 f: }2 W7 j

0 A! |' T( M  u, ]6 GSN也是类似。
* A8 x/ f. A/ G8 {* h" _
$ v/ \; a1 ?& X/ K, i! a& I现在主要是,谁告诉我们MAC和SN的地址?3 p, R# c( g! N$ w1 w) k& ]7 g
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37   D/ Y. U5 K' p5 M$ i8 y
一直想找到运程修改MAC和SN的办法,苦于无解啊
! C5 p& g: z9 X
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 t6 @. |4 M  H- P) p' h

* V; y8 c: F# s/ h" g/ L) r, v修改的代码早有了。到今天不会编译。2 b! h+ s' a# R# Z  f
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 \, ~1 ^/ a7 F+ I& h, y
  2. #include <malloc.h>" z$ O5 ~8 B3 Q
  3. #include <sys/types.h>
    . w$ X5 M& F" }, ?( E" `% \
  4. #include <sys/stat.h>; k+ F& A% O9 S
  5. #include <sys/ioctl.h>
    6 c- h/ e( q1 I( G  k. h+ ^
  6. #include <stdio.h>  B% S4 p0 L! d5 i2 F. x" I+ u
  7. #include <string.h>5 T' v9 G6 U) k& W2 h

  8. $ k8 {, G+ P: A) Z
  9. typedef struct {
    ; V! y. _" Q, F) m% U1 J& w
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 L0 Q5 `5 X& H5 ?
  11.         unsigned int        sub_addr_count;! W1 V" o( a! r5 u1 _
  12.         unsigned char*        e2prom_cmd_data;
    3 @& L; Z% p% `0 B' [  q, w
  13.         unsigned int        data_count;5 |  D) p, w/ O6 u. o
  14. } e2prom_s_cmd;
    0 f- W2 O, Q! R( p4 e, J
  15. 4 {; z- @3 G! L( i$ n. }
  16. #define E2PROM_CMD_READ 1
    0 b4 G2 a2 }! {% M! X
  17. #define E2PROM_CMD_WRITE 2
    " w+ B, ~/ f8 P! X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 R' q) E% v! R' {% G0 d6 ~- C' ^
  19. , e3 h8 m4 g  E1 x1 }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 @; h5 f3 O: U
  21. {8 e  P/ K: t& O( X$ Q- i, f
  22.         int fd, ret;. b# N5 p. P6 v
  23.         e2prom_s_cmd arg;
    ! D8 |- [( d  T4 ]- N( M
  24.         unsigned char buf[0x18];
    7 K/ o& S1 h8 @) h1 L

  25. ! ~; |& }; I  ]' y2 {( P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 y+ d* P5 i3 j4 j5 ]% c, T
  27.         if (fd  < 0) {
      b; D! C0 M( m* F$ F; ?2 b/ \  x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      W0 W, e( r: T0 v2 o
  29.                 return -1;
    / N+ r* P# D1 }+ r% s( G7 O9 ?
  30.         }! c- Z3 }3 m; T! }/ R
  31.         arg.sub_addr_count      = 2;/ Z3 @* \; v8 P7 j
  32.         arg.data_count          = 0x18;
    6 i( Z0 I4 n" z9 c1 l
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & [4 X, [8 Z; v6 e
  34.         arg.e2prom_cmd_data     = buf;
    8 ^* E; s8 t) F/ @- g, N4 o! ?3 c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 C9 s- U& W& n/ Y1 c
  36.         if (ret != 0) {% w+ z  b& E: Z3 q2 F8 j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / M5 o7 p; X+ ]
  38.                 return -1;
    & ^2 f9 C0 b" f$ B+ X& _$ @0 Y
  39.         }: V  E+ H/ B4 M# C9 h( H
  40.         memcpy(mac, buf, 6);! w  @( j1 b( e0 J4 t
  41.         memcpy(stbid, &buf[6], 18);) Y# j2 |+ S/ [2 ?1 v5 D% }
  42.         stbid[18] = '\0';' q: h, g. \( G6 d+ C* ?$ a

  43.   ^. j) H1 q: W8 h" L/ a! K  A$ I. r, G
  44.         return 0;
    ) b/ Z/ F- _$ p8 L
  45. }0 S' s# M; H; X# e) `- {
  46. 2 o9 L( X5 _+ m- h* C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 k# @3 m: C' E1 @
  48. {
    4 O6 f# [: L) n/ Y5 w( }$ Z
  49.         int fd, ret;1 w2 p  x* j9 K4 H2 E
  50.         e2prom_s_cmd arg;3 d3 q1 D+ E- j1 Y& [1 E
  51.         unsigned char buf[0x18];
    0 G  |8 r7 |$ F+ f8 m

  52. / u+ t; y. M+ J7 @1 G  K' |: Q5 ^6 Q. P
  53.         memcpy(buf, mac, 6);
    2 R$ g- `& a4 Q3 D8 @) Z) d( \
  54.         memcpy(&buf[6], stbid, 18);6 ~" r7 T& m  f( F3 Z5 S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 S* w. Y9 G- `5 `- a9 ^8 i0 @) K9 o
  56.         if (fd  < 0) {
    ! @' N( C/ X' z8 N: Q" ^2 p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! ], n/ R+ o) V2 B9 [
  58.                 return -1;
    / _  C9 ^2 s3 v- X! u
  59.         }) T6 C0 A6 ^/ i5 q# O1 J
  60.         arg.sub_addr_count      = 2;
    9 ]8 x, j& O7 W8 v! S: u
  61.         arg.data_count          = 0x18;9 W! p8 \8 F9 L6 t- Q: i1 p
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + S( |7 ~$ J4 f& S
  63.         arg.e2prom_cmd_data     = buf;
      W7 c6 i: Y. }6 _
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& }0 ~4 a8 t# v5 Q7 v2 [
  65.         if (ret != 0) {  s* ?! O) z" Q& v
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 A3 d" m8 g! F6 |- W1 Q
  67.                 return -1;: M& I1 z; y4 V
  68.         }
    2 r' Y/ ]+ |4 l1 h9 [) q7 S: _

  69. 4 w* h9 `$ V) k- V8 N6 z
  70.         return 0;
    6 L- B! C) f0 a. [/ A; }
  71. }
    ! A7 r: L* }, ^! m
  72. ! G$ d, g5 G* _# F) {
  73. int main()$ c7 a/ d; h4 T* r
  74. {2 Y8 u) C4 @1 }5 Z: i! M; {; L
  75.         char c;
    6 S/ L0 l( f) z9 d% ^& ]0 g! S
  76.         int i, macs[6];
    # b. o, p$ e5 s& u% H
  77.         unsigned char mac[6];- f) f- }9 X$ x& `+ \+ i: r4 f; v
  78.         unsigned char stbid[256];& G- U3 q! N- q3 e
  79. 4 |- d+ i# U6 X7 v2 Z1 ]
  80.         if (readparam(mac, stbid) < 0)6 z  M% Z# e3 {/ R6 Q
  81.                 return 1;
    & n! A5 W4 u3 S1 l- ^  a0 Y
  82. $ x  O6 W! r/ {5 c4 t4 G/ B
  83.         printf("Current parameters: \n");2 k+ @" B5 S& H( o, J# V4 s
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 g7 o2 K7 a/ b" {) i$ z
  85.         printf("  STBID: %s\n", stbid);
    0 j3 u6 [+ E6 e
  86.           Z; B) e: ]( n% G0 `- A% L* g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    " m) q7 x6 |" d7 v2 ^/ @% ?7 f1 A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / z8 e/ h, s( C* x9 A$ C" k7 |
  89.                 printf("Input MAC error\n");0 B7 e& ~+ c( F$ A; J1 P& U' \% I1 C
  90.                 return 1;
    : n/ ~2 g% I9 A! _0 O5 I5 @
  91.         }
    1 a9 S( i. {+ Q7 \
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    2 S( p% B5 _$ m! X9 M
  93.         printf("\nPlease input new STBID: ");1 d* G: F4 b# X5 U' K# ?
  94.         scanf("%s", stbid);
    ' c8 e7 h. D2 h/ e# H0 v! B
  95.         if (strlen(stbid) != 18) {0 N  y" n* [; k5 u
  96.                 printf("Invalid stbid\n");' F$ d4 q/ z: j0 A- _" ~
  97.                 return 1;2 g% q& w9 {0 z5 z; L7 M  a
  98.         }! K2 P' _% l/ m7 l+ ?1 S8 _
  99.         printf("\nNew parameters: \n");6 w0 @5 g8 r1 A7 G% y! T, |4 S' x8 P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ S$ I+ u( o8 n: Q: m6 g% j
  101.         printf("  STBID: %s\n", stbid);
    , O7 y" u. k& m" b7 x5 d+ Q* O
  102. ; h+ Q/ N" B  X- J1 y' N
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % Z  W2 d9 a1 x  {( C
  104.         for (;;) {8 x- t" X9 s1 Y+ \
  105.                 c = getchar();
    - ~. Z# }( h" Q0 F. r* q
  106.                 if (c == 'y' || c == 'Y')
    9 k- V( W2 V8 h4 `
  107.                         break;+ P& Y. h5 A  l/ a1 |* J
  108.                 if (c == 'n' || c == 'N') {$ D2 ~" K; w6 ?3 m( T
  109.                         printf("\nAborted.\n");
    4 q$ R) ^& @2 i3 r; a; F6 Z
  110.                         return 1;" l2 q& L/ F8 F  [/ i, ^& f7 l$ c
  111.                 }( r) j0 G1 X/ d
  112.         }
    ; N8 `3 r( b. b  q7 x
  113.         if (writeparam(mac, stbid) == 0)
    : Z$ {  J, i/ ?
  114.                 printf("Parameters changed.\n");
    . _% j9 D* l; A; q4 G. z

  115. 4 q, c$ _0 f* Y% k
  116.         return 0;
    : a9 o1 I+ r. y4 F+ g& 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
2 F6 z3 @% B8 o1 _2 C在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! h/ I5 E" F# V/ K2 L
你用的编译命令行格式是什么?
' s# Q6 ^/ e# ~9 [6 E+ j( i
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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