查看: 16422|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* m/ D5 F1 [% c( v" R4 G  t
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 x: T) Z2 O( x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" m* j' s$ f+ S5 H) k
usage: himr <address> <value>. sample: himr 0x80040000 0x0
3 e0 p/ T+ O  k! g* J1 {$ q/ Y* L6 g5 a  [

6 @) O: x; n" B- U不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. Y3 K$ p& D1 w- X  U

. E- q8 R+ I! s补充内容 (2012-3-8 09:42):) _5 R! }3 Z6 `, R; |( a3 {
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( @1 L4 |2 l& t* ~
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。% |+ d% |8 N/ x! s) [$ b) o
9 B/ P% T+ n3 x5 y
himr <address> <value>. sample: himr 0x80040000 0x0
! X- E* }% z& C7 k  e- G2 y& g  z$ h8 H4 N1 t! j1 _
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) ]& A0 F4 G2 Y/ I. A8 mhimr 0x80040000 0x00
( |0 Z9 K+ w: ~6 n/ a: d( ^" i& thimr 0x80040001 0x11
7 p/ T8 b( D6 G2 i1 C: {himr 0x80040002 0x22& @6 C* ?8 d! B1 M, ?1 T% v' O
himr 0x80040003 0x333 U) _/ i9 ^8 O  V! L& C8 ~
himr 0x80040004 0x444 r/ f% j- @2 Y- ?: H6 C% _
himr 0x80040005 0x55
- r5 m" y; Y7 M# k# `, E! Z$ |) D2 y
* K2 @! N" p5 WSN也是类似。
; O" k0 A4 r& U6 A, [) O
& `! p/ |7 @& x  D3 q5 `' Y现在主要是,谁告诉我们MAC和SN的地址?
3 g$ ~5 O5 E; e( m
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 E2 Q$ l9 K% k; E& k一直想找到运程修改MAC和SN的办法,苦于无解啊
0 {, G4 V: }; ?) x, P; ~+ w
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 }7 t" o$ N6 G; H! s' f$ ~
7 X, I2 c3 J( q/ p3 v9 u( R2 G修改的代码早有了。到今天不会编译。
9 Y3 N6 l* R; \4 Y. P, V% I7 ~- k+ W! J需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( j: i) U# v6 O" @( X8 d( U" \( s
  2. #include <malloc.h>
    1 t! q3 W* \  B- B, @
  3. #include <sys/types.h>
    ) X! S' x5 w/ i+ I
  4. #include <sys/stat.h>+ _# X8 ~- O0 }4 q0 K+ V2 p' Z$ D
  5. #include <sys/ioctl.h>- m( o1 A" E: z/ P
  6. #include <stdio.h>
    ( E3 M: u) ~8 `# v0 N
  7. #include <string.h>- e: a1 i) X4 R
  8. % f% l0 t- d" [: F6 f( K8 `3 q
  9. typedef struct {3 o& N* I: v2 W1 c
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! S( s# G: Q( H% ?1 d
  11.         unsigned int        sub_addr_count;
    , ~" `3 r, G* d& f7 B
  12.         unsigned char*        e2prom_cmd_data;
    * }) Y- i8 v8 G' N
  13.         unsigned int        data_count;' }& H: t, L0 V0 i$ C; b2 J
  14. } e2prom_s_cmd;
    . ~$ h5 {4 }! E. M" T
  15. ; x/ A  N6 g, x
  16. #define E2PROM_CMD_READ 19 w" u( |8 p: z4 }; h
  17. #define E2PROM_CMD_WRITE 25 X$ _, n3 L) X$ N, P0 P& U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & n: Y$ @; ~2 d) q+ P

  19. 1 A/ B6 ~8 D% v
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " \, |9 F9 Y  L4 u2 z, @+ N
  21. {8 D) R1 W; L5 c9 i# l; m$ [" H3 e
  22.         int fd, ret;% c* j% ~, N1 j; p% ]
  23.         e2prom_s_cmd arg;
    0 @& B% ~1 H. M" A
  24.         unsigned char buf[0x18];8 b' q( d9 R0 W% P6 ]5 ^, z2 S

  25. 3 s4 X) [( q$ o6 @& m7 A( i+ j/ }, J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 q% r0 \* N4 X# k5 `3 L
  27.         if (fd  < 0) {
    ) M# h, \- @! N0 p0 g/ f1 K5 ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , R$ |6 G' x) ?" i
  29.                 return -1;
    / E$ k2 r: j! Z" E/ r! }) c6 w
  30.         }
    & {' m2 B7 x' x, o; f/ X& ~3 e
  31.         arg.sub_addr_count      = 2;. h3 w" A% d$ _8 a
  32.         arg.data_count          = 0x18;
    " S8 _0 P7 C* |# Y* M; f4 h/ |' x
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 G% e5 \# T4 f( p1 o- s6 L/ V( H
  34.         arg.e2prom_cmd_data     = buf;
    $ H1 X9 }7 G- G" U. O' `. _& d8 a
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ |. b4 y% a: X& K" a8 W) _
  36.         if (ret != 0) {
    7 L8 k% s8 J9 j& I; b; J3 w* U/ L
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # K2 D9 G$ }* L% v7 F
  38.                 return -1;
    " F4 w+ T( d. L( j$ B
  39.         }
    1 k/ _+ K4 U9 J/ ]& g
  40.         memcpy(mac, buf, 6);
    1 X$ k" }. ~9 j+ l5 K+ u0 a
  41.         memcpy(stbid, &buf[6], 18);; g4 v, D0 q% S
  42.         stbid[18] = '\0';& M7 ]& P/ T) i6 L$ i& `2 c4 T

  43. 1 n, X+ d) X, \' Q3 @- c3 H5 d, f
  44.         return 0;0 {) T6 N7 ?; d1 {
  45. }5 H# n2 [8 U: e' V9 M

  46. . ?6 w8 r4 m& b% K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 ~- i! p6 S5 \( d: J( J" Q0 F
  48. {
    + p7 Q/ c' @# |6 L* ?* @
  49.         int fd, ret;
    3 I# b' m; l& @; V% y0 Y
  50.         e2prom_s_cmd arg;
    8 G- j2 W2 N; e! D8 |) F( T- r
  51.         unsigned char buf[0x18];& b( K: v" ]. g
  52. 2 Y4 c7 H8 q# t5 ^! T$ l
  53.         memcpy(buf, mac, 6);: z1 i3 n& {  d: Y% Z
  54.         memcpy(&buf[6], stbid, 18);# s4 d# Z& }+ c. x. o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 w9 A; e5 J. E6 |$ Y7 J) R) ]( Z
  56.         if (fd  < 0) {! J. W( I6 M' Z4 m6 f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 f. H% k& k" D: C0 j' I3 L
  58.                 return -1;
    " y5 M4 I1 c  U2 L4 @( z. h6 ]
  59.         }
    - T8 t/ \. j3 V) H- ]$ a1 B
  60.         arg.sub_addr_count      = 2;, [% V; B+ P7 C! b/ z) c5 y! R3 q- i3 D
  61.         arg.data_count          = 0x18;
    ) e8 G6 q- E" X8 r
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ m' K! g. k: G8 W6 X/ q4 J6 T
  63.         arg.e2prom_cmd_data     = buf;
    9 i6 }/ p9 z3 c3 y/ [& m. M
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 \7 F- b  M3 T+ j* H8 Q% \8 b$ a2 t: |3 e
  65.         if (ret != 0) {4 L& o) Q6 p, u" y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ w' W' @. i8 Z8 {
  67.                 return -1;
    ) `5 Q0 t) X: w* g1 Y* x/ }
  68.         }. W8 E; f) n. @) Z  I

  69. & b, R% h: p& m& Z$ h
  70.         return 0;. g/ D2 y; X0 W4 E
  71. }2 y2 S* V0 p9 T4 ]

  72. 9 n3 j4 R: N. ?) D
  73. int main()
    ! a$ i9 ^. I, D" z. d# x/ n
  74. {; v- _* f% p0 X3 e. O% {$ Z
  75.         char c;
    $ M; d7 U/ M, P7 \. h
  76.         int i, macs[6];
    4 J- e3 j; C* q. I. D4 C' g: t
  77.         unsigned char mac[6];) l6 l$ p5 y, z" d$ L
  78.         unsigned char stbid[256];! B. n& `% }- t1 @  `% o

  79. $ t, g5 E( Z5 {% M
  80.         if (readparam(mac, stbid) < 0)
    9 D+ J# S( N$ H" j0 R
  81.                 return 1;
    5 w- i! n" L7 k1 c! H; ^2 P

  82. 2 X* O7 X/ x. y9 g6 {
  83.         printf("Current parameters: \n");
    % D2 S0 \" ]& E3 z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( B2 u% j4 q6 e$ F: D8 _
  85.         printf("  STBID: %s\n", stbid);
      f! Z! V+ X  I5 Z
  86.        
    4 Y7 b$ U6 X3 }. ~. g. D; b2 X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 g0 P9 j7 W; H$ M/ Z+ f6 e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ' A- c2 w+ J; D5 h
  89.                 printf("Input MAC error\n");6 M& Z/ h+ q- f  W1 ?9 R
  90.                 return 1;' i. }! G- k/ n
  91.         }0 @. S: y7 _& p) I5 |( f' B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! ]% i# o$ z+ ~& f( g8 g0 h
  93.         printf("\nPlease input new STBID: ");5 [! T# y0 `' Y, U2 o  Y4 B( B
  94.         scanf("%s", stbid);
    5 {$ W& J" p6 }5 K* e" ?" C
  95.         if (strlen(stbid) != 18) {6 R! o; D6 A" u- r9 u" ^
  96.                 printf("Invalid stbid\n");4 O' w0 B7 T9 f( S1 `! p
  97.                 return 1;7 E2 s& [6 f! A4 Z2 ?
  98.         }
    6 C- i/ n3 h" {0 _2 Y1 X' X
  99.         printf("\nNew parameters: \n");, |" I2 b* ]- U; G. L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 G, {( Q' e4 ]4 n' p% m) E$ O5 R9 n
  101.         printf("  STBID: %s\n", stbid);8 [* t+ P, N+ _9 |& g. B& W

  102. / M/ [/ I: L2 @! X& u
  103.         printf("\nDo you want to change paramemters? (y/N) ");' X& M4 J. U. O, s' F0 k
  104.         for (;;) {" m7 s" R$ y! i) M: \" N
  105.                 c = getchar();
    8 q' }$ M, B* r4 u: D  t3 \
  106.                 if (c == 'y' || c == 'Y')
    2 t1 g& X: D5 h1 |
  107.                         break;
    7 Z3 F; O7 |" P" G- g
  108.                 if (c == 'n' || c == 'N') {
    4 `. r1 d1 B1 J4 C$ Y' f! `
  109.                         printf("\nAborted.\n");  F) w. k5 v7 X
  110.                         return 1;9 y6 O0 {6 T7 v1 X" f
  111.                 }
    / u3 C! e4 [7 ]
  112.         }, p) {% M# @* N* d
  113.         if (writeparam(mac, stbid) == 0) $ d' a  X+ i) }8 o
  114.                 printf("Parameters changed.\n");9 }* S" I+ `5 E- U3 I( u$ l  X

  115. ; _1 V$ y4 o) @4 a% V' R
  116.         return 0;2 }" Q/ y( s( X$ ~9 A( O
  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 $ q& `& H6 y4 M* u$ R
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ r' T% w) Z0 r; c$ V
你用的编译命令行格式是什么?% D/ P6 t. k8 O+ {+ r) p# L: D
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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