查看: 17106|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 c( W' I( Q6 F0 b, o9 K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : }& Q% R; N& o$ P- U$ M- i7 e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ ?4 _- r. l8 M9 r! fusage: himr <address> <value>. sample: himr 0x80040000 0x0
6 Q4 O- T/ y, o2 ?+ v2 n$ Y" ^0 G' ?3 Z* [4 L" i# [, a

/ [. U# Y3 ^9 v7 _不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 @' h% M& T5 Y1 O$ g& g9 \! R/ s( L7 e6 f# \( _$ ?
补充内容 (2012-3-8 09:42):/ e0 c. E6 O% d6 X+ ]
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( z  O/ J# K! [1 N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
7 w9 _" M  O7 V1 c
. e3 _4 t' R6 J& h# E) Jhimr <address> <value>. sample: himr 0x80040000 0x0
. V, p1 c1 H; L/ @/ d4 x( {0 Q8 |* F8 \! O4 K$ \9 p2 Q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 Z5 k2 c9 z8 {
himr 0x80040000 0x009 W) g! ~4 {# j" z) D5 \" S
himr 0x80040001 0x11
1 X- m( v: c- s# o. j+ r9 e& @himr 0x80040002 0x22
% O- d( Z9 V8 Bhimr 0x80040003 0x33
, u. N( v5 H9 ~7 A  {. g+ ~himr 0x80040004 0x44
0 R9 F6 S( N. F1 g2 s* A. r( }himr 0x80040005 0x55
7 U" I) C7 ?% x$ \+ I7 v4 T, H' G# {9 c- {* I: V% j
SN也是类似。# y# k* }- \9 ~$ D8 C6 L

$ U, {2 p0 J# J4 @1 {0 }' N3 L  B现在主要是,谁告诉我们MAC和SN的地址?  K% \. U) G3 r' d! N  y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( F0 J7 d. M/ Z+ w/ o0 Q3 g一直想找到运程修改MAC和SN的办法,苦于无解啊
/ q5 B" U7 C  z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * x1 C: N* E2 S' |8 f

( J/ g. i9 w4 P& A修改的代码早有了。到今天不会编译。& i1 a& K2 z5 K; I: g
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' v; U2 K6 D; v2 ~% x! M
  2. #include <malloc.h>0 d2 S2 a. C; c- Q  ^
  3. #include <sys/types.h>
    / d& c6 ?% u% v8 V
  4. #include <sys/stat.h>
    : g, A4 J5 z3 N+ A  b
  5. #include <sys/ioctl.h>
    + D$ c" v2 P9 f1 p
  6. #include <stdio.h>! r2 p5 U$ `, Y/ R$ o1 L
  7. #include <string.h>
    8 h- Z- u: s8 i# {

  8. 8 U0 G. S1 N! K' B2 F, }
  9. typedef struct {
    5 N8 A7 O5 _$ |) z1 x9 R" ?
  10.         unsigned int        e2prom_cmd_sub_addr;% z& b% y% m1 r: `& J1 k& Y6 v. h
  11.         unsigned int        sub_addr_count;
    # i. y! p: T( I
  12.         unsigned char*        e2prom_cmd_data;
    ) u( R, K: q0 }0 f2 _
  13.         unsigned int        data_count;
    . Y0 [% w* ]- p8 R. e
  14. } e2prom_s_cmd;
    8 O4 U- c/ b0 ~5 X  e$ y& x- p1 u

  15. * x1 f  I2 j0 n/ V3 ~! G# v+ {+ j0 C
  16. #define E2PROM_CMD_READ 1
    " u3 o8 v* E- n% v2 K
  17. #define E2PROM_CMD_WRITE 24 u9 R6 h. h, B1 x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 m2 ?; F4 Z( O% L

  19. 4 q1 {+ r+ v9 j& U; O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , j8 u8 E3 p, ?+ q- Y1 u6 V
  21. {$ P8 W3 O% f6 y0 L/ j5 Q
  22.         int fd, ret;0 s! f% s4 |( n( O4 W5 ^
  23.         e2prom_s_cmd arg;
    ) Y0 F( m, I( Z. B+ o4 Q
  24.         unsigned char buf[0x18];5 f3 U) e+ P% j6 ~1 B. [/ w8 }
  25. : m0 l2 N' L# ~  Z+ q$ M; M
  26.         fd = open(E2PROM_DEVICE, O_RDWR);2 w7 u% L0 m: X" U$ n, ~, T7 I
  27.         if (fd  < 0) {
    " G, y8 f3 B. y- u$ W
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 F! h1 w/ d8 N+ o* g( R
  29.                 return -1;
    , x& S3 V4 x( p& P* f7 Y) @
  30.         }
    7 H; |& a$ Q+ M9 b2 G
  31.         arg.sub_addr_count      = 2;6 p  a  Z8 k' }6 K
  32.         arg.data_count          = 0x18;5 k1 }9 i2 S3 H- o' a, B
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 r; U3 j! X6 @) n8 W0 b) q
  34.         arg.e2prom_cmd_data     = buf;5 D- v9 U; p# @/ r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    5 V9 k: x* g) z, I- B+ L
  36.         if (ret != 0) {
    . F3 w9 }  R' U  B2 n* R; u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 w7 A( ^; r* B# O
  38.                 return -1;
    : q" c4 v  \& \- G
  39.         }5 q, y/ A6 ]+ g1 p) A; S2 H9 S! |" p
  40.         memcpy(mac, buf, 6);) \) h2 z7 D2 W: v5 ~' L' ?
  41.         memcpy(stbid, &buf[6], 18);
    0 }, W8 i9 Y* z9 b9 e
  42.         stbid[18] = '\0';+ v' q# `+ q: V1 s$ ^/ Y/ m
  43. 0 D( h/ y1 z7 C9 _
  44.         return 0;0 E' K- G1 R! `* ~
  45. }3 X6 N# ^, K  Y5 o) i

  46. 9 s' X+ ^/ U7 Y8 t7 m" A$ Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    " {, g- _  O8 G  J5 W4 B0 v
  48. {
    / n3 S0 Y5 s$ K" G) @$ x  d- m
  49.         int fd, ret;
    3 M, t+ w3 r9 X0 S
  50.         e2prom_s_cmd arg;; o# }5 V! I0 t# q" K6 ?
  51.         unsigned char buf[0x18];
    $ F3 e, |0 U3 u% {4 A, C+ L$ c

  52. 8 j7 l; N$ O+ _5 r; X2 ~) ?
  53.         memcpy(buf, mac, 6);' M' K  |. f: c1 x- Z$ A
  54.         memcpy(&buf[6], stbid, 18);
    - O' `- C* ^: @: c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& x# T9 A' a3 K! {
  56.         if (fd  < 0) {  Q- Y- U1 j" q* y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 c1 y! B% v( z+ u0 P; m% \: v& X
  58.                 return -1;
    8 k# K  I4 ^/ ?: y7 Y
  59.         }0 `( D3 b' i' Q! L. f3 ?# w. A
  60.         arg.sub_addr_count      = 2;
    8 @8 S/ y" h( q% V& u; w
  61.         arg.data_count          = 0x18;0 q" E) H' f# f, W
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , s8 M: z9 |7 Z0 v8 V' z
  63.         arg.e2prom_cmd_data     = buf;. |, }. }3 S# D0 \' L2 ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);8 G* b8 ^5 j  _) q
  65.         if (ret != 0) {
    ; T" x5 R5 l4 E) i, v% C  P
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 S5 ~, a3 j! E1 M, h
  67.                 return -1;* t7 h5 ^8 d8 R) g: C
  68.         }
    - m5 Q9 }! r9 m! B2 S  t! N

  69. ; K& ^# O6 J, w
  70.         return 0;
    3 ~# E1 {: L2 C" D3 k
  71. }& t# Q# x  I+ E3 ]: C
  72. 8 w# M* Z1 o- d, _
  73. int main(), A0 a3 S' `) F- j  |& A7 L
  74. {8 |) }- T. Z7 p
  75.         char c;
    : q! l/ ~0 }, \2 w
  76.         int i, macs[6];
      I# l5 G7 Z. E" _
  77.         unsigned char mac[6];
    6 }$ b# P7 B8 \' A
  78.         unsigned char stbid[256];! p3 Q; c3 Z, U$ l+ q) p) j0 i

  79. ; f! _/ P5 n8 T' X9 V8 u" a
  80.         if (readparam(mac, stbid) < 0)
    $ x8 m8 T3 {' [
  81.                 return 1;8 z4 K' T* U" s( g
  82. : P* X$ y. B( A
  83.         printf("Current parameters: \n");
    6 w; V& D  o" n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : R% A* f1 s7 ?# ]: \
  85.         printf("  STBID: %s\n", stbid);
    , g8 N& k) O* A2 G$ w2 v1 O, J( A
  86.         ; p' [4 [, p' H+ L' Z7 e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . B$ @0 O% @# K- q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - U" q& c, [, _; S, ]3 n
  89.                 printf("Input MAC error\n");
    ( E9 p- u. `2 ^
  90.                 return 1;- M* T3 g8 _7 J2 g6 H  r7 A
  91.         }
    4 ^3 O) L! n/ B1 i- C/ Y  b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( i; y9 t; o7 R; ^# o! }
  93.         printf("\nPlease input new STBID: ");
    0 G/ y9 o( n6 Y, n6 g$ l) W
  94.         scanf("%s", stbid);, T0 H0 M) `! d) M; |
  95.         if (strlen(stbid) != 18) {
    ' Y6 U) O2 Q' E) |! ]( j
  96.                 printf("Invalid stbid\n");
    # Q" D8 \7 V- ^3 u) E
  97.                 return 1;9 l& b* [! q' @) V
  98.         }6 I. O, }+ ]7 s1 M/ t- G5 z$ @+ s
  99.         printf("\nNew parameters: \n");
    0 e% b6 `8 T+ M+ C0 L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; b1 `& B: X- ?$ E; r7 @
  101.         printf("  STBID: %s\n", stbid);
    7 C3 j* ~4 O2 f/ o' ?* C( }! q: {
  102. 8 v1 R$ W1 z1 @$ m* U( G; }  r
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 |  G: z$ S& U9 J, G
  104.         for (;;) {
    4 f* h2 s8 k7 z" ^. T4 U8 K
  105.                 c = getchar();
    & Q2 {) ]0 T  K% u1 i, U  {
  106.                 if (c == 'y' || c == 'Y')
    7 |2 H, k) x/ V. x* A. M1 u6 ]! f
  107.                         break;
    7 N( Q( S! }3 F2 [( O
  108.                 if (c == 'n' || c == 'N') {
    6 K* F- |7 o5 h* K
  109.                         printf("\nAborted.\n");3 s4 W6 W) e7 p% X; A& q1 c
  110.                         return 1;$ c; ?* F+ d2 }. J3 J+ X& U
  111.                 }
    ! I$ l1 N+ G5 ]/ F
  112.         }: M" |3 Z# c. s0 I$ D- y  Y
  113.         if (writeparam(mac, stbid) == 0) 3 d' I2 w5 |8 q# c1 p: W
  114.                 printf("Parameters changed.\n");
    3 c6 o7 ?/ h  f& R
  115. 5 p  P5 w* d/ j/ T. ~
  116.         return 0;
    % G- J' m4 b8 O2 N2 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
/ a8 j7 |* Y/ p# H在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; X: `6 U4 N8 B% R* S' d( M3 Q8 ?! Q
你用的编译命令行格式是什么?: z' ~" W% M( `2 s# b
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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