查看: 17335|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; k' u$ V4 C0 R. s
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 c3 o! b" u! V6 P( N5 g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' R7 h# ?4 ^- s
usage: himr <address> <value>. sample: himr 0x80040000 0x0
8 H: s# y7 C% S: X
1 b8 @" L0 I/ n* Z! F4 Q6 s
7 i/ B2 Z  E/ k& K! d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 L1 R) ?. c6 v: E0 C. |
( f. L4 h6 r/ k& E3 \
补充内容 (2012-3-8 09:42):: N8 t$ Z* L% w9 [) ^/ Q! s
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% g& J/ G9 I' d% [4 I8 Q这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。2 J' x0 v8 [6 ]* i$ p
" m0 @) e9 `4 [8 r
himr <address> <value>. sample: himr 0x80040000 0x0
% }7 u4 B5 Z4 O, N* g
. Z7 A# |! {9 o例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, J9 S3 J7 }& Yhimr 0x80040000 0x00
8 D! T( e. U8 W) `himr 0x80040001 0x11
& b0 D+ v8 D2 n& ^1 I4 Khimr 0x80040002 0x223 U4 g1 \& z  M5 g% H5 ^% |
himr 0x80040003 0x33% K; y9 e9 ?" @1 @+ o. @
himr 0x80040004 0x446 X* f* j: Z. [
himr 0x80040005 0x55
( S0 ^2 B$ r+ I; y) \* H5 r+ z% R- j6 K; k& d0 J) q# f1 y0 u% {
SN也是类似。
8 ~9 V# b! \" }' N! n: I/ e) K4 Z3 k8 z+ T- \0 q
现在主要是,谁告诉我们MAC和SN的地址?( d2 Y9 ?2 g3 s6 A8 ?4 y. a9 J* N
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & R. ^9 b6 Y  M) A
一直想找到运程修改MAC和SN的办法,苦于无解啊

& T3 k+ ?- [/ f源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! y# l1 _, ]! l1 {6 p/ \
+ ?- P2 t  P: W. W+ x7 k0 \/ M3 x修改的代码早有了。到今天不会编译。
5 F. q4 n) x1 e5 j) r需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 Y4 ?& a/ o9 z% ^
  2. #include <malloc.h>2 R! }  W+ `' p( z* X
  3. #include <sys/types.h>- A. H) H* g- y1 Z; h7 S$ |4 M
  4. #include <sys/stat.h>
    7 ]% P9 B5 V) T4 Z( U* n. I
  5. #include <sys/ioctl.h>
    7 f! T  B: J8 c
  6. #include <stdio.h>* n) p6 c& P; |* \" e& G  o
  7. #include <string.h>
    ; `2 E1 a  @0 L% B: g
  8. 5 f1 J: X; U4 b
  9. typedef struct {/ ]0 p) }9 _% t/ a. o# q; R% a
  10.         unsigned int        e2prom_cmd_sub_addr;- t) g- t; }! i4 }! e" Z; k
  11.         unsigned int        sub_addr_count;
    $ h- [' j- M) `! W/ B& d# [
  12.         unsigned char*        e2prom_cmd_data;/ Y& ]! h; Q1 _
  13.         unsigned int        data_count;* t2 J0 v. t* h! N- }- e4 j( r
  14. } e2prom_s_cmd;6 F- _  o- Z- K4 @
  15. 1 u' ^' B' L5 C" O  T9 I
  16. #define E2PROM_CMD_READ 16 g- H) v" K) ^
  17. #define E2PROM_CMD_WRITE 2
    ! p/ X. z9 Z4 n" E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; d7 _. L7 Q/ b. n5 c! g9 ?5 `
  19.   I) o2 `+ _5 ~3 `& r- J; a" m
  20. static int readparam(unsigned char *mac, unsigned char *stbid); L, A! b! ^+ p+ C. d1 _0 Z' Q+ ]/ q% P
  21. {
    ) C' Z% V9 W( a+ P) D) A
  22.         int fd, ret;
    / ^0 e* _. \0 O( T
  23.         e2prom_s_cmd arg;
    6 R; d+ \  @& H, K- u( n
  24.         unsigned char buf[0x18];8 {0 L5 n% ^; {6 k& N2 R
  25. # G0 L- T' }# J, K5 P8 r4 b/ A* w& f
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- J) t; _6 V# U- o- t% |
  27.         if (fd  < 0) {7 x( f9 ]9 q) ~# }7 \0 j! X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ U! X6 p, L8 a# c0 U- [
  29.                 return -1;
    ( s) L3 i1 q* h/ Q% v
  30.         }
    0 D1 `% a# I# Y! A" `0 m
  31.         arg.sub_addr_count      = 2;
    - c9 K6 z( u- z- h
  32.         arg.data_count          = 0x18;- G& I* |% e' }& X6 {: g
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 Y# n7 @% b( t8 j4 X! h
  34.         arg.e2prom_cmd_data     = buf;$ W$ U$ d- {) N' s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);5 |- G6 a$ X: I$ s4 i: T: ]# [) k! V
  36.         if (ret != 0) {: b! s& x4 w: b" M
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( ?8 N7 _- ~- \* |
  38.                 return -1;! U; r* ~6 l" f& b$ C
  39.         }
    8 ~1 ?/ G" I" B" k1 G  n1 ?
  40.         memcpy(mac, buf, 6);  j& U, S+ K: a2 d7 }7 ~$ \3 f
  41.         memcpy(stbid, &buf[6], 18);) f1 E6 e  u, q: ^8 f& W
  42.         stbid[18] = '\0';5 J  F' k3 v6 @2 f2 P
  43. $ y0 k9 H% G2 F) k; h3 L# ]
  44.         return 0;2 C( F3 _/ t  T+ L% [7 T
  45. }
    / p& Q6 S( C$ w' @

  46. 2 o' ]. t' \5 t1 `- r/ j- G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( F7 w2 {+ b! O0 f  F
  48. {) [# J- E) `) K# n& L, ]1 T8 ]9 p
  49.         int fd, ret;
    4 ~8 {: G3 o$ b4 }/ L' w- C# `% R
  50.         e2prom_s_cmd arg;
    ; ~* W3 U; V7 y" B7 ?! q: s" G
  51.         unsigned char buf[0x18];2 @# f8 f) c4 x! W
  52. ! h) g& k( f2 [' @% W6 [
  53.         memcpy(buf, mac, 6);
    ' L0 W  B" W/ U2 Q: x! m) w
  54.         memcpy(&buf[6], stbid, 18);
    3 U9 C+ w2 D: O+ n- Q# u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);* X; {+ C3 Q6 M: w$ r; ^% n- t; R
  56.         if (fd  < 0) {
    1 W9 ^1 `! i" ]& C8 f1 V# c4 ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . Y+ H$ s* P$ b' R6 l
  58.                 return -1;
      p/ b- X' B' h  D$ b$ ~& ?8 ?7 [
  59.         }
    , _- g  M. S( w9 [0 T# w/ l( E8 [
  60.         arg.sub_addr_count      = 2;
    : ]* I* P4 H  L0 K5 O( E# U
  61.         arg.data_count          = 0x18;  G% N$ Y$ O5 ]& q+ Z% z4 U
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' ~( W, `- A! u4 E. I- F
  63.         arg.e2prom_cmd_data     = buf;2 T  n3 n) O8 N
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);, E% ?! l+ y. U) f! j' e
  65.         if (ret != 0) {
    ( v; z" y# F9 z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # [- q; b$ n, }/ F) M
  67.                 return -1;8 ^) c8 `0 b2 j3 M5 h' e
  68.         }
    & ]/ ]+ P4 F: F  E. f
  69. - t# O4 [6 N' }! {6 h) Y# l
  70.         return 0;0 T: m+ }: Y2 {; C6 R; X; O
  71. }# h, l1 V6 f/ \  ?2 _: H

  72. ; D. g% h: X$ \0 J' D, d
  73. int main(). T) M' r4 S6 U
  74. {" m, g6 h$ U; N* J3 b
  75.         char c;* t5 G' [, W" u
  76.         int i, macs[6];
      \5 y* l3 ]' ]" R, `9 K$ j& ^
  77.         unsigned char mac[6];
    $ X/ O- Q' @* R% \( G, }$ e( ^2 D
  78.         unsigned char stbid[256];
    2 `9 j% j* B3 X! w
  79. , U/ C8 g+ J" Q5 z( ]
  80.         if (readparam(mac, stbid) < 0)% U) Q1 j) [# c. g) h7 Y. O, T$ E
  81.                 return 1;+ B+ `, X* m+ k" g( Y8 e: i
  82. & R8 I5 t! M9 o4 S" C4 j8 ?9 L
  83.         printf("Current parameters: \n");
    ! b1 r2 e' h' X! ~" r( z& a
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % W$ @+ e& a. J/ T, e
  85.         printf("  STBID: %s\n", stbid);& K, `5 m! ^- D8 p' m9 c5 d! b" \( s! g
  86.        
    4 y: T  W" I  {! [  x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , N- q' K' {3 K6 P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; L3 E- O6 c5 h
  89.                 printf("Input MAC error\n");
    . D3 z  V. h, z- w+ g
  90.                 return 1;
    * o+ T+ A1 S" n/ E! S+ }" K
  91.         }
    & H: ?, i' @, G& p# i7 i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    + R6 F2 Z7 g6 {( L$ |8 Q
  93.         printf("\nPlease input new STBID: ");8 w9 I, k  _( T6 c9 x
  94.         scanf("%s", stbid);
    0 y$ |' S/ ?$ }
  95.         if (strlen(stbid) != 18) {
    8 l; ~+ [. M6 q+ @' t9 M* l# ]
  96.                 printf("Invalid stbid\n");0 y) j6 @5 b! _; z! s
  97.                 return 1;1 n7 Q' r% m) q
  98.         }" v- h" k. A" f9 t
  99.         printf("\nNew parameters: \n");- z+ \" O; U% `' F$ ]
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 M! Z5 |) [$ b; v' s( v( h
  101.         printf("  STBID: %s\n", stbid);7 y* R/ m# n6 g
  102. * [$ c8 |/ h% r4 x- a' N9 Y8 I# G! D
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 Y3 S" G6 `  A" I/ F8 }% U. L
  104.         for (;;) {+ c; U" l2 i& T3 n: g, B0 I
  105.                 c = getchar();
    ; y4 }0 S4 i. p, Q; M* r; W
  106.                 if (c == 'y' || c == 'Y')7 s. I# E, k$ e& C! Z+ Q6 P
  107.                         break;+ L7 v9 q/ H+ ]; V0 f  N
  108.                 if (c == 'n' || c == 'N') {6 c' p2 Q5 p) _
  109.                         printf("\nAborted.\n");
    6 q! a; P$ J/ {  y5 _  ~' p
  110.                         return 1;6 i5 S1 D; O: s8 Y: [- W( o
  111.                 }
    6 I, `+ g$ D$ L" T) v7 T6 w
  112.         }  y$ B; E* F. y% h6 f
  113.         if (writeparam(mac, stbid) == 0)
    0 X0 x  N) a! k8 Y9 E; w( w6 q
  114.                 printf("Parameters changed.\n");- z2 }* Z( w( z# v+ u
  115. * A) U$ B0 n6 G8 i0 }  r
  116.         return 0;
    # [# ?& S4 V# d. b5 ?. [
  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
/ p! H# f9 e+ _. y/ F8 u! D在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 b. P, B3 K5 r2 X2 Q你用的编译命令行格式是什么?
' r. s) _( p2 a8 F" }3 j3 k
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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