找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15013|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ u( @. S) Z& v* H8 x( ^  C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& S+ k- }% M4 o; f; E5 l
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:+ J1 R; Y! H6 [, Y4 D  c9 _) q  V
usage: himr <address> <value>. sample: himr 0x80040000 0x0
9 W% Q) z9 I; ^' g2 t  ?
4 _/ k  D  Z$ }- n
. p- ~' F9 [) }  ~不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% m0 W5 x5 q. t9 A6 Z
* p: E! ?" C3 ]. g
补充内容 (2012-3-8 09:42):
/ T* c7 k& Q+ w1 Whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
& Q0 J1 ]; T3 B1 l. W* Z4 x( ^这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。+ q4 I+ b: r4 J# P0 n

9 J% N5 }& d: R& P7 e. _himr <address> <value>. sample: himr 0x80040000 0x0
5 V, r2 P6 |% O. [8 X% z
( B5 A! E& i0 ?* d! V例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 n3 i% w# C8 I3 r9 N
himr 0x80040000 0x00
1 I1 E: D1 B: R& B9 jhimr 0x80040001 0x11
4 x% Y" a4 T1 Ehimr 0x80040002 0x22
6 A) m; y$ d' G; S5 m+ \- [himr 0x80040003 0x33
$ P! V" g6 c! t, y8 c+ Vhimr 0x80040004 0x44
/ @) x! Q. v) x/ M! Thimr 0x80040005 0x55, w; V3 q, C# U* Q7 ^
, F0 K7 h% C! s6 S! Q& Z. q
SN也是类似。. q# @* d( }3 q. {5 |' X
- }0 ~7 t1 K6 s+ O  v, S
现在主要是,谁告诉我们MAC和SN的地址?+ c5 S9 i  O" U- K* T( A0 r
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 {; y4 g* z% N. J; U2 x
一直想找到运程修改MAC和SN的办法,苦于无解啊
5 Y+ K: V! \5 B! Z) l
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 D6 L2 R: @/ X# \* m! d1 x
* d3 @$ s7 s/ J% ?& q# j& p) E) Z修改的代码早有了。到今天不会编译。) a# c4 D/ s2 _" n4 G" I: P. F' p
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>. U0 T4 \  {6 M6 d% [2 D
  2. #include <malloc.h>
    : Z1 B. F+ _. e& }
  3. #include <sys/types.h>& E) k1 x3 Z# l* I
  4. #include <sys/stat.h>- q. S+ I. C7 z( S7 ^" g& ~
  5. #include <sys/ioctl.h>
    5 X9 U& P+ \$ X$ x7 t# I
  6. #include <stdio.h>
    - `8 S3 o, U* }- e5 L% k: I3 n
  7. #include <string.h># m( `( d- `* {5 T9 [  E1 E

  8. : W/ _' a& R2 z9 N
  9. typedef struct {& |) Q( `: I) E
  10.         unsigned int        e2prom_cmd_sub_addr;
    / s' c- }, ?6 @6 o  G) N: K
  11.         unsigned int        sub_addr_count;
      n) s9 K6 _! m5 b  i" D# [% o
  12.         unsigned char*        e2prom_cmd_data;4 m. \) q, e/ J& V, n
  13.         unsigned int        data_count;7 G- A8 o3 U5 x# o
  14. } e2prom_s_cmd;/ T7 J0 I9 w: ]: L: K

  15. 2 R4 [: V$ N  o4 o
  16. #define E2PROM_CMD_READ 1
    # }2 l6 ~0 ]" x+ `0 M, ], o5 L9 f
  17. #define E2PROM_CMD_WRITE 2
    ) A8 v( r) g4 S6 R. h% [% ]
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  o6 X& a( F$ b* R3 H5 G
  19. $ V" j) M$ ?- u* U; P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)4 Q% w- M- O. O" X+ C* U
  21. {. o- `5 C/ |3 O* p- P
  22.         int fd, ret;' x1 v% k- s2 q4 P# k3 [0 X
  23.         e2prom_s_cmd arg;" y6 m4 e0 q$ R; j& [" E
  24.         unsigned char buf[0x18];
    " V& y& ]" v0 n7 Y7 x% F
  25. , N* J7 G; T6 U  |
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 F7 j+ m5 s% l  \/ P" a: q
  27.         if (fd  < 0) {
    * {0 |% {4 M0 D) A9 `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; O7 A* i8 _$ M' ?5 ]; J5 Y
  29.                 return -1;+ Y; S- E& Z# q. _5 _& t$ {  l
  30.         }. l: U4 y1 E# ]1 T6 T# t5 F
  31.         arg.sub_addr_count      = 2;
    ' X- K, Z8 x$ U
  32.         arg.data_count          = 0x18;2 B+ E8 D% w( F* M) K) I
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 `0 H. w( h+ n
  34.         arg.e2prom_cmd_data     = buf;$ e1 l: u7 F3 ]* C8 l5 M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ G9 n+ e3 J2 K( C. K
  36.         if (ret != 0) {, Z. A, i$ k! ]1 ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # s" q6 x1 c# U7 q
  38.                 return -1;" S3 S+ f, i0 b
  39.         }
    , m4 Y9 m5 x! w% I3 Z5 L
  40.         memcpy(mac, buf, 6);  S1 ?' i% D, s7 V% r; {
  41.         memcpy(stbid, &buf[6], 18);
    6 p* z1 c2 d/ J4 R" b
  42.         stbid[18] = '\0';
    ' ]6 P" l. @# j2 Z
  43. ) `% w8 m+ N. k7 @
  44.         return 0;
    & H9 W+ V8 t, P) D3 o( h
  45. }! T, Z* J9 i" j3 \

  46. 4 `3 z+ L# J- T6 P  W$ C
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    2 M9 b) N+ E& A8 E# M6 \
  48. {
    / J8 W% B) h/ t8 k4 u
  49.         int fd, ret;
    9 q$ a# X" q6 X* J9 k+ v
  50.         e2prom_s_cmd arg;
    + u; d# q) R6 u2 {* {0 J0 ~
  51.         unsigned char buf[0x18];& a* Q4 X, w3 A8 v8 B- g; m
  52. 8 _; f5 l4 U5 f5 r
  53.         memcpy(buf, mac, 6);
    0 ?5 |% U+ B* b! L5 o+ W- a
  54.         memcpy(&buf[6], stbid, 18);( \2 I, e. o: V% s5 K3 m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% g9 f" v4 \3 q3 R9 k/ o
  56.         if (fd  < 0) {
    # @6 O1 T* f0 L8 Z% K. Z4 Z3 S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ Y( F3 r) H$ c2 M1 O
  58.                 return -1;
    + S1 i3 H8 n: }2 @
  59.         }
    & [6 T9 m) b3 R5 {& f. g
  60.         arg.sub_addr_count      = 2;; L$ r4 Y/ J; |2 k( |
  61.         arg.data_count          = 0x18;' Z- H: c$ G' A9 Q9 `. u% ^8 b
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ j$ l+ Q) Z* I/ T
  63.         arg.e2prom_cmd_data     = buf;
    4 t. g, z/ p- Y/ E0 n' ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);* r1 y; Y5 _/ l
  65.         if (ret != 0) {
    9 l0 t$ n, t* m( ?- t! T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) F8 E; q! \$ ^  z  o" t7 U( g
  67.                 return -1;
    - W7 k* |  ^- X# A7 }
  68.         }  n. ?- w8 b" n7 Y8 o

  69.   H2 x# W) V, B% x
  70.         return 0;2 s$ I: N. H; c& e) @
  71. }$ H' b) h- C  |# B& M
  72. * @9 p4 n1 w6 b7 z
  73. int main()
    + |1 \8 b2 y0 n1 M4 `6 U. v
  74. {* X1 y" ]! ~, v; s6 A9 W
  75.         char c;0 m6 _$ m8 W0 q4 T: d
  76.         int i, macs[6];) b5 b  `) e( ^$ ~9 @; q& `2 W
  77.         unsigned char mac[6];
    9 p& G8 ]$ {1 T- C0 K
  78.         unsigned char stbid[256];, r4 }. ~  H3 e4 j0 ^. l

  79. 9 q% S5 l, s- \, A2 ^: a6 p
  80.         if (readparam(mac, stbid) < 0)
    " F4 g& e: U( {- O
  81.                 return 1;
    $ x8 n- o/ E. \2 t+ j/ o
  82. - U; ^; y6 q# g! Y2 \
  83.         printf("Current parameters: \n");0 x' d3 y$ m' U, [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + _6 ]0 I7 R, G" i
  85.         printf("  STBID: %s\n", stbid);& P/ ^. b: P" i0 ~# j0 [' `" q
  86.         ) d4 e7 R( i; t  J1 Q" [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 G" n* @: V2 A8 L- w" [+ y4 K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( ^$ C; O) O3 [2 l# Z2 B
  89.                 printf("Input MAC error\n");
    5 ^9 E' M1 o4 ~
  90.                 return 1;
    ( m% N* Y( ~" Y  u# B( G
  91.         }
    ; d  j" I+ Q! L: s
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  x6 b; b; @: @! i+ N$ b# H7 }1 I
  93.         printf("\nPlease input new STBID: ");
    7 x& Q8 q, W% G
  94.         scanf("%s", stbid);' t! ^, k1 O2 T# x, C, }) T, a' ]
  95.         if (strlen(stbid) != 18) {5 b* L  d/ T0 n( y! d
  96.                 printf("Invalid stbid\n");- U# Y: M2 k2 z1 u% g  L% ^
  97.                 return 1;
    $ T. G2 H) ?  e4 c9 d: s
  98.         }0 P# C0 @# H4 M4 B  k& B- N
  99.         printf("\nNew parameters: \n");
    9 c7 \! k+ ^3 a: r  J5 n. e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ `9 Q3 V9 n0 Q) J
  101.         printf("  STBID: %s\n", stbid);
    ; D" l7 w, Q7 M0 E" W

  102. 8 P  w  a& k: _/ S. q  A1 I
  103.         printf("\nDo you want to change paramemters? (y/N) ");! P0 R' U$ c9 A4 V. s
  104.         for (;;) {
    1 r  ]7 O: r+ r5 q/ W
  105.                 c = getchar();
    4 P  m. R7 b1 a, y3 ?+ u
  106.                 if (c == 'y' || c == 'Y')
    $ s" |0 X6 u( d9 j6 P
  107.                         break;, v6 r- G% ?8 Y  H, W! k
  108.                 if (c == 'n' || c == 'N') {4 H, R& ^/ h9 w
  109.                         printf("\nAborted.\n");, ~) b+ G' n* a
  110.                         return 1;
    ; w9 c7 z' @' N) k
  111.                 }
    * q0 o. v; f8 V6 t+ }, h
  112.         }: n. h( U* U+ Z; e
  113.         if (writeparam(mac, stbid) == 0) " e* N5 i# O+ I7 J+ y
  114.                 printf("Parameters changed.\n");
    3 a! b& H) q1 }, r" d

  115. / u- G' p: H( v! m3 X* x
  116.         return 0;
    / ^+ J& Q" x; d% T
  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
" k' h# X; e& C* U, C9 R6 m  }5 ?在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, }; ~9 B+ l$ S: R3 h你用的编译命令行格式是什么?2 W4 Z4 Y) A1 O2 B
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-10 03:32 , Processed in 0.026793 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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