查看: 16383|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / @- G2 p  N$ A* u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! b: b. E# R7 v' [/ Y9 N. z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 D- M7 x6 u+ D. Z# h+ rusage: himr <address> <value>. sample: himr 0x80040000 0x0
6 [, D, _% u- P+ S3 }9 s  r( x: A: {9 q7 X; k8 f2 d/ F

3 j8 p3 B( s/ ~4 y* m' h& D' J9 ^  x不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! Z" ?' I) k1 a
$ f  E4 k3 Y; o补充内容 (2012-3-8 09:42):3 O; Y; v9 Q3 S% j& ?/ p, e5 o
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数) C  A/ {' E! O
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。  s7 k% K# J9 U' c# B2 K
' X2 g/ h) v% r  x- L- _! `/ l
himr <address> <value>. sample: himr 0x80040000 0x0
* \- c; u4 R! E( o0 R
, R/ J+ h, e7 Q8 C- J4 a9 l3 D例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 D$ c  [# k* m; [2 G3 \
himr 0x80040000 0x00' p, e( l! g7 r" v6 |( U& a
himr 0x80040001 0x11+ d. ?/ p9 M, v! v! j
himr 0x80040002 0x22
2 a% \2 L: E. M7 w& m+ a% Vhimr 0x80040003 0x33
7 y( R  v  t! v+ _5 xhimr 0x80040004 0x44
' `! S5 P5 K- Q. e5 u( Chimr 0x80040005 0x55
" U$ I  x- `  I3 K1 Z/ L. }
, ^* p9 @- S; W% U7 ~SN也是类似。2 ~. g) B/ S4 {8 N
$ A8 O% T0 @- a6 I$ W8 V! I, i  p* C
现在主要是,谁告诉我们MAC和SN的地址?
0 \5 J7 E  K$ r# N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " v3 j) H$ Y5 K) n' T
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 a1 i- g5 X; v9 V/ m0 b6 z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 @, `5 G6 J% f7 Z4 J
$ a( N# R, [8 y! S4 f
修改的代码早有了。到今天不会编译。
- V6 ], E6 W) |7 F需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) p# _* ^, D$ W1 n) |
  2. #include <malloc.h>
    ! c1 s- e: E, V: e9 x7 h) z
  3. #include <sys/types.h>
    & L+ q8 `/ X# ?. u1 y# g
  4. #include <sys/stat.h>* ]* d3 l- M9 d( U2 C2 I5 b
  5. #include <sys/ioctl.h>! c/ M, T: J0 v6 i% }5 F2 Z
  6. #include <stdio.h>
    , R& T6 q: U2 j# x& }2 \' s' V
  7. #include <string.h>* L/ f5 ^% m% I0 j1 i

  8. - g2 T3 w2 ]$ N- G9 g- X# b
  9. typedef struct {
    : ?" P! O( X/ _" e1 D6 `  a
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 }. ~9 q. y3 Z' q. H& T7 a
  11.         unsigned int        sub_addr_count;  @- x! O2 l. J# ~6 x
  12.         unsigned char*        e2prom_cmd_data;
    6 w$ Y" z% m- c7 O/ O3 q# `
  13.         unsigned int        data_count;
    % B& h6 T; a. L0 W7 Y" R, y$ W
  14. } e2prom_s_cmd;6 \$ \% L) @5 K* a$ S
  15. 8 k( l1 J% ?9 i7 x: {! o: Z2 ?
  16. #define E2PROM_CMD_READ 14 |2 o5 h( v# P4 e
  17. #define E2PROM_CMD_WRITE 24 u9 i- }6 W4 x' h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . u( s$ h; h& v, l8 e0 Y3 h- {+ u8 i

  19. & Z* p' B" f4 U
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) I8 ?4 y/ C, A& [* e
  21. {: w$ ^8 U% M) S5 L  M
  22.         int fd, ret;& f; d- a% m: G/ V7 q  t& `/ c
  23.         e2prom_s_cmd arg;1 f  G) L( t8 x4 v
  24.         unsigned char buf[0x18];+ i/ a0 J5 o3 G; w+ n

  25. , _/ n) |& j- C2 I. ?3 k6 o7 }/ v0 T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 R" V9 S1 w4 I" s# q
  27.         if (fd  < 0) {
    ; Z" _2 m' k& N0 K1 K( P" W, Z9 R
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* `9 \" S4 _: q; j
  29.                 return -1;6 B2 n8 I! v+ H9 O
  30.         }5 t; I$ d$ q: w. I
  31.         arg.sub_addr_count      = 2;% l" T- c0 E- S7 N  d1 y8 ^
  32.         arg.data_count          = 0x18;% Z# f7 [) K: k# l# Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 s' k" d  L9 E2 m
  34.         arg.e2prom_cmd_data     = buf;
    2 V5 [0 v" W0 D& `7 i8 z5 {
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- x- k) V7 U/ H: z" \
  36.         if (ret != 0) {
    ( L' f" L$ `1 G$ Y* X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 \% s3 T; H2 T- o0 X9 \
  38.                 return -1;. E5 a  H8 V( y3 c" W# q
  39.         }4 Y7 s" H# X$ A& I* @* _4 n, X
  40.         memcpy(mac, buf, 6);# d0 }, h1 I) x1 a5 x9 N, C
  41.         memcpy(stbid, &buf[6], 18);
    ; U; g* V; V) ?7 U5 N) ?4 h: h* T
  42.         stbid[18] = '\0';
    , O/ l+ z- f: M6 u/ F! o+ v

  43. % R+ _9 b" m/ S' \" {- d2 z: i
  44.         return 0;
    ; I" q  @0 N' [+ H4 e; G# Q# B
  45. }
    , J7 W3 ]7 H. o& f1 |( K% D
  46. 6 e% M3 ~$ V6 x6 }$ P! _
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / P5 y8 R  F( u4 G/ c8 e. _
  48. {# d8 w. y# d3 Y$ A- d# L& A1 T/ n6 q/ v
  49.         int fd, ret;$ U; d0 J' t7 a0 k& ~
  50.         e2prom_s_cmd arg;
    $ `8 S* o# @( r  Y' V+ B/ K; j. J
  51.         unsigned char buf[0x18];* c# p- c; S" ]( t

  52. $ I- E4 [& I4 p" y& b
  53.         memcpy(buf, mac, 6);6 u9 S$ U- h% M! H+ H4 v
  54.         memcpy(&buf[6], stbid, 18);9 a% C% O0 R3 d' r) a$ e# {+ M
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 n( I. Z$ S4 L( V. j
  56.         if (fd  < 0) {
    + V% f& s; v% B; T0 U8 O/ z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);" s+ z  Q" a6 o% R' n, h
  58.                 return -1;5 g1 u0 i+ m8 X! t, I! b5 @
  59.         }
    ! W0 w; {6 v* C" a
  60.         arg.sub_addr_count      = 2;
    5 O! M8 I- ]8 S; @
  61.         arg.data_count          = 0x18;: @6 a+ D) g, H# b6 U8 X
  62.         arg.e2prom_cmd_sub_addr = 0x290;! C+ o, v0 E8 C4 f1 B
  63.         arg.e2prom_cmd_data     = buf;
    8 Z9 H" C) k# e( x  ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 a8 w( D6 a- H6 }) G! z
  65.         if (ret != 0) {
    * u! V& C& N9 o3 q. s, O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 m4 w( w2 ]9 a2 Z8 J
  67.                 return -1;) D  F. z- {3 s' H' p) D2 L! {- W/ r
  68.         }' o& \; k+ W$ T" V; p  Z  `

  69. 4 L% Z$ V" h7 b
  70.         return 0;
    / ~6 o% [$ N* D7 w* r. U
  71. }
    + `* l$ E6 t1 U5 M: V' E/ W8 I

  72. 1 I4 X6 }% N* B( p" N
  73. int main(); i4 P, ^) ^7 \+ J2 k; o
  74. {$ a; x" v. ~6 l. Y: v* Z
  75.         char c;& O+ n# f' @' ?1 X6 y, t7 g
  76.         int i, macs[6];
    : M6 J  V2 z& f7 z, e- V) t' F8 O
  77.         unsigned char mac[6];
    6 }7 U' z, `7 }
  78.         unsigned char stbid[256];5 `' w+ B8 o2 W1 n, u; w7 s

  79. ( I! L6 P6 Z4 p3 a. {( s
  80.         if (readparam(mac, stbid) < 0)
      i5 D3 k- \. E! d7 Y- e
  81.                 return 1;
    , ~" N4 a$ i5 r- ?! C  q: f

  82. ' @3 ^7 I$ I+ D3 d
  83.         printf("Current parameters: \n");( K( ?& b0 t$ t" ]: p
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - \( \! B" k9 U! h0 b
  85.         printf("  STBID: %s\n", stbid);
    / X* d; H, n( I
  86.         6 U& R7 n: t/ H& r
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( G6 l8 v; `. M" W4 C4 ]# g) Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - @4 Y; W) x9 u
  89.                 printf("Input MAC error\n");+ M4 m5 n: V$ g+ K
  90.                 return 1;
    , ?9 i/ S, e! g4 P
  91.         }
    " I6 k- Z& ]" Z; r$ S; \% D0 z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! i3 a( `8 V* P4 G2 L
  93.         printf("\nPlease input new STBID: ");
    % v/ W) z6 \6 L5 [5 z6 H2 U
  94.         scanf("%s", stbid);
    ; m& k7 e' k! S* l; A4 a
  95.         if (strlen(stbid) != 18) {+ Y& J$ T& C0 @+ b7 E
  96.                 printf("Invalid stbid\n");
    8 L+ [- F; G0 R
  97.                 return 1;. i1 u' M/ \, X& u* g( J, w9 Y$ d
  98.         }
    4 ?% t' p, ~. r' V0 g7 j! ^
  99.         printf("\nNew parameters: \n");, B! v/ }  `0 X5 ?4 y% b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& ?  h: G. J. q% a0 D* ~! h0 i
  101.         printf("  STBID: %s\n", stbid);
    - f" V5 J( E: C

  102. $ X) K6 o4 q  E* O
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 }) o7 L. `( [' U1 i& K! a% S
  104.         for (;;) {
    # W  O0 R+ j1 X" i; D: k9 G' A8 J. r
  105.                 c = getchar();
    4 X$ _3 L8 O: C7 p1 z
  106.                 if (c == 'y' || c == 'Y')
    ' o2 V  u& y' F; G
  107.                         break;0 o$ N+ W7 i  j
  108.                 if (c == 'n' || c == 'N') {
    ; l5 Q0 G% |/ N* l2 x
  109.                         printf("\nAborted.\n");
    4 I1 z( g8 ]0 \+ U) t
  110.                         return 1;
    8 g& X& i# z% o' m; G
  111.                 }
    , O$ v: P1 u5 g- z7 d% S* ~
  112.         }
    ! o& Q( D- h/ ?
  113.         if (writeparam(mac, stbid) == 0) , q3 p8 r1 I/ @& Y9 i
  114.                 printf("Parameters changed.\n");" ?/ |6 O8 `/ j* I9 e9 l+ m
  115. 1 Q& P3 A, j1 z; I* X/ Q5 s
  116.         return 0;
    1 h5 M1 C& p. v; m
  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
+ ^, W6 ]: V& ], ]0 }  D在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 k, O8 H; {6 [) O. @& @7 T
你用的编译命令行格式是什么?
* ^# ]6 L! }5 J* y7 U
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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