找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15017|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; j3 c2 [0 O7 \0 i7 g: a1 E: `' a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / }+ z5 r' |" X# V" o4 [  F  w6 j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( v* F( h/ e/ Yusage: himr <address> <value>. sample: himr 0x80040000 0x0
- _6 u, D7 U* _% l3 J$ O2 t  X$ V: w" p; V' A! ^
4 C& k7 f1 g) |$ j/ t
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?+ ]1 ]8 Y) n) V3 }8 w+ p
9 ?/ z" {+ Y5 |& Q$ H
补充内容 (2012-3-8 09:42):
! p) Y. I: w4 Zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 F; X  P# t5 h0 @, D" _这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
( s8 \! J  K% Z! w
/ N  U& O7 F/ m6 dhimr <address> <value>. sample: himr 0x80040000 0x0
& K. W7 x. N/ @* |# f, @! ~
* g: W  @0 g2 l例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' R' Z6 {+ w: m
himr 0x80040000 0x00
0 l# g9 R+ d. h& dhimr 0x80040001 0x11
% s5 L4 S' I) D( s, Z9 u9 Ahimr 0x80040002 0x22& ]: s3 r& Q  Z0 \$ G' m% z0 @9 X
himr 0x80040003 0x33% L& D3 M7 d1 s& s) w( z4 J
himr 0x80040004 0x44
$ \, ~! U; ^7 [# W+ f% k2 |$ }himr 0x80040005 0x55
( L! k0 D; @5 e
/ A7 E# Q7 ]/ ySN也是类似。
6 D; D( Y6 L0 v* J3 X) I% e+ p3 d" Z, ]
现在主要是,谁告诉我们MAC和SN的地址?
% R& B/ g& K) u! ]5 F8 w# L' x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , T  T7 p7 c9 G* A
一直想找到运程修改MAC和SN的办法,苦于无解啊

5 n  D" e$ Q% W$ O8 {! J$ e0 j源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 ?) s1 l8 Z1 d8 m  |* B6 I3 f' O3 E3 ~5 n1 u
修改的代码早有了。到今天不会编译。
, b* G( k4 Y/ g# l* E1 Z4 n需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& [2 v5 {6 p" k, s1 R/ ^6 t3 T
  2. #include <malloc.h>  r$ p- B( N3 F0 O
  3. #include <sys/types.h>' S% R: h+ W$ e* Z
  4. #include <sys/stat.h>
    ; F! W' B# U$ e0 I% |
  5. #include <sys/ioctl.h>7 ^) ~& F% G5 ^$ v/ z7 H# ~& n" @
  6. #include <stdio.h>
    ! |$ e: J% r" c3 _: E# |
  7. #include <string.h>& t0 M4 m9 Z: P( Q3 H2 o3 m7 T
  8. # W9 l+ T8 t/ l* _& G/ H
  9. typedef struct {
    + G4 p- x, |% ?3 z9 T
  10.         unsigned int        e2prom_cmd_sub_addr;" o  I" c# i# Z" S4 K" i" l* B
  11.         unsigned int        sub_addr_count;
    5 w* C0 o$ v; d( V2 _
  12.         unsigned char*        e2prom_cmd_data;
    % ]# S+ [5 [) c5 }9 F% [
  13.         unsigned int        data_count;3 n, f. B' E, _
  14. } e2prom_s_cmd;
    9 W* w1 z1 y3 a( w4 d: ~/ B
  15. 6 ]6 D% m5 }$ g6 ]; o- g. Q
  16. #define E2PROM_CMD_READ 1
    & P4 }5 a' B2 f0 k% V# j
  17. #define E2PROM_CMD_WRITE 2; j5 H$ i) J; n7 y  \" w. m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 y& U7 H1 D. D( }4 A
  19. / M: z( _/ S) M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " d; m- v4 H8 e4 d6 e
  21. {7 |; `( }$ w# j/ Q3 J
  22.         int fd, ret;
    ' o0 ~0 t: E" W9 D/ b0 X6 S7 r
  23.         e2prom_s_cmd arg;
    ( U* U, _9 H* f4 @) Q; |
  24.         unsigned char buf[0x18];( m3 s0 a6 u0 y9 ~) E: b
  25. 9 I: G* A0 O' p4 c. k0 @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: d! T; ^2 a( c: b6 g' _! w
  27.         if (fd  < 0) {/ h6 l6 C3 I& w0 ?9 V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + b# H+ @7 C* r4 T4 O% k6 V
  29.                 return -1;9 U- j9 m$ ]1 X+ w% p0 B
  30.         }, B, W) D. w* D" Z7 g& Q
  31.         arg.sub_addr_count      = 2;
    : [( n/ {3 A4 l( P
  32.         arg.data_count          = 0x18;
    ( _$ s8 n7 Z- o% @: Y  X
  33.         arg.e2prom_cmd_sub_addr = 0x290;- V5 r" D6 M# U5 L! D
  34.         arg.e2prom_cmd_data     = buf;
    1 ~) r( A, q! y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , ?+ w0 r5 K" `: q" x& M5 d
  36.         if (ret != 0) {
    : v6 w3 l- P0 O7 ]5 ]9 d/ C: I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 ]) g, a) \6 c! l
  38.                 return -1;
    3 o- V; p/ J% ~) u( }. O# g
  39.         }* Z. q# a: P6 p
  40.         memcpy(mac, buf, 6);1 B( c- \5 a( V( e7 G
  41.         memcpy(stbid, &buf[6], 18);
    2 K- H2 q3 t2 M' c7 d- S
  42.         stbid[18] = '\0';
    . G+ E  n: B/ e; a9 x0 X; {( _
  43. , k2 @5 a2 d: s: z
  44.         return 0;  y5 e  n% J2 r4 \
  45. }/ O" h! g6 q& F0 ^, w% p- q/ W/ e

  46. 4 I$ |) f0 R' {) o
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 c  Q7 Y8 n! {0 I2 s: M0 S% ?
  48. {: g* X5 f. g! E' X5 x4 b" x" Z
  49.         int fd, ret;9 }. M3 w/ ~' W( q7 p5 a! h  F, J
  50.         e2prom_s_cmd arg;
    5 o0 ~% E9 f/ Q' j0 ~  I
  51.         unsigned char buf[0x18];
    $ o3 c7 Z' P" R3 G

  52. ( o5 L8 E& o6 L( x; U
  53.         memcpy(buf, mac, 6);
    5 G  v% \  i: Q: L4 |( W( u
  54.         memcpy(&buf[6], stbid, 18);7 J  \% M8 i2 H) I+ w1 `1 ?
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / e) [0 D" {1 x: f2 ]1 x
  56.         if (fd  < 0) {
    2 _' n" W4 Z# Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) G7 l% X/ u( b7 _7 D2 n1 ^
  58.                 return -1;' J1 m0 h% V) t+ C: ]6 F, x: j
  59.         }
    7 p5 x0 F% P& c$ ?+ n6 T$ T
  60.         arg.sub_addr_count      = 2;
    % B! x$ V. O8 b* `6 O- J
  61.         arg.data_count          = 0x18;
    $ S/ l9 u8 l9 E% |
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 d5 e8 D6 P# p* S( C* L- `
  63.         arg.e2prom_cmd_data     = buf;5 M1 m7 Z6 c7 P! o" [
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & i2 T! Q1 G( A
  65.         if (ret != 0) {' G/ C; S% |! `  f' X7 ^! y" Q, F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # d/ j8 Z8 M& _* B$ J
  67.                 return -1;3 v" \% ]% y. i4 _+ O
  68.         }( ?: c, J! G- {6 h
  69. 7 k- l6 k& u; F+ ?" F* x0 _& l3 R
  70.         return 0;+ [7 e' c- ?8 ~  F! e* l
  71. }
    . C5 C9 J5 d+ A1 g

  72. 2 j, _  a3 P, V  F! _9 i
  73. int main()
    5 k- g, ?& i( H3 q2 P$ O( h
  74. {
    9 |2 E. Y# g7 \: D+ J5 l8 M" @$ d
  75.         char c;6 k: v# i. K! c, ?/ g# L; B) Z
  76.         int i, macs[6];7 m0 w0 X4 B/ H% ^3 o( {! t
  77.         unsigned char mac[6];
    : z/ D) i# z0 j, s5 |
  78.         unsigned char stbid[256];
    1 Q$ e# U: P: r
  79. 2 R, t8 t, Q7 o; j
  80.         if (readparam(mac, stbid) < 0)
    * _# F. y! q$ n! n
  81.                 return 1;; @/ o7 R- b+ y" Y$ ?+ O4 ^1 I$ h1 Z

  82. , [+ E) u4 x: g3 e
  83.         printf("Current parameters: \n");
    0 }. |9 I8 B0 i- |$ w) k6 }
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ v! @5 d2 t5 V, c' p  h: i
  85.         printf("  STBID: %s\n", stbid);
    / a; X: N1 X- B. t- L9 Q- w& e' l" b
  86.         3 X7 @) Z( q, ?: T2 d' b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 ~1 H1 F8 i3 _
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 s  z; e+ h6 a5 a2 }: L, {
  89.                 printf("Input MAC error\n");2 f# ~3 B! A8 S; A8 g
  90.                 return 1;9 m) K0 ~0 q  t( t$ h3 ~
  91.         }
    . U1 h4 G& b; l4 h2 |& ]2 ?* D& B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& f! e5 T6 X( I. N, W
  93.         printf("\nPlease input new STBID: ");# a! u( ?4 D9 R8 ], n# V/ {2 q
  94.         scanf("%s", stbid);/ t5 w' C9 S" ~* _
  95.         if (strlen(stbid) != 18) {2 B* H# @: Z5 e
  96.                 printf("Invalid stbid\n");
    ) c: E5 `2 G' v- y. t; w. G9 E$ z* O
  97.                 return 1;" `! U) F6 P5 m' o4 |, X6 f5 k
  98.         }
    9 G/ h- x+ ^8 L: ~5 F! A
  99.         printf("\nNew parameters: \n");0 m, z. ?) [- S8 W" \8 t
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 |7 V" k# a3 C- H( m) \! h4 x0 W
  101.         printf("  STBID: %s\n", stbid);
    7 h- t: W: l8 y) q9 l
  102. - y( g/ m/ M3 k0 B* Q& p
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " a4 i9 I: _& a" z7 f
  104.         for (;;) {5 B) E$ F4 P, G. @
  105.                 c = getchar();$ b; }7 m2 o1 F9 r4 b7 {
  106.                 if (c == 'y' || c == 'Y')9 L7 ^! [: f  ~( S% ?& j
  107.                         break;# ?, D9 H6 o- v) z
  108.                 if (c == 'n' || c == 'N') {: p- q; J8 i( V( A" {0 o
  109.                         printf("\nAborted.\n");. }5 x' j$ G# x& ^0 O, U
  110.                         return 1;
    1 _' w1 h) S6 e
  111.                 }
    : `6 n. q4 W8 y7 U3 E! Q. K, r
  112.         }
    % @- e, V$ W3 U$ i
  113.         if (writeparam(mac, stbid) == 0)
    : _' h  B8 N: |$ c
  114.                 printf("Parameters changed.\n");" r" t8 P2 E$ k3 k; l# Y% g5 O1 a
  115. ) {+ q1 ]# F# R# _
  116.         return 0;
    & `% D* j0 v. v
  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 1 V  P" y& S9 s
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ l) s; U/ R" R' G5 c$ `, x0 v
你用的编译命令行格式是什么?
4 B" j' B4 |# F) [5 N; e
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-10 19:04 , Processed in 0.023632 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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