查看: 16703|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * ^# Q; q( R6 L" ~# A
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; j2 i# ^1 a6 t7 `: O3 n+ a/ c, z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ U3 }6 f; z- ?, P$ [8 t* k' pusage: himr <address> <value>. sample: himr 0x80040000 0x0- ^3 f# [4 |8 i' ?7 L

" T# Y: i: y; _1 c2 g% p; l/ ?$ }/ \# x! z9 U  Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ a4 d4 U, H0 e& o7 w( Z# |4 W3 f( y6 H( w6 r  m9 W
补充内容 (2012-3-8 09:42):, E  \; _5 d2 b, ~
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 h/ l% H' b1 `8 C4 \: G* Z这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。: s. f, j% w3 N. \+ z( b1 F0 D

! j# N1 ^6 m* x- `himr <address> <value>. sample: himr 0x80040000 0x0% `! }& X, C  f" K2 R
1 c. A7 g, e8 E! t" x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 ^+ r5 y# ]. h, B' p) U
himr 0x80040000 0x00
: f4 ]9 C7 g( O/ dhimr 0x80040001 0x11
- c9 U4 c  ]$ }$ nhimr 0x80040002 0x221 w5 X; F. y7 E4 G1 b' i
himr 0x80040003 0x33
* _  P$ E! |) F1 Chimr 0x80040004 0x442 M9 M. F+ C( k" K) ]
himr 0x80040005 0x55
0 M3 ^$ K( w& W0 a! O# ~& v$ `' e8 t  e6 W/ \
SN也是类似。
2 G4 S6 ]. {! M- W) W; d9 \8 p/ n7 Z/ S! ~$ S
现在主要是,谁告诉我们MAC和SN的地址?
: y$ ~' _: N) ~. O
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 O* k. q+ U8 n( i' Y+ ]: W9 E一直想找到运程修改MAC和SN的办法,苦于无解啊
; S* F: O& {% p# a* L
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 u, B# m9 B  H# e( O# j/ }% F, X
修改的代码早有了。到今天不会编译。
: l( r" Q% f+ m( l需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' }2 i) }) O( Q" E  z% p  l
  2. #include <malloc.h>
    9 X% m7 j. i' [0 W7 Q  I. `' R
  3. #include <sys/types.h>
    1 }9 \1 p+ X! K9 [" w/ T% m" E1 ?
  4. #include <sys/stat.h>8 A' F+ S+ I* N) Z: x1 z& J9 v
  5. #include <sys/ioctl.h>; T- a  q; B+ c. S; c8 E4 R
  6. #include <stdio.h>
    ( G* t% L1 T( N! K
  7. #include <string.h>
    8 D6 [( V: R5 [# `
  8.   d1 t  m; @2 m
  9. typedef struct {
    5 O" D7 g* H7 ~% A; w
  10.         unsigned int        e2prom_cmd_sub_addr;
    - x7 O3 F" ~0 y0 }9 B2 s
  11.         unsigned int        sub_addr_count;0 e5 M2 K6 c  p' T- ]* G
  12.         unsigned char*        e2prom_cmd_data;
    - v+ x1 _& \# l. Q
  13.         unsigned int        data_count;
    + Z; m+ G2 _7 r* A
  14. } e2prom_s_cmd;: r% X9 e$ _. c1 X
  15. ; l' [2 P1 Q* x0 c2 {" c5 J
  16. #define E2PROM_CMD_READ 1
    ; t# Z+ z4 o$ L4 \+ s
  17. #define E2PROM_CMD_WRITE 2% d1 K5 v* [( m' m. Y( t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 j5 {% S1 C  e5 n* [
  19. 0 Q) g5 @: K; V6 ~' b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)0 u# `* f! v) {" [5 E* x7 E; n, c
  21. {
    6 a/ G* V6 t) _% {& x, G' N- r
  22.         int fd, ret;
    6 _, g) A7 G& J% O  A4 N+ n
  23.         e2prom_s_cmd arg;
    7 j* F/ [7 W  L+ }/ ]
  24.         unsigned char buf[0x18];1 n6 j5 m# R! y* K' p) k; C

  25. 6 E, s4 O8 a" o0 c) ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! q" q- ^; M0 g) S5 q" `7 p" Q
  27.         if (fd  < 0) {
    3 R2 q% n: E4 k8 w6 r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 @6 v6 F, w; }0 K+ V
  29.                 return -1;
    3 c; k" f: N; R$ N0 B0 H$ j
  30.         }
    5 p/ X0 P' t& \& h& q* ]& v
  31.         arg.sub_addr_count      = 2;/ ]" H$ l: K- ]8 h* r
  32.         arg.data_count          = 0x18;
    6 W5 G# D. u, O9 @+ r; r1 i! ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 w; w% R9 K6 N' V$ S4 \' s) e
  34.         arg.e2prom_cmd_data     = buf;
    1 P! a% I/ U+ V9 D$ P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);" {# e( o( m0 X; Z& v9 R$ u; g( R
  36.         if (ret != 0) {1 ~& v. ]$ \$ P" b0 `' v" F& Y4 x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, r, |" |9 Y; k, ?. _0 E  C; o
  38.                 return -1;
    ; u$ [8 I2 K1 r( W4 q, B6 W
  39.         }$ l1 X' u& H4 a- G. `. [2 e4 L
  40.         memcpy(mac, buf, 6);. z9 A7 i1 Z6 b' l: Z
  41.         memcpy(stbid, &buf[6], 18);
    6 p6 H; R# v7 u; }/ }$ ^
  42.         stbid[18] = '\0';
    9 C" t. t( Z1 p
  43. * V+ R4 R& N. j6 O
  44.         return 0;
    % ?; N* N+ e+ W) h$ g6 d
  45. }
    ' x& X4 E) c2 X  ~

  46. 6 Z* H# |/ C' b" O6 L5 N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! j  P* S' P6 W* R) x+ M8 `
  48. {9 B/ [9 `& `$ H3 v* c! Z
  49.         int fd, ret;
    3 V3 _/ N* j8 }7 a& N
  50.         e2prom_s_cmd arg;
    ) A: n- B$ q# L+ l% d7 M8 z
  51.         unsigned char buf[0x18];
    " V: ~3 _5 _" s1 i" H. e
  52. 9 q% N- t& |: _+ y$ I+ i1 \' C
  53.         memcpy(buf, mac, 6);  @8 D4 |7 v  G3 k& [
  54.         memcpy(&buf[6], stbid, 18);
    9 n1 w$ f! x; `9 ^2 L* w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! a& n+ |5 H1 D& P6 y4 i5 O2 ~
  56.         if (fd  < 0) {
    2 i9 V  R. g  m( y, U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # k7 G0 z$ M- x1 H7 M  ]; [1 {5 }+ f
  58.                 return -1;
      w: o" c& G& ?5 Y; `
  59.         }8 M& v; q- |  b2 h- b5 t
  60.         arg.sub_addr_count      = 2;
    ) s3 }: G9 {. U& U+ r
  61.         arg.data_count          = 0x18;
    ! T: T6 f, R* q8 B% c
  62.         arg.e2prom_cmd_sub_addr = 0x290;' Q2 V3 Q1 [! C4 I
  63.         arg.e2prom_cmd_data     = buf;4 I9 E2 N$ J; D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ h3 g0 @& b& Z0 o; a
  65.         if (ret != 0) {
    6 v# g; P: Y$ ?9 P8 o7 A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    / [' P; \$ ~4 [5 H# }9 K6 e
  67.                 return -1;
    1 q) L9 k1 M: f% \5 X
  68.         }
    0 v1 i' s$ N0 {. ?7 k
  69. ! p) n7 K$ g+ @* h
  70.         return 0;; ~/ B( a! @+ e5 N. o* ~
  71. }4 D* T' m* K  F+ H* O

  72. 8 c# W+ q# f' h8 N# ~6 J2 a; ?
  73. int main()
    , N( d9 c/ g) w9 m4 Y0 ^
  74. {, @2 Q3 E; o1 c
  75.         char c;
    " k; z/ r( I* n
  76.         int i, macs[6];# `. A% \$ t: d* [/ \# h) {  a
  77.         unsigned char mac[6];+ T! I: q, U" f1 h1 g- d
  78.         unsigned char stbid[256];) J( S$ k- C% S- u/ v% [& Z
  79. $ c8 }% H* L+ M1 N* x% U8 k' f. T- t
  80.         if (readparam(mac, stbid) < 0)
    ( o, Z0 a, C: m3 Q5 n
  81.                 return 1;
    " U) G) G$ ]) O8 o3 J% Z: o
  82. " n( J+ g$ W9 {! U* ~% A) w
  83.         printf("Current parameters: \n");
    3 @" M# x6 D$ ^2 k1 f, `! q9 l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  O  k2 |8 m" O1 e
  85.         printf("  STBID: %s\n", stbid);1 ~) ~# |; N" l
  86.         9 [6 A# E" L9 }5 o% ~. N6 L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% W0 n, x! r9 g2 b. d& U
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 R0 P0 w/ I9 d; b. R; _8 W% U: i7 A
  89.                 printf("Input MAC error\n");
    7 E, u6 g9 X& y1 o; c& ~
  90.                 return 1;. d8 c% R+ P, p# V% C
  91.         }
    " j. N/ ]* j2 O; ]: b% Y  M/ L6 ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 F2 u" J2 R" Z6 i
  93.         printf("\nPlease input new STBID: ");% }* @! L7 E+ r% E
  94.         scanf("%s", stbid);2 i1 q+ b/ T+ Q
  95.         if (strlen(stbid) != 18) {0 }( e* G+ S" r- y5 @& c; v$ w
  96.                 printf("Invalid stbid\n");
    6 G1 B9 z6 h! Z' C4 S6 ?& D* D) I5 \
  97.                 return 1;+ S7 Y# e+ m5 M1 e
  98.         }
    . ~& J: y) |, p0 N% K" i  a; ?* s
  99.         printf("\nNew parameters: \n");
    ; O' |" c7 W3 H8 Q1 f: U1 ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& y/ X7 V  d- l3 k/ D# M9 n
  101.         printf("  STBID: %s\n", stbid);
    , |1 @- R+ Y" Z$ h  a# K

  102. & ?& @7 J5 H: C' M; T
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ! R+ k, V" Y# ?6 U' c7 @
  104.         for (;;) {
    % \2 e0 ^0 J6 o* o
  105.                 c = getchar();
    & l; J  l4 {0 a  ?& |% M' o
  106.                 if (c == 'y' || c == 'Y')- O4 E; r4 v: F6 L$ k8 e% ~0 x
  107.                         break;
    2 [2 I7 T" o" A% I4 D
  108.                 if (c == 'n' || c == 'N') {
    * S; q& P6 d/ Q$ W
  109.                         printf("\nAborted.\n");! R' O" s& ^* D% f" _9 G2 G
  110.                         return 1;
      G+ s/ S2 p7 @  T; k4 n! B1 R
  111.                 }! X% {$ u0 d. K" A3 \9 d) ?9 |' b
  112.         }- B; j2 J! S3 _1 p0 ~' {
  113.         if (writeparam(mac, stbid) == 0) 5 i5 t# @; N: j+ V
  114.                 printf("Parameters changed.\n");
    : @% ~& E1 i8 X* O
  115. 8 B8 d, b7 n+ v6 _. a4 x6 h
  116.         return 0;
    9 P" A7 {3 z- r/ I7 t0 h( F
  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 + F! u# n$ d% w% n
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) `2 F! `+ l+ c( T; r( y  k+ k! W( _你用的编译命令行格式是什么?! C, L; O4 @# }* y6 n
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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