找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15048|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, ?/ X% S$ ]- w+ [$ p7 b' q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig2 n$ P) V5 `: d, W/ ~
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, m' q- c3 U6 x3 [9 u- p: a' D
usage: himr <address> <value>. sample: himr 0x80040000 0x0
$ H, L# A/ ?% p. m2 N- M  z' G1 i! A1 E9 C

9 e7 b% b6 J7 `不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 Z0 j1 |! I+ f' _/ W" x! o; Y
6 n/ ?6 H+ g$ [/ `* Q  W8 }: L补充内容 (2012-3-8 09:42):
( Q* H# o# B& o6 k3 p% l! P8 v& Jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' K1 D' P8 \! q) G. O! _. J( \" n
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
; |' i, o0 A" r0 t0 X7 f) M
5 y8 v* k) x' c6 S! q: ?$ Yhimr <address> <value>. sample: himr 0x80040000 0x06 f0 Q9 r5 w" h  v4 x  w
  N, t; B3 l" u0 z, P6 n
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 c* Z7 I# D/ R- ^2 ~, `% T
himr 0x80040000 0x00
, u4 b5 r, |, c  `9 m6 K/ Ghimr 0x80040001 0x11
5 N- y5 N: o; l$ t- t6 {% @9 Bhimr 0x80040002 0x22
. C% U2 |( V' g/ J, B& k. @" qhimr 0x80040003 0x33
2 B# @8 N' q  |$ g; N' N- d- ]' M- qhimr 0x80040004 0x44
& G2 V+ C8 l* q" o8 [: khimr 0x80040005 0x55
8 j+ G& t. o) I7 Q& W) @, H* l) H+ A$ K4 l% r' g2 |
SN也是类似。  h3 h4 o# q( ~# j4 t' \

8 K7 g6 }+ @$ R& v6 h现在主要是,谁告诉我们MAC和SN的地址?. ?. @' D: f9 h6 L' j' J, T! _( u$ x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% n! I; o1 F9 @) y5 O7 j! j4 a一直想找到运程修改MAC和SN的办法,苦于无解啊
$ ?* P- O5 R: Z: O4 E+ k
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' d9 Q% p3 G/ `7 q
% @  D% [1 P0 d3 S" h7 W4 o% l0 S修改的代码早有了。到今天不会编译。
1 H' A- e6 d; D3 Z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    : q* U7 ^6 G% Z2 z
  2. #include <malloc.h>
    7 \; r1 \3 d  O- T9 E: X& u
  3. #include <sys/types.h>% }( m9 Z5 d; z
  4. #include <sys/stat.h>
    8 F7 F" I7 M) _, T# {
  5. #include <sys/ioctl.h>* ^* }: V+ x1 @: B
  6. #include <stdio.h>
      ]. R4 W& \& t
  7. #include <string.h>
    ! i$ j) V4 j. W" _

  8. & m: R; b& B: N  g8 v# D5 L
  9. typedef struct {  f2 `3 e* ~& ]0 D  y; j
  10.         unsigned int        e2prom_cmd_sub_addr;( ]) J( S* {" a/ r* ]- v+ T7 `
  11.         unsigned int        sub_addr_count;
    9 a0 C( `1 P0 J" [3 `
  12.         unsigned char*        e2prom_cmd_data;% d: ?" X# U! [
  13.         unsigned int        data_count;
    1 R5 ~- h7 y8 O' |0 v
  14. } e2prom_s_cmd;- Z) r7 h( y- \0 W+ \  M

  15. ; X- H/ C  |0 M6 \" W0 @
  16. #define E2PROM_CMD_READ 1( r9 E" J7 R. W7 J9 T- D
  17. #define E2PROM_CMD_WRITE 2" g" {  ?$ q! @& k* l9 N) H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 @* l( T  `  X' P
  19. + w1 \7 s% t: r/ Y  X: U% ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 @0 ^7 \* M9 c6 U
  21. {
    7 r+ c; ^5 {. u( s7 \$ Y5 ^8 I
  22.         int fd, ret;
    ; ~; b" p" \- D0 W% q
  23.         e2prom_s_cmd arg;3 u  K1 E6 i5 i. @" Q+ q
  24.         unsigned char buf[0x18];4 W' c  L5 u+ f8 ~

  25. ( h) g; M: a  O1 H. s5 f
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 D2 G- Z* a1 _. T: i
  27.         if (fd  < 0) {
    # ~$ w( ^; q; j% c6 q6 i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 R7 E$ c/ P" v  Y
  29.                 return -1;) V% S: W, F# o3 J* r- |8 f+ @+ [$ c  e& ?
  30.         }) Z4 |7 U  B, v4 V* d. e
  31.         arg.sub_addr_count      = 2;
    " V/ c' p, r7 P7 H/ X9 u
  32.         arg.data_count          = 0x18;; |6 X, U) c1 g4 b2 Q& I3 K' E! u
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 c7 {  w6 N( W" z
  34.         arg.e2prom_cmd_data     = buf;
    7 n, ~) s0 P& A$ D  U
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , d/ I0 J$ l$ X9 p7 Z) U
  36.         if (ret != 0) {/ u- A. E! `" Z% {6 N/ Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; s' |, ~5 B9 a$ I8 W+ V5 a
  38.                 return -1;
    4 x  q8 ^6 {4 k6 e" i9 o
  39.         }
    2 t0 O, q, R/ F( A
  40.         memcpy(mac, buf, 6);
    7 |) G$ G9 o7 R4 l" e
  41.         memcpy(stbid, &buf[6], 18);
    $ l5 B; T) B4 W' y  K4 c
  42.         stbid[18] = '\0';3 ]& x3 V/ B5 `1 S# q

  43. 2 \6 J6 ^) v7 B# t+ b7 r2 J
  44.         return 0;2 \6 C2 s- r3 m; f
  45. }% p4 D8 l8 ]( e" `1 m* G, j0 k3 f$ W7 B
  46. 6 O/ \, j8 ^% a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 N% w+ Y7 T6 A5 z$ G
  48. {
    % |$ s' w# J! f5 d4 e8 L9 C
  49.         int fd, ret;
    2 Y/ J) a. r* p" K
  50.         e2prom_s_cmd arg;& Y# l! J0 l+ i+ u; H% g. J
  51.         unsigned char buf[0x18];. m- X5 o4 J  D/ V1 \) T3 c1 y& E2 E& U9 C

  52. & x& G' _# Q* s
  53.         memcpy(buf, mac, 6);
    ; V2 C% R+ @; O2 e* F
  54.         memcpy(&buf[6], stbid, 18);7 q4 B! [1 ?, J/ N: Y" Y8 N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% S2 ^* ~1 h: ~' ?0 S# S
  56.         if (fd  < 0) {
    7 |* e1 ~% T) V, v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " k" x$ {$ N  n. D: Y3 t
  58.                 return -1;
    " q, S) h+ |# Z  W7 b* {2 P' m
  59.         }$ s5 h& f, y2 @1 \1 f7 ]; x
  60.         arg.sub_addr_count      = 2;$ Y) w- E  P* _8 c
  61.         arg.data_count          = 0x18;5 p9 @# H; H; r( q: L9 A+ r
  62.         arg.e2prom_cmd_sub_addr = 0x290;" q$ X0 r# c8 @! f+ X
  63.         arg.e2prom_cmd_data     = buf;
    * F; D9 Y1 v/ P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% e1 }0 t& C, t" Z
  65.         if (ret != 0) {5 X+ o& x/ r( o/ W# [! d" q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      f# C5 U& q8 J) f: u
  67.                 return -1;" s3 D$ l7 }: l0 g' I
  68.         }
    / L/ m6 r# E; z% r+ S9 a' J* ?2 o

  69. " B: |0 n& L( u- Q$ J8 b
  70.         return 0;
    " ^+ R- g- W% Y$ W, E
  71. }
    " m6 y* ]5 l- D, {; A
  72. " }; F$ L# ^) I0 ~/ D4 T
  73. int main()0 D$ V, j7 t1 m2 x
  74. {8 Y/ c! T% I) q' x6 l
  75.         char c;
    ' ~! y' X$ ~7 y: z6 F! }
  76.         int i, macs[6];
    % U) t$ x9 F) k& x% {& I
  77.         unsigned char mac[6];
      U, e1 s$ l* D/ Z
  78.         unsigned char stbid[256];
    + F2 C- t4 ?- |: W& u7 ~0 _
  79. % {6 j. ]. R& \0 [
  80.         if (readparam(mac, stbid) < 0)
    ; \: [3 [8 g4 |
  81.                 return 1;
    8 ?/ |: D/ s2 W( N, J! r

  82. ' S, J# ?( A3 l0 J7 W7 m6 N; k# x% _
  83.         printf("Current parameters: \n");) c# D4 r6 T( b" F0 k) v" X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! O' w5 O5 a1 }# x" c
  85.         printf("  STBID: %s\n", stbid);
    % M. D  Y0 N+ X7 E. _8 `
  86.         / K( e. j7 U7 l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. Z* q1 j  B" b8 X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ w/ B" s( ]/ S" r" K* C/ `( Y' U
  89.                 printf("Input MAC error\n");" Z9 n5 R6 k1 a( |( [3 a
  90.                 return 1;# X  J* w  r" _" \
  91.         }8 @4 Z) ~/ E; U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' L6 f" V1 i/ D% C( e% P
  93.         printf("\nPlease input new STBID: ");" A; P3 \, a7 f4 s
  94.         scanf("%s", stbid);' |! R' {, H( g3 F+ U
  95.         if (strlen(stbid) != 18) {
    / |5 W6 p$ F0 u3 k6 A! U
  96.                 printf("Invalid stbid\n");
    8 Y6 R4 e& q' H& e8 a
  97.                 return 1;
    # z3 e1 m6 V2 d' K
  98.         }4 ~! \( g* s" i/ Y( p. l$ m
  99.         printf("\nNew parameters: \n");) I& ?* \: r( w% @) `$ I& \8 l% E2 a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & F3 m1 Q4 Q9 s+ V% T6 J! _) Y( K
  101.         printf("  STBID: %s\n", stbid);
    $ Q& |; @) x4 s5 E- x

  102. - z2 ~; L8 o- H( \" [( t% _
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 c0 i/ T9 K1 B& u# [4 ]# l
  104.         for (;;) {8 T3 w; s3 ^  O  Z
  105.                 c = getchar();: b/ ^6 _2 n& I+ B
  106.                 if (c == 'y' || c == 'Y')
    4 @* T9 m+ }* N  |. ^. A7 U6 q
  107.                         break;
    2 R+ n) V" e2 a, ^8 e
  108.                 if (c == 'n' || c == 'N') {* H7 a7 \7 T4 {/ ~
  109.                         printf("\nAborted.\n");
    1 o7 D' \% c* ]  B0 z- k; H# e
  110.                         return 1;% A8 y$ n1 |4 K5 B
  111.                 }
    7 k2 ^) s0 d& ]6 B2 s' f  P
  112.         }
    . ]" e: q5 V. S  t: T$ K0 h( M0 C
  113.         if (writeparam(mac, stbid) == 0)
    ) F/ K" b) x0 V* |) p0 E
  114.                 printf("Parameters changed.\n");
    8 C# U; A6 X( P: `

  115. 2 a7 Y+ u4 H- Y' V* C2 t
  116.         return 0;
    + W. e- V* ?) d, N; L
  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 8 a6 w5 w% p  y2 Z
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  L0 g& T. G+ A* y8 u( O
你用的编译命令行格式是什么?
* x' t- r% X3 b* G
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-13 17:11 , Processed in 0.025262 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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