查看: 16534|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 n) y. E3 E7 h+ o0 P
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig8 ?8 |+ U! y; ~1 n
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 g: f7 a0 U5 Q8 ]& D2 y
usage: himr <address> <value>. sample: himr 0x80040000 0x0& a, t4 x8 x( q# h. G, C  @
( @1 ^8 Q7 i' \% M
! _: ?7 T5 \) k( v
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* d' d6 X( o0 r( S$ l* X* ?8 G
4 k6 \+ p0 P! f' H7 X补充内容 (2012-3-8 09:42):
, s& a6 Z9 o& e$ D9 {http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! ]- l# D  \: K. P* T这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
2 K- ?) h: A9 U, B- ?. E
6 r  T4 x6 P# h3 w3 [# `5 }himr <address> <value>. sample: himr 0x80040000 0x0# {( }7 x4 |$ ?, ^6 n: `6 r- U

, }* z- w/ w/ e1 l4 _8 X# E例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。4 b1 l: G% k3 d% o* B
himr 0x80040000 0x00: w/ Z6 t$ o3 l" u
himr 0x80040001 0x115 r5 R3 J; b$ M* a
himr 0x80040002 0x22
$ [' H7 n  }8 G0 Q# Uhimr 0x80040003 0x337 d+ X, z: ^, n9 S! x3 Z# B
himr 0x80040004 0x44
9 F- m7 {- F: P. Bhimr 0x80040005 0x553 X- u/ i% i3 n7 X0 M0 ~5 h, ]% G

; b, i5 u/ w% _- p' n* SSN也是类似。
* m6 ?3 ]( @; D8 }1 A1 h& n) l$ [4 D2 {& t3 ~) u$ K' v1 j
现在主要是,谁告诉我们MAC和SN的地址?
, Y: g1 L% s) X' y8 M
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   B1 B/ I. E: L$ o- G
一直想找到运程修改MAC和SN的办法,苦于无解啊

* `8 g1 W7 a- y9 @: j: w3 b源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 X8 O. b/ k" \; h8 Y6 x- R* h

7 A1 r" J  s" A+ h8 }' `, N修改的代码早有了。到今天不会编译。1 V) N( T3 }% x
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: K( o3 X4 g3 T2 p
  2. #include <malloc.h>8 H& Y6 q) S: t
  3. #include <sys/types.h>
    + b' m4 F9 U6 R5 L% K. y7 k
  4. #include <sys/stat.h>
    & G' y- ~0 p& o1 o) q
  5. #include <sys/ioctl.h>& [% d. [0 v+ T( D1 W; e
  6. #include <stdio.h>
    6 {7 l: _# g& o4 z9 F
  7. #include <string.h>! ?0 W8 l- ]: A' ~/ d! X
  8. 6 Y  |% s; I+ ]
  9. typedef struct {
    3 S1 B/ Z! c) C: T4 ?! {. U
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 s: {( d* v1 H0 ~, k/ C
  11.         unsigned int        sub_addr_count;5 G7 D' o  A1 F8 O
  12.         unsigned char*        e2prom_cmd_data;
    , n- D! T7 ]+ Q- _. ^$ C
  13.         unsigned int        data_count;
    8 \# d+ a. l6 f* ~
  14. } e2prom_s_cmd;
    8 k: g% r5 g, i- O; _" Z$ O  x
  15. 5 M; F% B8 B* ]
  16. #define E2PROM_CMD_READ 10 O8 w3 _7 S  f
  17. #define E2PROM_CMD_WRITE 2
    " k9 t3 E0 l; @2 O! ?( C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ P/ Q2 P+ y% [2 d/ n( a$ D
  19. : \% m# y- v- I6 I2 ]% B
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 m8 C- u: L8 O! x5 x0 {" S* R
  21. {( k! B/ H  `. y  b; n" D
  22.         int fd, ret;1 O9 P+ O; E# j/ R
  23.         e2prom_s_cmd arg;
    / @- k) V5 M' j4 P6 e8 o  |# W& t: ]
  24.         unsigned char buf[0x18];
    / Y: N- e7 A9 O5 i9 V) b9 i

  25. / k" a; k" |0 L0 }8 E+ d* `8 M* Y; o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * V% `/ b1 n3 I2 X
  27.         if (fd  < 0) {
    - u. U! e# ]: u: C& ~# `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 @& Z' J$ Y' C1 @
  29.                 return -1;
    + f+ k" ~- G0 G# w* c/ O% ?
  30.         }& m) o4 m* _4 N* m) Y
  31.         arg.sub_addr_count      = 2;. f7 F. M" N4 _6 G, X7 K
  32.         arg.data_count          = 0x18;) l; E$ D4 s8 m. M" q# U4 `! A
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 }& Y* j  C4 a
  34.         arg.e2prom_cmd_data     = buf;
    ! h6 [4 y2 }' d) m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & y* R8 T$ a- @2 o
  36.         if (ret != 0) {+ A; [6 L* ~8 Q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 z; x0 l4 e; G3 z: j" Z
  38.                 return -1;
    $ {; e5 ?) ?5 }: g8 |( F. Y- b
  39.         }
    6 X' G' \* a/ V
  40.         memcpy(mac, buf, 6);
    , v/ R- q$ T7 A" v, f
  41.         memcpy(stbid, &buf[6], 18);! I2 ^% Q, w* u- j5 A2 `2 o
  42.         stbid[18] = '\0';( ]$ M5 C0 X" q5 n2 z
  43. : E5 f+ ?; n& ^1 J) S
  44.         return 0;3 v9 [- U4 b0 G1 r
  45. }
    & @2 @: z3 h0 m8 j2 U

  46. 7 B, C% f0 M4 t/ _
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - r1 `1 J0 j4 n4 ]
  48. {
    ; z  I9 l# p7 G) u2 ]3 ]
  49.         int fd, ret;. w# y& E7 A% j" i
  50.         e2prom_s_cmd arg;
    + F$ j6 W1 K+ \* P) p
  51.         unsigned char buf[0x18];
    8 S2 V3 T2 I; D* J+ T
  52. ( J- o) v) D2 P. {3 b
  53.         memcpy(buf, mac, 6);) P$ k3 R) Q4 M& Q: a
  54.         memcpy(&buf[6], stbid, 18);
    5 x( J. e, L! P( y) R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);/ [7 G  \6 B- n! q4 `$ \
  56.         if (fd  < 0) {! a% U: t, x6 Q. L, H- n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 c' L3 _* ]" k) [
  58.                 return -1;) F+ o" _! W& F
  59.         }! R6 S! P1 I; Z! S# {  f; a
  60.         arg.sub_addr_count      = 2;% o9 L1 E- l6 o7 O" Q1 W$ K
  61.         arg.data_count          = 0x18;7 W8 R5 A+ m, A1 i) I4 a3 J
  62.         arg.e2prom_cmd_sub_addr = 0x290;, Y3 a. C* q" ?: \$ z! a. E( l
  63.         arg.e2prom_cmd_data     = buf;
    / U% O& A* X! {& O0 Z4 B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 p8 Y1 J9 {8 ^
  65.         if (ret != 0) {8 _7 H6 k+ c$ b, [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* L  C1 h0 m% ]: M* Z7 b
  67.                 return -1;( ~* f' Y. _8 ~, o( G" J5 D& G
  68.         }
    % t& W, ~0 ]# ?/ V9 H: L; P: n

  69. ' d4 L% A' Z3 w8 o  p  O3 H
  70.         return 0;
    ! {9 t! [- j, Y
  71. }0 i2 T$ d, F- P/ ^

  72. * v/ U+ u0 J+ i9 Y- _, I9 r& |! u
  73. int main()2 O7 |  V9 H/ x) j: X7 ^  n# `
  74. {& i# r9 b0 L, d; i$ m) V% Y
  75.         char c;
      W. N0 J6 p" O
  76.         int i, macs[6];7 o! ], B- c( |7 G  N
  77.         unsigned char mac[6];/ v. g! Z3 D4 c+ h
  78.         unsigned char stbid[256];
    0 \+ }2 _8 i/ D2 Y. b2 m" H

  79. + ?. Y! b0 _* f+ Y9 H+ N7 r
  80.         if (readparam(mac, stbid) < 0)
    , v  o; i% `( O
  81.                 return 1;+ U% g/ c: ~5 O* ^* j
  82. 2 n2 {2 [2 l4 u! a. ~2 {" w
  83.         printf("Current parameters: \n");
    ) g; f$ i  I# p  G6 f5 a; ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- \, Q0 s9 i) ]! t
  85.         printf("  STBID: %s\n", stbid);
    : _7 d5 o% I1 B: C9 x8 q6 w8 I
  86.         3 T4 {) q+ ^$ i- b6 O6 q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 x4 E6 x& ?" }7 k$ z/ d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + l+ K: J; T: _5 a4 q
  89.                 printf("Input MAC error\n");
    " r- f' U" {) K0 `2 e% Y
  90.                 return 1;
    & d: ^5 s5 @  U. _  t& f5 e
  91.         }
    ! h8 I! P0 V" h3 Q2 {% ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 K- ]5 d; z+ F
  93.         printf("\nPlease input new STBID: ");9 U( S7 T7 n% j% I1 Z# ]5 ]
  94.         scanf("%s", stbid);* `/ R1 ?  d+ \- @
  95.         if (strlen(stbid) != 18) {- x) L1 H2 f2 |
  96.                 printf("Invalid stbid\n");& ]. [0 ?0 W# P" R8 u. G
  97.                 return 1;
    : P! I1 t* ]  g% S' C- x% K9 j4 G
  98.         }
    / P. x3 h7 m, a) A
  99.         printf("\nNew parameters: \n");) Z, W8 |/ H1 l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 Z6 c5 V$ k0 D
  101.         printf("  STBID: %s\n", stbid);: Y( m3 r( q6 J9 x( i( j
  102. : X7 |3 j1 Q2 A- c& W5 Z
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 ~# F6 U* [$ K
  104.         for (;;) {5 I+ }& j+ e( e% |* V8 e& V) M. X& k
  105.                 c = getchar();
    : k& R8 O- P' R; N+ {
  106.                 if (c == 'y' || c == 'Y')
    0 x3 N" ^8 D" j
  107.                         break;
    1 w7 N1 E/ o. L& [
  108.                 if (c == 'n' || c == 'N') {2 G$ }! \1 I( A7 Y( G6 V+ K. i
  109.                         printf("\nAborted.\n");
    9 Q0 R9 {: G1 }) }
  110.                         return 1;
    8 e9 Q+ F- O( N
  111.                 }
    % j7 F8 J0 M& V
  112.         }
    1 y" M( P# _4 }& }5 w+ E
  113.         if (writeparam(mac, stbid) == 0)
    ! P; ^6 X1 B" M
  114.                 printf("Parameters changed.\n");6 {/ H! a: h: Q6 @) j2 V6 C1 j5 m
  115. 6 P' i( K4 c% m, D5 P7 i' e
  116.         return 0;
    $ v/ T* h- X6 n) v/ _
  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 ; |# x/ R, J% @" a0 M. T
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ B- g! l  T3 K) R- T9 v
你用的编译命令行格式是什么?
+ e9 r; A9 E2 ~/ [: 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客服返回顶部