查看: 17137|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! R6 Q# O& {- b# I$ l# z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) ~1 T% f- E1 M- P
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, q. k+ J2 I+ w8 T/ u% Y  N2 E5 S1 p6 k
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  |5 x) X2 J: N. J3 O5 n3 i
/ @- s9 \/ f( M, j/ s( j) y( Y3 r4 Z3 L
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# @! C1 r: ]! s% R, w" ^' p1 I: y# i

+ H6 o. W4 R& d$ i1 f/ |8 l补充内容 (2012-3-8 09:42):. a- s$ {, v; K- z& `: F* m
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
+ Q# ~2 f1 r! k, m这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。6 ~8 B. {2 j( @4 z) O/ g+ |
% k+ ?$ P( w: P+ z
himr <address> <value>. sample: himr 0x80040000 0x0! S# m' ~% ^# q: v% ?0 s) o
) K! L, [& [9 ], o, ^1 Q" ]
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。4 u% O; I; z% C4 g, l! e: D
himr 0x80040000 0x00
: e% ?% A+ B6 f5 K. N. C; z8 mhimr 0x80040001 0x11* X) a- u# \- Y. {" e. |
himr 0x80040002 0x226 i/ ~5 K. D. }5 A" j
himr 0x80040003 0x33
9 x9 y# a3 V$ h8 w4 Lhimr 0x80040004 0x44
( f6 g, X7 e. M+ o& C* ?2 Lhimr 0x80040005 0x556 e9 E5 k2 i- y1 k5 ^# U
0 Z2 d6 R$ `; x2 k8 e6 B8 }- Q1 ~9 \& T: g
SN也是类似。
" H4 w! C4 Q8 A5 X0 U6 u3 P+ ?" M4 Y; t* Q
现在主要是,谁告诉我们MAC和SN的地址?
) n) U5 t- f8 l: |) c/ E( W# z6 K
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % o2 {( b( c3 e7 D  g, D
一直想找到运程修改MAC和SN的办法,苦于无解啊

" `1 V. ?# X8 H+ A源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 g/ H  `+ X. S1 H# A1 \

& j6 J9 [3 E' S; ]# y修改的代码早有了。到今天不会编译。8 c* N) Y" J3 r* x* g0 p. D
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: W7 B; Q! r0 x/ D4 ~1 ^
  2. #include <malloc.h>
    : D6 H7 s, k  ?
  3. #include <sys/types.h>
    2 D4 }( v/ Y, J6 R, z! y
  4. #include <sys/stat.h>
    8 _% Z) {4 [* |% P# v* Z
  5. #include <sys/ioctl.h>8 Z  _/ t! s4 k, V! U8 M
  6. #include <stdio.h>
    8 [% q2 x+ ]3 w  C. r& U: p1 N
  7. #include <string.h>
    , E4 A" K3 _, C4 z6 o- K$ x

  8. - [0 K3 X! z$ L. Z* X! S
  9. typedef struct {
    8 ~. E" `& l* C4 @5 `
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 f: X2 f% f5 @
  11.         unsigned int        sub_addr_count;
    ! R; O  C; }6 {/ F7 }+ L2 Z* ^
  12.         unsigned char*        e2prom_cmd_data;; s2 ~1 v# p% |: i( T
  13.         unsigned int        data_count;
    ' E: N, a& \- o
  14. } e2prom_s_cmd;+ V1 R, b+ S- S' r

  15. " S, H' t1 O4 f8 E& H3 q0 L& F
  16. #define E2PROM_CMD_READ 1' O/ V7 m& ]" ^+ x! B4 S" B, i
  17. #define E2PROM_CMD_WRITE 2
    , i' ]2 t6 H/ @9 K: x. T% k* Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  ^8 g  F0 y) N- n: a4 j
  19. 7 w( L" P4 c8 n5 E; @' X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) M* J1 E3 V' u3 X2 m! x! p1 U- J% }. v
  21. {& s0 n% P9 b& r5 `
  22.         int fd, ret;
    , k! p# q3 z2 p
  23.         e2prom_s_cmd arg;
      D" s  ]8 P$ {9 ]
  24.         unsigned char buf[0x18];
    ) w7 ~5 O6 o/ H+ m2 a& P

  25. 8 {7 ]0 i+ T0 B; ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 H" l3 Z/ W$ y3 ^& r$ W8 x2 D
  27.         if (fd  < 0) {# R% v) f5 p- t: i& ?9 J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 p4 K/ |9 H/ G$ e
  29.                 return -1;' {0 D( J7 N% b* K# M
  30.         }: x. q3 \$ X9 w0 z: E$ |) Y
  31.         arg.sub_addr_count      = 2;
    - ?- A+ d7 G1 e
  32.         arg.data_count          = 0x18;' q* j6 c/ q8 j) G" ], T
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 w( R2 {! M& Q1 K; M
  34.         arg.e2prom_cmd_data     = buf;0 p+ Y3 J1 u' U1 B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 Q5 w. b3 x0 f2 j! {( u
  36.         if (ret != 0) {
    , l+ B$ I2 h& j$ @$ [5 J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& V0 m( ~& F$ H5 a) {, G1 M4 I1 U
  38.                 return -1;
    ) M" G& P2 n' X1 ~! ~. p
  39.         }3 d( H/ e/ z! K8 N; `# j
  40.         memcpy(mac, buf, 6);2 k7 i, i$ k9 j# U7 Q. `4 H
  41.         memcpy(stbid, &buf[6], 18);6 }/ f7 h% N0 S4 q
  42.         stbid[18] = '\0';
    1 v* y5 c, d3 N1 y/ S* A  k

  43. : z* P' _) b" h6 z. u
  44.         return 0;
    # d/ E9 R8 I0 m
  45. }0 e" y/ B9 |1 v0 u2 V0 @
  46. 1 x4 |* R' X  r5 ^! N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' r' f) A: I2 k* b2 a* p
  48. {
    8 q( Z6 n( Q( G, b- ]. Y* C
  49.         int fd, ret;) d" R& x! t# ~: S5 Q6 w( k
  50.         e2prom_s_cmd arg;
    1 o; p* x; W* K/ g' Q: p$ ]
  51.         unsigned char buf[0x18];
    . v4 {) k; ?& c

  52. 0 ~$ ^- F9 }6 V3 T% v0 V- d
  53.         memcpy(buf, mac, 6);: N; L) l1 i) q8 h5 @! C- v* g
  54.         memcpy(&buf[6], stbid, 18);9 J2 F+ h( L! j/ f9 V& M* W9 _4 k
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 Y. t, Z' I, \3 v) p8 q3 s+ x
  56.         if (fd  < 0) {2 f! r! K9 D0 e+ u5 v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# \+ g) r; o* i7 H- T+ j- M
  58.                 return -1;/ ~$ _. y& Z6 j/ k
  59.         }
    . ?4 u) ], ?# V2 Q, v
  60.         arg.sub_addr_count      = 2;
    6 t- u3 Y; Z4 x/ G$ V
  61.         arg.data_count          = 0x18;( t  k3 j7 j5 h; p% r% a- o
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 l0 Z4 r/ ]* ?, s& {" q
  63.         arg.e2prom_cmd_data     = buf;
    7 \$ x% P6 H. ^4 R# e" g9 q" A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 O; F% G, g/ X: Q  h
  65.         if (ret != 0) {
    5 G4 X9 H5 p5 d
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ z7 K/ n9 @  a) R0 H
  67.                 return -1;( M3 h2 v9 P& X1 n/ m$ Q
  68.         }5 l; I) S2 j, {$ @! {6 t

  69. ) d2 f- h; G- u+ t
  70.         return 0;
    1 w! ~% ~0 m. `# G) b2 U
  71. }
    ) D4 J. q5 M: Y5 S5 V4 e

  72. ; m8 L8 M5 V( `2 [/ o& ~9 x% R
  73. int main()% K, j/ o/ H( E! ^- ^! c
  74. {; J! Z5 L/ X: f7 u* S% ?
  75.         char c;' u) |! m5 h  I4 }
  76.         int i, macs[6];( w" o9 w+ F% J- ]( ^& g3 y  e5 a
  77.         unsigned char mac[6];% y$ D: t. l5 y8 i
  78.         unsigned char stbid[256];8 A/ i  e  N$ S, y7 e0 j, t

  79. ! F' P4 h5 o+ b
  80.         if (readparam(mac, stbid) < 0)1 G) d% `& V/ p
  81.                 return 1;
      @& Y: _* z& S8 t

  82. $ f- k( [9 c; Y; g" v+ X% E. I7 G& P
  83.         printf("Current parameters: \n");
    2 ]6 x+ d; n2 ]9 m# I3 B8 M- P
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( ?5 R" [" t+ [  v. E! U
  85.         printf("  STBID: %s\n", stbid);
    ! f9 u' u% K* m) U3 m4 m' w
  86.         . G( z" G" J! e- z. x6 h8 A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 v& p) i7 w+ z! d4 m1 A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; J+ g% @+ M( O7 v0 j1 J
  89.                 printf("Input MAC error\n");
    % R1 W! c& ^9 N; i( e
  90.                 return 1;
    0 ~2 M, n  u; l
  91.         }
    + T6 [1 Y2 |* X. l& \& W$ t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 @% W/ t4 Z4 @' d1 W& g+ h% y
  93.         printf("\nPlease input new STBID: ");$ a% G1 C3 C  \. D0 j+ ]
  94.         scanf("%s", stbid);7 Z- v( R% B3 f
  95.         if (strlen(stbid) != 18) {
      C, \: U% b5 u* X! X$ }1 s8 _
  96.                 printf("Invalid stbid\n");
    1 ~1 G( {- ^: V* \' b/ v- O: V6 e% m
  97.                 return 1;# c. i! E0 z/ _2 J4 N
  98.         }1 f1 j+ t) s( U4 O
  99.         printf("\nNew parameters: \n");
    . A) Z+ V1 Z& M. O) W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ ^* s! l5 M" v9 y( ]4 v
  101.         printf("  STBID: %s\n", stbid);
    $ J3 T$ }: _4 j6 ^( ]# w: V9 r
  102. , z$ R1 t& H% A: ]" g
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % ^, i5 K- J; k% Z; L. T8 B
  104.         for (;;) {0 a/ |& H) s7 _8 W) Z. O. E
  105.                 c = getchar();$ }' F; ~; z3 v* b2 }4 x3 Q5 e9 V
  106.                 if (c == 'y' || c == 'Y')
    : Q' \+ L; M4 m3 u1 t5 q" {0 u' |
  107.                         break;
    " _* K5 j- R$ s& _5 D
  108.                 if (c == 'n' || c == 'N') {) I8 S, W' h1 W. D. {' l/ m# X1 _
  109.                         printf("\nAborted.\n");3 h; B" f+ p4 i% a
  110.                         return 1;4 G. k) A- }0 Q8 l
  111.                 }3 [$ v5 f4 e! ?6 g
  112.         }
    1 m! J* M! x8 Y; B0 R2 D
  113.         if (writeparam(mac, stbid) == 0) $ c& D8 v) e: F1 V! B/ e' B$ o
  114.                 printf("Parameters changed.\n");
    9 C" B8 _) \5 P

  115. & d5 g: g/ _! t
  116.         return 0;
    7 N, O% ~+ l9 @" Y/ E
  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
# Z- u/ C  Q  \! B$ @0 J/ q在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 ?3 n% e! M) N6 c. Y3 Z3 [
你用的编译命令行格式是什么?
1 H6 N6 j5 F& D* Y, c
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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