查看: 16689|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. L; i  g2 x: Y: [5 D% R6 l2 |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig. }7 ~& _2 D4 W5 J# ?" M/ z) I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 }; z9 C0 Y8 b7 x" j
usage: himr <address> <value>. sample: himr 0x80040000 0x0. Z- A5 G1 ?9 W: ^! z
& @, |. P3 [( V. ~

1 k# g. {4 C0 K. s/ e: ^不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% X! N2 E+ f' Q; z3 O+ U
. Z/ L& m5 d% k  g0 e) l
补充内容 (2012-3-8 09:42):
, M: ]5 s# R: u' t. F" @http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
& {' @0 B7 T5 R" f这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。: P9 i* c- o5 {% r: o1 J" l5 ^: \
$ |3 f. d) ^6 G, Z/ l1 \
himr <address> <value>. sample: himr 0x80040000 0x0/ T/ y! d! s, o$ a
8 _  k' z3 a3 _
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( B8 l# c  c' h) }/ v
himr 0x80040000 0x00
* D; W/ [4 F/ H8 T8 U+ y) a- nhimr 0x80040001 0x118 {" _8 _. S3 d( G8 Y
himr 0x80040002 0x22
3 B0 p/ G) H+ d8 q/ v; dhimr 0x80040003 0x33
/ S- C% B, N7 J, W# c+ J& s2 b# Ohimr 0x80040004 0x44
( i9 g) @1 R% I/ u, u9 X$ Zhimr 0x80040005 0x55
3 m  A& q- s! S/ w: Z
4 _# M. X4 ~% K% ]' S5 N4 VSN也是类似。+ f6 |7 y/ l/ S
' I( J; W+ ], i  b: S3 ?* f' d1 _% p
现在主要是,谁告诉我们MAC和SN的地址?: N3 a3 l/ j& _/ A; L/ W4 E: E
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 ~! [9 G# K  U. h+ {一直想找到运程修改MAC和SN的办法,苦于无解啊
7 T5 i/ f$ ?$ V
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 m" T( ]/ y" ~7 V2 D- @' u! N$ i2 C7 S
修改的代码早有了。到今天不会编译。
( w' b9 H" e6 \; G4 }9 q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' B' m( ~( ]2 H- I) z& k% M
  2. #include <malloc.h>6 `& B/ a$ t7 [; _) F0 I
  3. #include <sys/types.h>" ~# y& P+ j6 w# @
  4. #include <sys/stat.h>
    , M5 F" i$ f) H# f) T; r6 D
  5. #include <sys/ioctl.h>
    7 W" r! x% K+ U  E: k- v
  6. #include <stdio.h>9 @. l+ H# s* T* p" n7 K5 g. ]5 q
  7. #include <string.h>
    ; c9 z2 W: I: o8 G. p! H1 [6 O
  8.   h# Q* D; b7 k$ v/ X$ D$ X, r
  9. typedef struct {7 M. b7 i* x& l
  10.         unsigned int        e2prom_cmd_sub_addr;% D/ _  U: W* j; \- J' T2 F
  11.         unsigned int        sub_addr_count;
    4 Q: u# Z) |* N% X. H2 m8 K
  12.         unsigned char*        e2prom_cmd_data;3 z) v0 p  w, c9 A) |7 d" I$ u
  13.         unsigned int        data_count;
    ( L4 C/ v$ i1 J$ X  D- \" H4 c/ |2 o
  14. } e2prom_s_cmd;
    # |. S+ V2 S2 C+ D

  15. 1 I* T8 v! \3 z9 P
  16. #define E2PROM_CMD_READ 19 {7 u3 a. R- j% S7 v, B
  17. #define E2PROM_CMD_WRITE 2
      j1 d+ t$ I9 p* }# b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      I3 Z: k+ y3 W& C1 h0 s$ {& e
  19. 4 s5 B2 A  K9 S7 E7 u  w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 z9 z& F' c4 g' e) O, M4 z  y
  21. {: E# Q7 j2 a' M7 L- a
  22.         int fd, ret;
    1 e3 b* y# T2 X+ P6 \
  23.         e2prom_s_cmd arg;
    ' U' H% n! c. d* \, R* |  u8 M% ]
  24.         unsigned char buf[0x18];' K9 g% l( z  @; S7 I5 ?

  25. / k: |  L+ H% F5 Z. D  t( m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      I+ n( i% I5 C3 T3 V
  27.         if (fd  < 0) {/ r" d" ~- U# |8 O) g, H. ~! m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + C& X9 @. L( ?  d
  29.                 return -1;& b+ c2 }# j+ C0 k7 _' _5 U
  30.         }! j5 P4 {! T7 n! r3 f$ @+ v$ Q
  31.         arg.sub_addr_count      = 2;. Z3 f" z/ g+ l
  32.         arg.data_count          = 0x18;9 B4 f$ ^; i, U0 |/ g
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 ]' v5 Y' G' o9 x4 i
  34.         arg.e2prom_cmd_data     = buf;
    ! R: q. Y: h% T" N8 y# @2 K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " e- H9 w5 f( M0 W, z9 C
  36.         if (ret != 0) {+ e6 C6 y! U- K3 z. T! v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- T! j6 s) z9 U  L9 O
  38.                 return -1;
    0 ?$ a9 _; R' n# z3 J# ?
  39.         }4 c/ j1 s! C, l: E/ n
  40.         memcpy(mac, buf, 6);2 t3 {# B' E; u. ]& c2 a2 G
  41.         memcpy(stbid, &buf[6], 18);0 Q9 ]% ^' C) _8 t$ u2 @/ {5 O4 Z, v
  42.         stbid[18] = '\0';
    6 u2 n' `) I" q0 E2 L  c, S
  43. 6 Q3 [6 F% q- b+ B8 B
  44.         return 0;
    1 d0 C3 t' I4 ^6 O  Y% N
  45. }
    1 s' F$ i" A- f1 M* s

  46. 0 A, ]! E  _0 z6 B- K. ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * |7 a( ]. w9 [: m6 F
  48. {( R+ M  m* m' {" S7 o2 @7 r+ y
  49.         int fd, ret;5 }1 B. {# j% |1 W! G
  50.         e2prom_s_cmd arg;1 F& f' P* X& Z1 @% z
  51.         unsigned char buf[0x18];! P: R; P1 R" f) L/ u. K

  52.   g; T8 Y1 [$ n& i: r8 D
  53.         memcpy(buf, mac, 6);
    ; {2 u. e* R: a4 C$ G
  54.         memcpy(&buf[6], stbid, 18);7 a: Z  F. m5 {2 J1 I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);. @8 o0 \% W. K& ]/ t
  56.         if (fd  < 0) {
    & A5 I& `' z, ?  Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # R' f. z5 ]  @0 W8 |- K. {, P
  58.                 return -1;7 N# f$ f+ w! N( Q* z( Z- b; b
  59.         }
    * ^# I% ?* y+ S) t  t2 B
  60.         arg.sub_addr_count      = 2;" ?1 A+ L' ]2 F
  61.         arg.data_count          = 0x18;0 ?. D* m% Y1 s6 A8 V
  62.         arg.e2prom_cmd_sub_addr = 0x290;' X' H) |  a1 Z0 j% Z* E; M
  63.         arg.e2prom_cmd_data     = buf;
    , G9 g  Q+ j  E. W: C, Z- k! l8 F
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 \' m2 e# {" M. L. p6 H9 ^
  65.         if (ret != 0) {  S% x; {3 E1 ^" l, o2 R* l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 _# g9 x3 k% W7 J4 a! u: G" Q' H
  67.                 return -1;
    # Y5 G# N$ n. u6 B5 p6 f6 b8 X; I
  68.         }$ P! x4 ~8 h$ Y- w* s& V
  69. 0 M5 A' C; }+ l. f! E/ D
  70.         return 0;" c6 o1 v" B3 g8 S& U$ m
  71. }
    ) d% o. K& @! F2 m

  72. 2 Y/ X' T8 r" F% o# \0 a
  73. int main()
    ' d  Q4 n! ~% t( S
  74. {
    8 w8 X  ], d3 [  H" ?# |( r
  75.         char c;
    / L. ]# o, J: |& Y0 \
  76.         int i, macs[6];: L! J. \/ `8 t. n
  77.         unsigned char mac[6];
    ' F& U2 o2 O% |* \6 c; _! J: s
  78.         unsigned char stbid[256];1 O+ e% x& J- Z( q0 l& q% U/ J
  79. , E- [% e# J+ g" H. P8 s( y4 a
  80.         if (readparam(mac, stbid) < 0)
    " C: O8 q1 ~- U9 `8 D
  81.                 return 1;( y7 M5 ~& m3 h
  82. 9 ^' T# l7 B0 m1 x* {$ b
  83.         printf("Current parameters: \n");1 w$ Z! z  M9 c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - ^1 L! m2 X# `6 x8 d
  85.         printf("  STBID: %s\n", stbid);* l& h0 W% `* ~- l
  86.        
    $ u, j6 s! ]# j7 m' ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 |9 x  J: l9 X$ i  I+ |2 b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 f* C& d6 b0 o8 l, S/ K
  89.                 printf("Input MAC error\n");
    : [7 T6 E6 K3 Z
  90.                 return 1;
    , W: T4 |( Y0 Z
  91.         }6 }5 A# O! }" s  T! J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) x3 ~, z1 v9 [2 W$ m
  93.         printf("\nPlease input new STBID: ");
    - d  z/ S5 M% x- |0 W1 {
  94.         scanf("%s", stbid);) G7 \8 z. C" S( {
  95.         if (strlen(stbid) != 18) {! A7 P4 _. i. D- m3 ~& ~/ U" f
  96.                 printf("Invalid stbid\n");
    , U9 K% U# a% V9 Y- ?
  97.                 return 1;
    5 u8 L: `0 O+ n7 A8 f2 F4 I* U4 \9 ?
  98.         }0 p* {: M+ T  Z# N% |% v
  99.         printf("\nNew parameters: \n");
    . u6 H8 m  v. s$ M$ O2 B
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " ]" A( X  d- ?  ~% E! D" @/ j
  101.         printf("  STBID: %s\n", stbid);/ w3 V  P3 }6 N* Q+ p. v) I9 t5 J9 P+ ]+ N

  102. ( P4 g3 Z) V7 L/ x! z
  103.         printf("\nDo you want to change paramemters? (y/N) ");  z3 w' i5 C4 r  C3 d4 r/ H
  104.         for (;;) {
    $ a" D0 T8 I' c  M+ e9 c5 ~
  105.                 c = getchar();
    2 ~! s3 `3 v9 M( ^% W
  106.                 if (c == 'y' || c == 'Y')- q/ A' C. S% `  @# W
  107.                         break;$ n* o. S4 f  i3 K( j3 \' c
  108.                 if (c == 'n' || c == 'N') {
    # y  b% l+ K1 K+ s& Y# @$ P
  109.                         printf("\nAborted.\n");
    ( y! p6 T/ ]+ ]$ A/ S8 Z: U/ m; \8 D
  110.                         return 1;
    7 A  y+ p, ~  ?* J! u0 J. [/ V; }6 z
  111.                 }
      B- Z, i7 p7 ~5 o9 T! p, v" e
  112.         }
    3 P+ m- [- ?. a8 n; z; L4 @4 G. u3 F
  113.         if (writeparam(mac, stbid) == 0) 5 u3 I$ A. a5 [: a! M, o+ o! q
  114.                 printf("Parameters changed.\n");
    - L4 r* i5 W; ?; n" W, f% l9 m
  115.   A6 O& e" g9 n& e$ z
  116.         return 0;
    $ H9 r4 W5 f5 h# L* D
  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
6 F- m5 c8 s: E) }4 d3 I1 \1 k在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 U! s$ h' ^9 A. J你用的编译命令行格式是什么?
2 A9 @+ H" A1 h, K" A
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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