找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15658|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% l) f, p: }' j- y5 h0 j; D% Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" d" j, o- m4 j; z% x$ h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, }; A6 Z) H  }usage: himr <address> <value>. sample: himr 0x80040000 0x0
- X- Q4 c: T4 P# ~/ \  ^" B
; Y$ Z- m( D9 o, ~+ x) c$ {1 L0 _3 W2 p& Q8 X9 s' ]1 z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?  \7 P3 w1 x/ H& r, L# d
" X! b7 U! f$ c, ^- s
补充内容 (2012-3-8 09:42):
& I" x  N  I4 I- \- Yhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, l. n: @$ \4 A  [3 ~这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ ^) Z5 ~5 k  C! M. }3 X, G! i3 d7 u* g$ {8 |
himr <address> <value>. sample: himr 0x80040000 0x0
- L& n+ P+ i2 I- ?
( {# ~# {( B/ M+ E4 ~1 m( l例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。/ ~& G8 g8 o* R" |+ n
himr 0x80040000 0x00; z+ p& i  l1 R5 }/ e+ t+ n/ A
himr 0x80040001 0x11
* E) U/ B4 w# J6 d5 shimr 0x80040002 0x222 H3 l1 @+ a  N
himr 0x80040003 0x33( O0 b) C5 A/ Y# J% p  }2 i9 [
himr 0x80040004 0x44% A+ v$ n: }8 D$ V, u
himr 0x80040005 0x559 K2 r  O! f- |) r( B% h

+ X/ S- B  ~. J" [% D) dSN也是类似。
6 d& f( u. ?8 s% L0 |9 i9 y$ j
, U6 l7 h; ?+ l! V' p1 H现在主要是,谁告诉我们MAC和SN的地址?
, F4 E7 r' }2 i
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) n7 o! m! U$ _, Q% y5 a: E: E一直想找到运程修改MAC和SN的办法,苦于无解啊
2 u6 r+ V7 Y& t! Q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & A7 @: }( ]" T4 U7 Z' B+ d
# Z9 I7 X; v2 C
修改的代码早有了。到今天不会编译。
) R. ~/ ~/ t( s8 e! x6 s需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 }1 O7 J/ ?6 d9 o7 ~# l& R
  2. #include <malloc.h>. [4 L# [- H9 g) b  \. ]
  3. #include <sys/types.h>
    ; h8 {2 r1 p% _' v0 b' l+ H. B. `
  4. #include <sys/stat.h>- w! [3 F& }$ `9 f* ^4 F+ I
  5. #include <sys/ioctl.h>7 L: Y& b- L; }% e
  6. #include <stdio.h>
    # m6 S2 B' P7 T$ G5 T- w% z4 L& @
  7. #include <string.h>
    . A) e3 R6 N# H7 i

  8. ' i+ J( U% J6 W6 T( u: u: S
  9. typedef struct {
    . W& h$ z( m" f+ K( O& R& b
  10.         unsigned int        e2prom_cmd_sub_addr;
    # n  C  T/ \/ ^* U2 k
  11.         unsigned int        sub_addr_count;
      i, ~$ U6 @  u! N2 y" T# w
  12.         unsigned char*        e2prom_cmd_data;9 j! x8 u! H0 ?& |7 H5 a9 e
  13.         unsigned int        data_count;4 D$ S; \. J7 P+ T3 |6 `8 Q
  14. } e2prom_s_cmd;$ ?+ ]& V/ }+ w1 L+ o
  15. 6 c& Y+ X7 {6 @; d4 z2 S
  16. #define E2PROM_CMD_READ 1
    & H2 d8 o2 G% a+ n) s% d0 [
  17. #define E2PROM_CMD_WRITE 2( i$ k, w; ^2 E* [" H6 r
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 d% h- v) n( a4 p% F/ s
  19. " {  Q6 Z1 K. y) Z5 p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 _8 S( Z" K: m) h0 d" k
  21. {( W( ~0 Q3 y' B6 h2 X
  22.         int fd, ret;- l2 D7 r& v' l6 f* f
  23.         e2prom_s_cmd arg;- N/ c$ T1 `6 W8 c1 B! Y2 \' ]
  24.         unsigned char buf[0x18];
    / M" o* M- n; D3 _& F$ O

  25. ( P4 r; Y! z! v, C; f3 h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 m+ h$ [, \9 S7 d
  27.         if (fd  < 0) {
    / }+ b! V9 a; U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# @4 v/ Z# k1 l1 y- g2 {+ q
  29.                 return -1;6 u3 o$ I1 U: u' s# K7 ]9 t3 ?
  30.         }
    # N* o1 t2 ?+ O" V' e/ w: `6 f9 z. [" G" y
  31.         arg.sub_addr_count      = 2;
    9 C( ~% P& K9 a6 g, y
  32.         arg.data_count          = 0x18;: U9 O" m" d, G  W
  33.         arg.e2prom_cmd_sub_addr = 0x290;& {  m3 C6 b( H* Z% O1 n! ?
  34.         arg.e2prom_cmd_data     = buf;! x4 [8 I+ u/ v4 i* v
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. ?* t+ n- X* y
  36.         if (ret != 0) {7 B3 e" u/ `8 I; u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 u1 Z; S7 K: j7 Y7 ~" J' p
  38.                 return -1;
    * c) I& d3 d$ L; s( h& A" [
  39.         }3 e0 }% V1 [% O+ d; d
  40.         memcpy(mac, buf, 6);+ X0 |, [4 U% u. _' `; t: o: h7 j
  41.         memcpy(stbid, &buf[6], 18);
    1 T# n" R! W( k# o; r5 E
  42.         stbid[18] = '\0';
    # {5 Y  N* ?- {; X4 x% p6 m: n

  43. ; A4 k9 L7 ~+ ^9 [
  44.         return 0;
    & t- f' S% O2 t) C
  45. }
    & y; h% G/ G1 G9 t+ F* }) O
  46. ! X' N: ?5 i* Q2 W4 P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! w* w, |  f, g0 u, l2 R/ o5 C
  48. {
    $ q0 I& F* p! @- j" {( P9 [# k1 d
  49.         int fd, ret;
    9 Z6 b: s) C& l0 o: }0 _6 \
  50.         e2prom_s_cmd arg;0 {1 C% r, g7 c: ]& a. ~$ t; s3 ^
  51.         unsigned char buf[0x18];
    * V0 D( o  b) |6 D
  52. 6 b6 P  b% ~  N. y9 R9 n% E5 U
  53.         memcpy(buf, mac, 6);) q* _2 z7 Y9 E/ d3 e
  54.         memcpy(&buf[6], stbid, 18);
    # g( a5 e6 w# O8 @& ^- l& Q0 V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 T. c$ q4 V7 a
  56.         if (fd  < 0) {1 c* H8 N+ ]# r* A( c
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      v( X, X# a/ n8 U$ f$ y7 m+ \
  58.                 return -1;
    ! S& y+ ?" s+ C' z& J
  59.         }( b! }  J$ T# D+ {# u' i7 u+ j8 S
  60.         arg.sub_addr_count      = 2;
    # i, ^$ \0 w1 X7 O2 c5 J
  61.         arg.data_count          = 0x18;
    $ c; K6 ]7 h% Y& [% F+ ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;& f+ K" P  N) |$ W  D4 ?
  63.         arg.e2prom_cmd_data     = buf;
    ' X) m$ `5 q5 W3 |
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 O: M" J. A& R! S
  65.         if (ret != 0) {/ O9 G/ @; P0 e  q4 N3 Z( M
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: x9 u2 i* K1 y/ `
  67.                 return -1;
    7 |" V' [7 D9 Z8 Y# n
  68.         }# D3 q7 o: \9 {. A: z/ y6 ~+ B
  69. ' A6 ^$ I  x% ?2 J& A; R& X
  70.         return 0;
    / m; j/ I  h9 A5 V- E, {( r  E
  71. }
    / h6 e  n# S' t
  72. 7 j; }: n* ^4 z* }
  73. int main(): Y0 l7 m0 G* V
  74. {) E% T; v4 ^* t; Z$ P* L: Q
  75.         char c;
    $ n' F0 h" m; M+ \7 Y: F$ b
  76.         int i, macs[6];
    % G% k. n/ \( t, o  x( o
  77.         unsigned char mac[6];
    0 S& {. u: ^7 W5 U5 w' a5 ~
  78.         unsigned char stbid[256];: R' Q, M3 ^( U, o4 B8 K) B# ?

  79. 9 @* Y, _1 {  ?# J) p( f+ J
  80.         if (readparam(mac, stbid) < 0)
    9 U$ H( G$ `( E6 N0 j, Z% g2 \
  81.                 return 1;
    ! h) k& l" f# g7 ~
  82. , b7 y% n, P' k, J% \1 z& S
  83.         printf("Current parameters: \n");
    * E  f4 f+ e; ~& Q# ^3 z* F6 S7 A( _% N
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 |! ^. e  Y, R9 u; I1 D
  85.         printf("  STBID: %s\n", stbid);
    ! B$ z/ @1 Q; q. [# [3 V! @7 {: [
  86.         2 y$ w# g# M% F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . H" L% K, I# S5 \9 Y/ z* O: O8 |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" H6 _8 A- @% h4 f3 s# `) h
  89.                 printf("Input MAC error\n");# m5 f* q; ^' f( D# @
  90.                 return 1;  q3 B1 e9 r( T1 S5 H, _
  91.         }( m2 y. u9 Y. X% z# b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: z! ]2 \6 d. \; n2 A; E5 Q$ H
  93.         printf("\nPlease input new STBID: ");. y- f0 r4 e% G" A9 g9 @& @
  94.         scanf("%s", stbid);% q2 \  \( B7 n+ \" n
  95.         if (strlen(stbid) != 18) {
    9 \* W' ]" S2 Y1 _
  96.                 printf("Invalid stbid\n");# P: S+ A+ m9 g/ e; o6 L
  97.                 return 1;1 E+ m5 R. a8 ?! l8 i
  98.         }1 D. I+ X( f7 T" M3 `
  99.         printf("\nNew parameters: \n");
    " x; v3 _5 y' [" E; v' P- v
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 P9 v0 N3 f% O! \1 _' N
  101.         printf("  STBID: %s\n", stbid);' U  ^9 c* c* o- u
  102. ; k8 G+ J! b2 a: g. h- m" {
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 h: u. k' ?0 O
  104.         for (;;) {$ i2 v2 g  \- k  f$ }/ t
  105.                 c = getchar();& p- x* E$ e+ Q2 E
  106.                 if (c == 'y' || c == 'Y')
      I  _$ d  G, ^7 K" Q
  107.                         break;
    6 W4 X& S  g# Z5 S/ N# _& _2 D! W
  108.                 if (c == 'n' || c == 'N') {
    0 T: [1 z! o) d8 U3 u4 N' G8 G
  109.                         printf("\nAborted.\n");% q5 a5 I# ?& g3 U2 i6 b3 Z: S
  110.                         return 1;
    , E6 E4 s0 I$ S1 w. q$ g
  111.                 }
    4 u7 O. E) n/ M- j, v! A
  112.         }+ s, R  b1 l( u/ E3 {0 c' u3 s  `
  113.         if (writeparam(mac, stbid) == 0) - X4 J$ v2 V4 D1 u( z& U2 p
  114.                 printf("Parameters changed.\n");
    ! h2 U3 s& y! [* W; z1 E5 s) F
  115. ) u5 }$ A, A. y1 o9 F- F
  116.         return 0;
    , `3 z3 }( H9 c7 W, v6 q) }1 g) a% F
  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
& ]( Z* g, j9 P9 y5 u在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  y' @" v" r( x+ o" W你用的编译命令行格式是什么?8 V, M2 Y  H6 V, O1 l0 p8 [( W  W
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-23 06:54 , Processed in 0.025581 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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