查看: 16725|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 B/ F( E" e1 D2 |: {) t
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # [, _1 P$ X' e- Y  @! s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% H# Z5 z( c$ Eusage: himr <address> <value>. sample: himr 0x80040000 0x02 X& a, p, {! H( @: W( C
7 I! z" i5 k5 b. \4 M' G
$ L) c( P6 f9 L0 R2 _1 f
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# q) {; B! o  w4 J. `  v0 Q5 W' f
1 q9 M1 d" I0 E- Z% ^3 e补充内容 (2012-3-8 09:42):
0 S$ D4 w# _8 f, Uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; r. B- W4 ]/ Y; a4 m- D8 @这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。* @; _$ u' y' M

/ u4 {' v# \1 \5 r# Zhimr <address> <value>. sample: himr 0x80040000 0x00 F' I3 J5 S* r( V
# J" v5 y9 G  S& ^" {# r* V% T
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  k0 C  U- L0 z6 W, W( ohimr 0x80040000 0x00( ]; A0 M  ?1 c) C4 _' r
himr 0x80040001 0x11
$ M6 q; d+ r7 W" w+ U# j# Q# Shimr 0x80040002 0x227 d6 a2 x: k2 O- N
himr 0x80040003 0x33
. k4 {# f& C$ q2 {" Ihimr 0x80040004 0x443 X' @: i" ^( M5 L- X5 P8 h
himr 0x80040005 0x55! o) A- g1 s; s  \  S4 t
+ {  V4 ~4 ^! @
SN也是类似。
( G, T3 k2 j+ }$ b& x
& {0 v+ n5 O5 n+ f. c6 q+ M现在主要是,谁告诉我们MAC和SN的地址?
+ ?- J3 Q& `! N# N* A6 \
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 g# |1 u& h+ R0 T$ I( Z' [7 U一直想找到运程修改MAC和SN的办法,苦于无解啊
! N0 j" I7 A$ m, i' S' h- b
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . U8 x- O! j# Q! s- l
7 E! `1 E5 Q. Z# r* e7 Z( c
修改的代码早有了。到今天不会编译。5 H+ `+ o4 h. K3 i
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ ^5 [8 @. G" g/ k
  2. #include <malloc.h>4 W' e9 b+ `, b6 n# j% b
  3. #include <sys/types.h>" c( k; u4 v$ l( J
  4. #include <sys/stat.h>
    , E/ C9 b7 {. Z5 F
  5. #include <sys/ioctl.h>' n$ r- L# {9 r- [
  6. #include <stdio.h>) a3 N- z$ Y* d& ]/ l
  7. #include <string.h>
    % A/ e/ E2 G* G+ O! X  W4 v% L$ m

  8. 9 O6 I# ]6 Z- a- \! W
  9. typedef struct {' R: L0 ~/ N2 ?3 P/ ^
  10.         unsigned int        e2prom_cmd_sub_addr;. O, F7 b) {% }/ x* p
  11.         unsigned int        sub_addr_count;9 j# U( w, e: l- P4 E
  12.         unsigned char*        e2prom_cmd_data;
    ! i0 @* G1 B7 w# M, \
  13.         unsigned int        data_count;! q7 p& X% |1 d
  14. } e2prom_s_cmd;
    6 B# F3 L4 o! \7 @) e/ }% h

  15. 3 ]0 P. c" z0 I; w
  16. #define E2PROM_CMD_READ 1
    4 M1 k. L) |2 o4 O' m& Q/ N9 P
  17. #define E2PROM_CMD_WRITE 29 @4 t' J" I! [" t# G
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16") n' [- T# H& x/ Y& f0 [7 b. e+ f
  19. ( f+ U2 z/ N4 ~3 _% F5 a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" ~7 D1 i+ U: f7 N
  21. {
    ! I5 y  l& a' [4 B' Z7 R3 Q
  22.         int fd, ret;5 S: V% l, e' U1 N: R( A, K1 [
  23.         e2prom_s_cmd arg;
    " M6 O* A  Q+ ?  P, z8 F  m
  24.         unsigned char buf[0x18];
    ' \* }6 X  I0 R9 N
  25. + n' J: V) d. ^5 g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ Y$ \& l$ w" {5 U; ?( T
  27.         if (fd  < 0) {. v( Y' J& v$ J: P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  d8 d  K/ W6 [$ L
  29.                 return -1;
    0 R' U1 s9 F% a4 H
  30.         }
    ! E* i6 n! B% i
  31.         arg.sub_addr_count      = 2;  k" i4 D' t; [. N
  32.         arg.data_count          = 0x18;9 G5 [( c0 [* y* i4 a4 C; E$ v" {9 X
  33.         arg.e2prom_cmd_sub_addr = 0x290;" E. d2 ^$ q4 ~6 J/ }
  34.         arg.e2prom_cmd_data     = buf;1 c% W! T+ Y+ Q7 k: U
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / L0 y' D4 y  Q; r
  36.         if (ret != 0) {
    3 Z5 M! P" u: U' T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ A5 l8 W* ]! r9 b8 L) D
  38.                 return -1;  g! e9 \! G2 J% z. |0 W
  39.         }' F& B) A7 z. z7 G' L: s( Q+ K
  40.         memcpy(mac, buf, 6);
    ( ]; T. Z/ Q( Z1 b( u
  41.         memcpy(stbid, &buf[6], 18);
    3 v# K/ Q# q& Z, z
  42.         stbid[18] = '\0';
    " k* h- {# Y1 E4 F) d0 t5 A

  43. 1 C8 n2 c2 O3 F# R- Z' t
  44.         return 0;
    % b9 R$ x6 l; j0 x. P' M& S
  45. }
    : a. s- e8 l, Z! S% u! |
  46. / D$ L3 P: z0 e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( A9 R& L4 Z, M* e
  48. {
    ) O, M" @+ j3 J5 ^
  49.         int fd, ret;; U0 c# ~+ Z2 d7 K  k
  50.         e2prom_s_cmd arg;) u0 Y8 K5 x* e
  51.         unsigned char buf[0x18];& T1 f  `% b1 u& Y" s7 R

  52. . i# ?3 {9 j% ]/ _9 L
  53.         memcpy(buf, mac, 6);5 i/ K4 Z1 g) ]  q
  54.         memcpy(&buf[6], stbid, 18);4 r; o" w- U2 m: q2 }+ u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);/ x0 p7 l- I2 @7 a+ ?
  56.         if (fd  < 0) {1 d! K0 e0 J1 B4 Y+ O) M5 D6 o, N) L! ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # p! S" u, g) j" X) l6 r
  58.                 return -1;
    : r7 Z3 ^% a. O% ]$ Q- a# u) E% t  t4 I
  59.         }8 |( @- n. T6 ?4 K" E3 Y3 z+ P
  60.         arg.sub_addr_count      = 2;
    / J) c- P6 _! Q( v9 T: z1 A
  61.         arg.data_count          = 0x18;, Z- S+ j$ i/ f5 b
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / N4 u4 A! b! w
  63.         arg.e2prom_cmd_data     = buf;1 d' R" ~8 C; [+ Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 x( w9 G. u" ]  Z) Q
  65.         if (ret != 0) {
    9 X- r" M1 n" l4 O( m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; _- t- V, ?# P3 O
  67.                 return -1;9 j; Y+ N2 M/ g( v" ?- z) [# n
  68.         }
    7 C7 G" w  Z4 w! J& Y1 Z: s

  69. $ b3 E, Z/ X7 n( p' @
  70.         return 0;6 z! U% j! K* S1 r6 `) p
  71. }
    - K9 u# e% S% G- F/ o, w+ S

  72. * w- p! A9 t% r3 E; j
  73. int main()
    / P9 c, [6 R  D) I1 M+ \* l
  74. {* e2 d! ^5 {7 F$ D
  75.         char c;2 y( L+ T% G# N$ k8 I) H
  76.         int i, macs[6];
    7 `4 P7 ]- A6 \% ?! {& y9 I
  77.         unsigned char mac[6];
    1 m8 K. u0 S7 O0 K
  78.         unsigned char stbid[256];3 C  G5 W2 j5 h* Z( l, u

  79.   p9 ~$ V% b  ?' `- a- q- j
  80.         if (readparam(mac, stbid) < 0)
    8 _5 B, c) C4 v" F( M- n7 X
  81.                 return 1;: O" a5 x8 G3 H' _" Y

  82. & q5 V# P2 c( N- W2 L  r- Y1 A; G- N. F
  83.         printf("Current parameters: \n");; a4 E+ F1 z( L( B- ?5 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! Y$ Q# R! `& k) k* r; i1 e
  85.         printf("  STBID: %s\n", stbid);
    . b; @2 X6 h4 v$ M7 ?# ^
  86.         7 F3 O( y' m: ^( D/ b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % d- c  H. W1 n0 M3 z+ E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( S( a( I$ i" h+ O0 D1 d# o
  89.                 printf("Input MAC error\n");# [  g% g! \+ U3 _& i: m
  90.                 return 1;! J; G# k: ?$ _2 G$ c: C" E
  91.         }
    5 C7 e- \- u+ \- x& M$ d3 s% T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 @+ L0 _. G5 M; N
  93.         printf("\nPlease input new STBID: ");4 J  @; b4 P  m6 J# J; E
  94.         scanf("%s", stbid);& |8 n# y. n  \! l
  95.         if (strlen(stbid) != 18) {
    4 \" L8 Q. k4 m; ~
  96.                 printf("Invalid stbid\n");; {. P! ]! ?; _% B  u
  97.                 return 1;
    $ h# m2 n& {" h% }' X% H4 M
  98.         }& O+ A& b( J4 e8 Q4 ?
  99.         printf("\nNew parameters: \n");. g6 d+ h: l- O, H4 j+ E. P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! D* h$ F& }4 D/ F4 I9 \) ?
  101.         printf("  STBID: %s\n", stbid);# Q. a- D4 U1 v' C+ D, }2 H
  102. # _- n7 b0 Q  J; ]$ Z. u0 ^
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' b! p& T; U' j# L/ ?) A
  104.         for (;;) {$ |, m* J$ j2 |2 Y& n
  105.                 c = getchar();
    2 X$ j3 {; @( ~6 u% K2 J. O2 H0 E+ X
  106.                 if (c == 'y' || c == 'Y')
    % C" e; z( c# M6 n
  107.                         break;$ I  o" l: J6 T6 U8 w
  108.                 if (c == 'n' || c == 'N') {
    ! |! v8 {( M1 M/ Q6 o
  109.                         printf("\nAborted.\n");3 l  P- r( @5 a, V6 W
  110.                         return 1;- A. _5 j. I8 [1 \- ^% G
  111.                 }
    ! I' c1 H7 j( }5 B
  112.         }
    / [- u$ i# j" o& o( P
  113.         if (writeparam(mac, stbid) == 0) 1 q0 G* }1 M  K: f! D6 G+ g
  114.                 printf("Parameters changed.\n");
    ! o$ O6 B/ q9 s2 l- E" e; [
  115. 1 Y- v( G. R$ n+ v' S, J# C2 E
  116.         return 0;" Z1 F% V  J( e! c1 v6 O, m. _
  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 5 n; [; p. Y4 `3 k! h! i: F6 C
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( W. H. L% q$ S# @7 v; c7 O- Z
你用的编译命令行格式是什么?6 ?& x' g, H- P! g: h4 E$ x1 D
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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