查看: 16261|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- q* A, d% Y7 _% U% F4 z$ R" Q! k1 y  |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* z( Q5 S( x7 |/ T2 z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& L& s- S4 q% [7 w& Tusage: himr <address> <value>. sample: himr 0x80040000 0x0
* K2 v; _& ^, e$ S& v+ K5 M! Z2 E2 D( {4 H% ]+ J) q5 v# ?5 g
" o* O6 u7 b% a: i. b
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% `6 S* S5 f" [1 P3 x  r2 t  J/ M0 [
8 O* p! J! n* D5 X8 j5 R6 a, A5 v, O' P$ [补充内容 (2012-3-8 09:42):
; c# E( k# F1 K) c- O) ?5 Mhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数5 h( m8 {) V2 O( v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
, R, }  T" F* M
+ I; w# o, G: E& I- |6 x! c5 Q6 ohimr <address> <value>. sample: himr 0x80040000 0x0' f9 \" C' d* G

: W/ w4 b2 S. t" \* f例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. W% P" ?: @4 @# E) j2 Dhimr 0x80040000 0x00
& v1 Q  G1 A$ shimr 0x80040001 0x11
/ ^$ m* k$ s8 M6 G( R* ^7 khimr 0x80040002 0x225 r/ [$ R5 ^& G0 f( R
himr 0x80040003 0x33; Z$ j9 t" A. l! i  g
himr 0x80040004 0x445 @7 W- }' Z. ]4 o4 G1 a
himr 0x80040005 0x55: E2 P/ ?9 G: h! S$ E

; w# P3 W4 l$ V) R# s( SSN也是类似。
2 {0 I' A  P! ]8 c" e; f  j$ K: T1 ^( l# R7 \
现在主要是,谁告诉我们MAC和SN的地址?
9 Q4 |* \. ?5 v; Z
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
4 H( X* z7 U+ v. E3 u一直想找到运程修改MAC和SN的办法,苦于无解啊
6 n2 S8 K. ]0 @* e# ]8 m! S; j2 ?
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - \" J6 Z/ |4 T, H/ v

1 S9 `% y: r; x- w- A修改的代码早有了。到今天不会编译。
( ~8 f! A$ ^8 n9 U4 f- Z- D需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' B) w; S9 I5 y# w# ]  [
  2. #include <malloc.h>
    & Z$ L5 I7 b$ s0 K
  3. #include <sys/types.h>! @! @5 `! ]* a8 ~( M
  4. #include <sys/stat.h>
    2 E' |% @8 r% i- U/ D
  5. #include <sys/ioctl.h>
    ( I, P6 C0 A0 e, b2 G/ T
  6. #include <stdio.h>6 t; p- O0 Z* f
  7. #include <string.h>
    6 O; R5 o4 Y) D$ x- ?4 ]
  8. 3 Y/ ]8 }$ D6 F$ a& |, A2 x, }
  9. typedef struct {
    0 ~4 V. x) _" k8 u, X$ W0 s) b4 i
  10.         unsigned int        e2prom_cmd_sub_addr;
    % v- p  T1 y, j* X  z3 J
  11.         unsigned int        sub_addr_count;/ U4 D6 F! ^* M% h
  12.         unsigned char*        e2prom_cmd_data;2 L5 C) I: K$ i$ F2 s( `' c
  13.         unsigned int        data_count;$ g  i$ `, \4 j" k- d' W
  14. } e2prom_s_cmd;8 P2 |( n  m) J2 N5 c4 o' r; u
  15. 0 R2 `, Y" \: f, p
  16. #define E2PROM_CMD_READ 14 B2 u6 ^- V. t/ O7 s7 b
  17. #define E2PROM_CMD_WRITE 23 v1 M: Q7 {+ e4 ^% p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ b6 [8 m7 E7 k' ^5 d
  19. 1 V" {) H$ B" _7 o6 G3 j$ f
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 Y1 C; B9 X  ]
  21. {
    ( F7 F, L  D3 d$ e; S9 B2 I7 A
  22.         int fd, ret;
    2 m! h( E9 a- H* F* R
  23.         e2prom_s_cmd arg;% Q  P; A: E+ j" e, J- I
  24.         unsigned char buf[0x18];1 Z4 {5 q% e! h3 L
  25. 2 n# R# Q5 _  r/ z- Q! g5 N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 ]2 X2 T* d) }
  27.         if (fd  < 0) {
    6 g" d/ K. T% _% W2 U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : Y1 o7 H$ V: Z5 G/ J; u0 {( Y
  29.                 return -1;
    * C$ @' \1 c1 Y# ~% \! ?" K
  30.         }* r: e/ ?9 I* ~3 w5 q0 B! g
  31.         arg.sub_addr_count      = 2;8 j0 ^5 H. a. X1 j, ~' I$ W
  32.         arg.data_count          = 0x18;, @, Q& h$ r) L! S' A/ y2 l
  33.         arg.e2prom_cmd_sub_addr = 0x290;& j) {; Q6 L( _( [1 W! `; i2 t
  34.         arg.e2prom_cmd_data     = buf;2 `2 `3 ]/ v6 M$ P( y+ I8 \* a
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 G' y- h+ L. G4 `5 D; Z, V8 A
  36.         if (ret != 0) {- L4 |0 S2 F+ ~  s! z( u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  X9 T: t9 Y+ N; \- ?5 Y' ~
  38.                 return -1;
    % W' g: }. X2 m9 t
  39.         }
    0 C+ Y5 x" b3 p9 e" U7 Q- m5 k
  40.         memcpy(mac, buf, 6);
    ' O0 k- E, A. w& A: \4 i
  41.         memcpy(stbid, &buf[6], 18);5 c/ }" q8 E5 k. s' O
  42.         stbid[18] = '\0';
    . z; g" }. ~+ G, |" v2 ]

  43. $ \% d5 g# u) ~. t& H
  44.         return 0;
    & U8 u0 a  @$ _0 I
  45. }. o0 q3 N4 Z0 M4 g& z3 G

  46. 2 B5 e" m" c2 z3 \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! Z8 q& d4 B0 c6 h
  48. {
    + x6 X2 A+ s5 `' v
  49.         int fd, ret;
    ' @5 f3 x2 w( F3 h9 h
  50.         e2prom_s_cmd arg;1 C. I# @: Z4 H, x" d
  51.         unsigned char buf[0x18];0 q+ m/ a% H5 L6 d5 u* Y/ M
  52. 5 }& x1 f2 P# Q' K/ w* S
  53.         memcpy(buf, mac, 6);2 n: W& M) ~$ M5 w
  54.         memcpy(&buf[6], stbid, 18);
    " s, ^- i  c( A- D8 O6 R% U5 @# q( a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " ^, m# v7 f8 H% U: {0 p
  56.         if (fd  < 0) {
    / x1 R& f  }' [) i. m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : \$ ~5 q2 `& I4 M, w7 l( p. |
  58.                 return -1;
    4 k+ ^& r7 I" W+ A0 C' l( n
  59.         }* M. W( c) d2 N
  60.         arg.sub_addr_count      = 2;2 V) |1 Q4 L4 g3 A$ o2 k* x8 C" f
  61.         arg.data_count          = 0x18;
    1 X% c) [6 d: D
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ C8 n7 G; v  Y# U0 @
  63.         arg.e2prom_cmd_data     = buf;
    - O3 p1 `& W4 F- r4 d; k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) p- c5 d. T( r' y  _: a+ z# l
  65.         if (ret != 0) {& W8 \* Y: Q+ W  W6 w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % u6 ]2 b( P( H/ b3 X6 s0 B! w2 t- K6 y
  67.                 return -1;
    ; o+ s  {- h" y6 Y5 M" z8 K
  68.         }
    + U+ l) T; q; m7 v
  69. / A& i3 N0 H7 ~4 q& o$ d% L
  70.         return 0;" M: p8 i: ~4 Z7 [8 y$ G2 ]
  71. }+ q  ^' d9 u  D  R: F
  72. ' r8 k1 Q7 B! P: S" E) ]; ^9 Y. }
  73. int main()
    0 M% |  a9 T6 P$ a1 k
  74. {$ z1 r' G9 E4 J- W) y
  75.         char c;
    9 u4 v5 L( F; ?; i$ R
  76.         int i, macs[6];( m- T5 x- T0 f  H7 |
  77.         unsigned char mac[6];, o4 J; v  l! {# {$ n/ a5 h
  78.         unsigned char stbid[256];
    3 b5 j- o) ^, D: F1 L* W6 k8 \
  79. ; q) H* i8 N/ g
  80.         if (readparam(mac, stbid) < 0)' j+ A+ C! A$ b! U  W* i
  81.                 return 1;8 w8 k* w! O% k) j" F0 Y
  82. . _6 S% y' [/ L4 g5 a2 t( t
  83.         printf("Current parameters: \n");" M/ R2 f( b" U/ T% Z- G" W9 {
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# t; _5 x) P9 n; x. S+ O
  85.         printf("  STBID: %s\n", stbid);0 u$ Y: X9 Q' f: \+ ^0 Z& X
  86.        
    ( ^# W5 w- y3 b$ Y7 H& h8 h8 N" I2 {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. N7 }9 G) i5 u4 l* J/ b9 R& g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , h5 a& I5 r: w' p! c3 Y
  89.                 printf("Input MAC error\n");& \4 _, M; J! h  z! e; M
  90.                 return 1;$ Z7 q5 P6 q3 `  ^2 l9 |: r- W1 \
  91.         }8 a# k$ H* x; _0 A  f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 ^) l  v* U, Z5 \0 _; W) Q
  93.         printf("\nPlease input new STBID: ");# O4 O/ v7 a2 [! X
  94.         scanf("%s", stbid);4 N% O5 E4 D% E* N/ `
  95.         if (strlen(stbid) != 18) {, O" a/ B2 A0 `. o0 [# Q
  96.                 printf("Invalid stbid\n");
    2 C- a! [( F/ q. g& v9 W
  97.                 return 1;- E8 i. U7 H1 E: s4 k2 ^/ \4 a/ e
  98.         }
    # G& W7 Q6 P5 }
  99.         printf("\nNew parameters: \n");  A; B8 z7 _$ K; c/ u- H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - O* {+ t/ |+ `0 u' W
  101.         printf("  STBID: %s\n", stbid);
    # k) `! G' I, |3 {: J

  102. + O7 K  V; [$ E% Z) S
  103.         printf("\nDo you want to change paramemters? (y/N) ");: u: s9 y/ z) u/ b9 j4 m" N8 n3 E
  104.         for (;;) {
    : L; f& _$ i/ V0 n; A
  105.                 c = getchar();8 s: i/ _8 |( Y  Q
  106.                 if (c == 'y' || c == 'Y')* C  a# \& A. E3 I' |
  107.                         break;
    . s+ ~9 d" \& h. m( \. ~) m2 J# |
  108.                 if (c == 'n' || c == 'N') {3 J) g/ d# ~& |$ u% j
  109.                         printf("\nAborted.\n");
    " {) I9 v4 u" v; R* a
  110.                         return 1;
    5 `; {% Q( ~& s
  111.                 }
    7 S+ @3 |# B" C8 I9 b* G% N8 E
  112.         }
    / q  u7 F) l5 t$ [2 W" x. ^- w
  113.         if (writeparam(mac, stbid) == 0) 0 u2 h# z  c, a5 o9 X. t$ B5 C" q, i# f
  114.                 printf("Parameters changed.\n");& ?1 }( A$ v* ?% f

  115. # q$ I3 Q/ k) t! m" |8 G0 M- L5 A: Z, x
  116.         return 0;( f0 B2 _5 ^3 R
  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
- e" h$ ?0 `* p* S在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 w4 }: |) z! R9 H: X你用的编译命令行格式是什么?
: y/ U% c0 m/ C& Z$ }# O3 B2 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客服返回顶部