查看: 16513|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    & @* I4 B4 g- j: t
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# c& I4 k* I! _4 ]" ]7 H
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; U, W- m% I! T: M1 ]! \" {# B2 Iusage: himr <address> <value>. sample: himr 0x80040000 0x03 @& T! _) {3 h1 u; D5 _& Z* T6 Y
9 \. M4 m2 s. K( f

0 x3 U% J% u& S: C% A4 n不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, f6 j& p$ U5 p& O& B" ]1 x+ d) e

- s4 P2 r. O' [- S5 c% j. h6 v补充内容 (2012-3-8 09:42):
  q, J8 N$ A8 v1 rhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 E& G3 ~* n" m3 E, G% ?
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。4 W- R& K. y7 I, e4 T
. `. x6 e* @3 x
himr <address> <value>. sample: himr 0x80040000 0x0
5 i2 c" y, E/ M# V( k& G
( L7 J: Y! Y  L; ^: U1 e8 j例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 ?2 W1 y, ^2 u" F8 |5 ^himr 0x80040000 0x00
7 `6 M0 V) u8 X3 Yhimr 0x80040001 0x11
. f  B  b4 _  @! ]8 R* a) Zhimr 0x80040002 0x22
! ]+ ~- {8 w$ O9 }0 `6 phimr 0x80040003 0x33; g2 J: f& r& i. j  w
himr 0x80040004 0x44
! t9 h  k9 o. j7 M: S4 ]himr 0x80040005 0x554 V6 B% I3 ?. y3 Z7 `7 @
' @9 x& x) Q5 ~* _) e  a) Y; \
SN也是类似。7 @& b" \& M0 s- K4 s$ y# m

; z& l% J3 D6 Q" g现在主要是,谁告诉我们MAC和SN的地址?
/ q, s; o* p& w3 Q' @' N$ j6 w3 n
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  S. H. J9 d! i  M0 r一直想找到运程修改MAC和SN的办法,苦于无解啊

$ A+ |' X# a: [- `3 d6 f4 v源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % ]+ c* K. Y& `. S: U) p

- D. T! k/ {5 W修改的代码早有了。到今天不会编译。  r; r; l9 E. n% M
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " k4 u6 U7 [2 u9 ~
  2. #include <malloc.h>5 J4 B( G) i7 \+ I( a, m9 w) Y
  3. #include <sys/types.h>
    5 r. \5 E$ M: O
  4. #include <sys/stat.h>$ q7 w) {9 \# k. s5 v6 Q: h' D  u; A
  5. #include <sys/ioctl.h>4 N) a$ n6 d: \7 K0 d
  6. #include <stdio.h>6 R8 |6 j8 q- x4 G6 E
  7. #include <string.h>' ?/ m' L  {6 Z: s  z
  8. ( i- x0 r. z( b1 k" |
  9. typedef struct {
    # B6 R2 M4 O9 D# j4 f5 X$ @
  10.         unsigned int        e2prom_cmd_sub_addr;2 r" A6 c/ b8 I
  11.         unsigned int        sub_addr_count;
    " }, m% m% g0 K
  12.         unsigned char*        e2prom_cmd_data;+ w; M* M$ n$ j, u: W2 O
  13.         unsigned int        data_count;
    ' e9 z" ?9 d1 C- D3 T$ w
  14. } e2prom_s_cmd;) y( |1 z/ C" L7 |, F! ]

  15. 0 Z" s7 g, X6 \. g# Y
  16. #define E2PROM_CMD_READ 1
    0 C, e8 W! F+ y/ o
  17. #define E2PROM_CMD_WRITE 22 R4 |/ H' n: ]9 }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( [6 w. q* R1 Y0 q" ~7 }

  19. ) m+ L! W2 L# o# m+ Y  I) ]- {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 `2 C8 ]. G) P+ i5 Y) [
  21. {
    4 F) ^8 o! S( y9 G* z# s
  22.         int fd, ret;
    0 M  n- a. n* [4 K
  23.         e2prom_s_cmd arg;3 l% ^& {- ^+ A. C! H/ D, @; U+ G/ b$ U
  24.         unsigned char buf[0x18];6 p' Q2 k6 ^" k/ w7 @
  25.   f; b& O# e# |7 I3 L
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , \1 o1 S) J3 l
  27.         if (fd  < 0) {
    % `6 R( h$ f. _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 k9 Y6 s( M) y8 R2 l
  29.                 return -1;2 B8 r5 ^$ Q3 d9 T: I$ }, r/ j0 x
  30.         }
    1 W! |: T4 Q  S8 U4 n0 o
  31.         arg.sub_addr_count      = 2;
    . C4 W9 j7 H4 W5 }
  32.         arg.data_count          = 0x18;) U% ^0 v4 y: z; o
  33.         arg.e2prom_cmd_sub_addr = 0x290;( y  q) y. B! J
  34.         arg.e2prom_cmd_data     = buf;3 U) ^# R/ B- p% j  w2 ]
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ l: U$ S( n! y% k( ~# I, x
  36.         if (ret != 0) {: ]7 W  ]: x' E+ v) e, O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ m. T$ X( F* r8 A
  38.                 return -1;. N, W, r" t1 x& ~
  39.         }% k, |; l0 T1 `( m4 W( f
  40.         memcpy(mac, buf, 6);5 N2 z: ~" N, r) u2 B) |
  41.         memcpy(stbid, &buf[6], 18);
    9 Z: Y- I8 a/ b. k: c
  42.         stbid[18] = '\0';
    4 h. b' H! y' n0 W
  43. / [+ o8 n5 M9 a1 Z. h
  44.         return 0;
    0 P* \, ]! u. r# X: c" d% g/ J
  45. }! {3 M; M& l4 ]! g/ J

  46. - B9 }7 Q" o3 |" N6 T: g/ m
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ I- v0 |6 S* c; m. _& J
  48. {' G# u* M" y/ |% ]5 ^, G) C& a6 e
  49.         int fd, ret;
    ! h# e8 F/ S7 v' a
  50.         e2prom_s_cmd arg;( P, c: g# \8 t+ d+ u
  51.         unsigned char buf[0x18];
      q. v$ |! i) M, n/ R
  52. ! d! F  Q" ~4 v4 E3 g3 n7 Q0 d
  53.         memcpy(buf, mac, 6);; J7 c3 h8 q2 d- B) o
  54.         memcpy(&buf[6], stbid, 18);
    " a9 y! Y) L2 U' D+ s
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- [  W( D  m( o7 m" N9 Y8 L
  56.         if (fd  < 0) {
    : [: |' D5 R6 g2 u7 J; u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 G8 z. j8 I* j2 w
  58.                 return -1;9 y6 C& m4 I! F2 b5 t
  59.         }
    : H1 K9 g' f, Z( _+ V' D
  60.         arg.sub_addr_count      = 2;/ |9 q  }+ i2 f& _. B# v( a8 G
  61.         arg.data_count          = 0x18;
    * O2 R: V+ A, Y* [1 ~7 _
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 Z. n8 z- Z6 }1 Y6 B  }, J$ R' i* G. N
  63.         arg.e2prom_cmd_data     = buf;) c- q) g+ [+ M- k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; w* K- T: O! H6 O/ S
  65.         if (ret != 0) {) q& D+ g+ _& D& S" G
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ' b9 a6 Y, J5 f$ G  v+ x; B: q
  67.                 return -1;
    - v" q; p) _5 Q
  68.         }
    # V& O' b% @' F8 d4 C5 |1 W/ [
  69. ) N4 ~+ ?2 u1 `& b/ A0 z+ r- P' i8 t
  70.         return 0;' X9 d8 Y1 C2 t* D2 ~4 x+ C$ A' g
  71. }, V! y: H# l% p+ |' P% @9 ?

  72. 0 V3 Q" k& C4 {! o& p; N9 |( N$ }
  73. int main()" C% L* O. s7 n- E& l, S0 |
  74. {0 p% L0 N7 O5 F8 M4 O3 q
  75.         char c;
    $ p% Y$ w$ Z0 Q  n" F; C
  76.         int i, macs[6];. H( h4 Z; B" J, M5 K7 f3 M
  77.         unsigned char mac[6];
    # y1 v7 q2 J, F( E  h7 g. A% O
  78.         unsigned char stbid[256];
    & M* [6 [  W+ _+ n5 x. r
  79. 2 B+ ]) j. N' Q. b; t4 e6 u/ Z
  80.         if (readparam(mac, stbid) < 0)& j6 {  H4 m+ n" H& Y2 F/ i: ^5 h
  81.                 return 1;
      k/ C5 ]7 k  t. B+ ]' \

  82. 6 C) `9 v- L. y
  83.         printf("Current parameters: \n");9 S4 i* L, S& Y2 R+ v- D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( a, L' H0 O3 A8 ^6 l) X& Q& m  S$ K
  85.         printf("  STBID: %s\n", stbid);) n: T  `# Z2 h. k  `
  86.         / ^2 g8 [8 X! p# r. J
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" I# S2 [! d. z. Y3 t: V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 m3 S& B9 C8 v
  89.                 printf("Input MAC error\n");0 |- v% I# f3 r% p' O
  90.                 return 1;
    0 ?6 M1 v  a2 j
  91.         }
    6 b5 W" @4 [0 i3 A3 c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 v! H: ]8 N! _2 E
  93.         printf("\nPlease input new STBID: ");
    ( u; O/ T# r2 v8 \
  94.         scanf("%s", stbid);
    3 I) r' b! n' e" Z3 a# m
  95.         if (strlen(stbid) != 18) {
    1 w4 `! |& M$ t$ \1 e  C" \; ~  ^/ X
  96.                 printf("Invalid stbid\n");
    1 Y! ~0 O- z% x% E' D- t0 b8 I
  97.                 return 1;
    6 Y. T7 Z$ r& l
  98.         }
    3 r5 }  x& D8 C: L
  99.         printf("\nNew parameters: \n");
    . O/ ?5 ~) w' s9 j9 c  i" W" ]
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      Y7 S* Z# y& m1 j8 j% B, z) k" C
  101.         printf("  STBID: %s\n", stbid);
    7 W: W5 l8 ^* ^* K5 ?; c# W* K1 X
  102. 2 `4 j# Y1 G: |8 ^. ?; D
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 U, k' C  A6 t, d. Q0 C1 B$ R
  104.         for (;;) {
    ' q" m" t2 L# L& S1 ~; y
  105.                 c = getchar();; m' @- P- G: F7 U
  106.                 if (c == 'y' || c == 'Y')) e  ^8 E( D" w5 z# y0 ^) L2 G
  107.                         break;
    + X* o$ R& p! `0 d" K
  108.                 if (c == 'n' || c == 'N') {
    1 P, F' x2 v+ }% }, F+ r' A
  109.                         printf("\nAborted.\n");* H4 v, c7 f8 j- `/ L# `
  110.                         return 1;4 X. b* a9 r+ A( g# j3 B( T7 q1 i* S
  111.                 }" M1 ~, A  n9 z8 F
  112.         }
    - c) I8 V$ O+ f1 q
  113.         if (writeparam(mac, stbid) == 0)
    $ |+ E: b- ~9 M' v: n
  114.                 printf("Parameters changed.\n");
    % ]+ t* o2 A* v6 P9 T" _& V" h* o

  115. 6 p# Q0 b1 F# @
  116.         return 0;! |' k# @- H$ Q' S  y6 T1 g7 a
  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
0 e8 c: U) e$ f+ f$ Q在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 r7 v1 a0 X% t  P
你用的编译命令行格式是什么?
$ D9 \# y! Q8 f, [1 _! v4 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客服返回顶部