查看: 15940|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    $ Z1 d" g0 Y  C9 A
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- Z0 h" H- a5 j5 G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! h2 @2 D- d6 Susage: himr <address> <value>. sample: himr 0x80040000 0x0) B" p! f9 }  R! w( U, m& G
) q0 y' y# I* O  l- R0 F

5 z7 [1 Z" u- n  u4 @不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# h' d3 A6 ]8 D& W  p. B; O
6 C0 d3 F' S# O1 ^) i5 V补充内容 (2012-3-8 09:42):  ?% Q* M1 J- |( c7 C3 A$ S6 w, R
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. O7 h) D: |6 ^" x这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 p& `/ R: f7 o/ E. z8 S

/ L. E, _( q2 `* i2 O0 Uhimr <address> <value>. sample: himr 0x80040000 0x05 u% I6 E" g; O. i, l! q4 p
7 p3 L+ J- x: P
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
+ a$ b4 B; i2 b% phimr 0x80040000 0x00
/ W1 ]* z+ R( E: ~  k/ K6 Whimr 0x80040001 0x117 S/ |& a, b8 Q/ s; W/ P: m
himr 0x80040002 0x22
/ ~' d  n5 g4 S6 a9 Qhimr 0x80040003 0x333 s$ X7 @, b# g. p
himr 0x80040004 0x44' f3 x3 [. M# _8 x# [1 r* {& h
himr 0x80040005 0x55
' B" r% l' ?2 T0 ]  E& n! \/ Q! O( x$ D% [, D' E, y! i5 u
SN也是类似。
& b$ R/ Y& P, {) ]
5 d8 z/ d0 e5 L$ s" s现在主要是,谁告诉我们MAC和SN的地址?
) v& I/ p5 _* L$ G. S& `' i" N9 }) E$ A
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 n8 P+ j. G) [0 d$ U
一直想找到运程修改MAC和SN的办法,苦于无解啊
' k* U; M' P( p- _9 @* R+ h
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, J2 v1 c* g0 f) L4 N
% t# [* F! G! y3 }/ h3 D1 m& @修改的代码早有了。到今天不会编译。  w2 Q6 |0 y& V1 _' Q2 M
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' R; R! y$ O- `; ~. y
  2. #include <malloc.h>1 q" B8 H( Q3 s5 Y3 r9 O
  3. #include <sys/types.h>
    : E0 ]7 X" C4 f0 P" k, Q0 U
  4. #include <sys/stat.h>' e- X+ P* P, {3 A2 l- J
  5. #include <sys/ioctl.h>
    ! J; Z. E# H5 M' v. ~0 ^1 d$ D6 k6 j
  6. #include <stdio.h>
    : u1 J9 f' m2 {6 S+ k7 L
  7. #include <string.h>
    + d2 P; S. R0 W% V% k1 E" m9 a

  8. 3 Y" u9 c* @$ o  K
  9. typedef struct {
    / \/ w' h, y$ K; W: ?* ?
  10.         unsigned int        e2prom_cmd_sub_addr;
    * D, Y8 k2 r8 q6 m/ \; f, S
  11.         unsigned int        sub_addr_count;
    ' i/ j$ v$ w! [% _8 j
  12.         unsigned char*        e2prom_cmd_data;- w: B1 V  @, r0 V" m
  13.         unsigned int        data_count;
    ' f7 c: n2 a4 t4 T7 k5 [4 X
  14. } e2prom_s_cmd;
    1 _6 {* |+ |3 G/ E% y/ J

  15. 5 t' }1 m; P: h6 X' r: e# B
  16. #define E2PROM_CMD_READ 1
    2 x! u$ g7 L5 Q( q  X5 P. X
  17. #define E2PROM_CMD_WRITE 2% o- d9 @2 j3 F( T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' d# c' u- `+ ~$ U) f
  19. - o/ n2 x8 J$ N& x' ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 J4 Q  {1 L; D; S6 s* F" S
  21. {
    ; B! M) \$ O" o. }
  22.         int fd, ret;
    % }# G# P1 L8 i
  23.         e2prom_s_cmd arg;9 W2 r! v  Y) M$ s
  24.         unsigned char buf[0x18];
    # g# a& k; m2 g

  25. 9 j) E2 w5 B1 f5 N: ?/ c* [! G+ G
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 m1 \/ ?9 [5 M1 R
  27.         if (fd  < 0) {( g% u' X  A9 C; {( d3 {( I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 G1 ^1 |  M7 T
  29.                 return -1;; k( K5 M+ P% `) |: O7 ]
  30.         }# b2 W; F/ C& q
  31.         arg.sub_addr_count      = 2;
    + y8 F6 G4 _; F
  32.         arg.data_count          = 0x18;; \8 [, ^2 ~1 t/ {) w" F
  33.         arg.e2prom_cmd_sub_addr = 0x290;* d2 ^. T. y( w' [) T' y( P
  34.         arg.e2prom_cmd_data     = buf;6 T$ l' q0 o8 ]' B9 [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 j0 S3 c  o  l: y
  36.         if (ret != 0) {
    " v: E: h/ q. e3 K1 V2 S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);6 c- l) i' K% S8 I) i: x" T
  38.                 return -1;" o) ^: ^' {' q+ O$ h1 O
  39.         }
    - Y! M, g/ T% Y. f* q6 q* g
  40.         memcpy(mac, buf, 6);( a$ q/ {" C. [8 v+ W( L9 A
  41.         memcpy(stbid, &buf[6], 18);
    ' I# n* |& Q: k
  42.         stbid[18] = '\0';$ K2 L$ [2 h2 R' F

  43. ( L6 y$ \8 @) A8 v. A' {7 w
  44.         return 0;
    8 B" {! p: q( b/ g/ S) |
  45. }
    2 d# s6 l/ ^5 H( d
  46. * W5 ^" ~1 m- _" {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 L: h+ Z( f! H( z" _& m5 }8 R2 r
  48. {. D3 d5 h* [, r3 v
  49.         int fd, ret;/ g) w: ]) E4 P5 J( M6 a
  50.         e2prom_s_cmd arg;3 {" D7 I) \) L6 `$ i0 \3 ?* A
  51.         unsigned char buf[0x18];  [! l! C- s  m
  52. 7 e, t' W6 `) X
  53.         memcpy(buf, mac, 6);
    7 V3 k0 i! [' y. {! I) o( L
  54.         memcpy(&buf[6], stbid, 18);
    . u2 f$ e1 C: \2 O2 u6 }
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 i3 i+ O; X2 D
  56.         if (fd  < 0) {6 T1 b- R4 u; V; ^  f+ m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 @7 |+ T  v0 o; l9 P
  58.                 return -1;
    ! V4 j# D9 G% r9 q0 [3 B2 i* C
  59.         }2 O$ ^, Z$ P: K7 F: v+ c
  60.         arg.sub_addr_count      = 2;. e% N& |( c9 a! E  C* ~) t6 Z
  61.         arg.data_count          = 0x18;
    + M5 }5 ], _/ Q: u; a1 Q( D* p
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % S  F8 Q+ A5 P4 Z
  63.         arg.e2prom_cmd_data     = buf;
    7 `- P: p" R' Z! a. i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);1 v- T7 ^* R5 A/ |9 P% R+ L' B
  65.         if (ret != 0) {1 g& F4 G9 F1 R' K
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : e8 B& [7 x  s6 Z1 [# x; ~
  67.                 return -1;- \8 e  T! j, [* o) W( v) l" @
  68.         }: O. k$ R0 E" K* i
  69. 3 n. Y  b; h& [/ c5 d
  70.         return 0;3 h" l8 l+ K" T2 Z; j/ j
  71. }! R4 Q3 j. E+ U; z$ j

  72. & s9 {0 _( D9 l& r% I
  73. int main()
    5 W/ D4 b! A" E! \& ?/ O; R$ n
  74. {
    : }7 W0 P, D! N1 O$ z
  75.         char c;) s8 ?6 r' H1 Z) ]
  76.         int i, macs[6];
    , h/ ]! G& m. N6 ^) J  u# Z
  77.         unsigned char mac[6];0 a  _/ C% b) |: G
  78.         unsigned char stbid[256];
    4 y  y! A! j* o
  79. * H  }' U, U' m7 l5 U
  80.         if (readparam(mac, stbid) < 0)( W7 U0 j* }: o9 X
  81.                 return 1;5 R# u; E7 ]1 z/ C0 ~5 g5 a0 H

  82. : C  I. @5 C6 y+ n! E5 e: W
  83.         printf("Current parameters: \n");7 }- O0 B* h% x* [* B; b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! u4 A! P& x# I; M& l: z
  85.         printf("  STBID: %s\n", stbid);0 Y0 n. F3 i3 |7 q, v( I
  86.        
    $ n8 W5 n% h3 m6 e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. f4 h$ _8 [- I  {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 S7 Y$ Y+ X! r6 k/ O7 y
  89.                 printf("Input MAC error\n");
    2 N# ~: P4 t; T* f# w5 R, t
  90.                 return 1;  Y( v6 \* w2 I$ q
  91.         }
    * C' X( \! ?/ w- @# d6 A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  N0 j% [% \3 @  q( H  n
  93.         printf("\nPlease input new STBID: ");
    ! O( W+ \2 _7 o! p( `) h
  94.         scanf("%s", stbid);
    # r5 v$ Q( ~2 D( J
  95.         if (strlen(stbid) != 18) {
    + v* z: @' p# Y% d* ^
  96.                 printf("Invalid stbid\n");5 N6 ?1 o( @! T2 e- P- ?, a
  97.                 return 1;) P: X$ ^; r* o" {5 K& X& E6 X
  98.         }
    " G2 K6 [  Q2 L1 q
  99.         printf("\nNew parameters: \n");  d5 T# O: F6 k: O$ |' Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 t8 w8 I; s3 k5 k4 ~% z( g
  101.         printf("  STBID: %s\n", stbid);
    ' `) G& i2 q# z' q2 ]
  102. . O$ ?1 x  i- ?* ?+ h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    7 [, p$ h# R0 y7 Y+ k
  104.         for (;;) {
    2 J4 ]$ L1 A7 o4 J: ?
  105.                 c = getchar();( E7 u; j( N: f, m
  106.                 if (c == 'y' || c == 'Y')
    ! t, p2 w! [9 ]6 M5 {- J
  107.                         break;& e' H, F3 W; R, `" I
  108.                 if (c == 'n' || c == 'N') {
    " j) N. K0 M3 r3 |' _
  109.                         printf("\nAborted.\n");
    ; k% q6 }" {/ K$ W. @4 F
  110.                         return 1;
    7 f( }2 z& G( a( v) Z  L/ k
  111.                 }
    8 _8 `# m) g5 o; r- w; o
  112.         }( S3 p+ \- C5 ^6 i/ i. g: d; T
  113.         if (writeparam(mac, stbid) == 0)
    * B7 P5 x5 M# H* B% t9 M
  114.                 printf("Parameters changed.\n");
    7 @' j; s* ^; N" P+ M( T: M7 R1 Z' s
  115. * g1 M- c8 j; o  O4 I. c
  116.         return 0;
      z9 K) R0 B% t, `
  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
( H! D  I7 j) S在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 l% A, d  e+ Q) C( }
你用的编译命令行格式是什么?/ m1 E. ]  K% l' I" i
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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