查看: 16440|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, }+ m) Y1 r* a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 y/ N( ]2 i. n, T0 A5 T" p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" I$ r$ R% b' o( f6 I. }
usage: himr <address> <value>. sample: himr 0x80040000 0x0
+ o+ O: F; n; f) I" H. }0 e: z" x* Y% Q7 h+ T7 V

- x1 W- n9 u8 l# D# F' W不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?  W/ g' O& o7 |" m: Y
) x/ ^2 b/ P6 y# \$ o% X3 n
补充内容 (2012-3-8 09:42):; O0 o$ _( Y$ l% C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: ?/ k3 d3 N/ q6 O3 d这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- M) e8 d; c3 Y- W

: t  s) g" P  z8 \* thimr <address> <value>. sample: himr 0x80040000 0x0
' e- J1 x# J) }
; p* L2 z: a& a例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: R1 H" a% b" b" hhimr 0x80040000 0x00
+ k9 e' l  M: }himr 0x80040001 0x11
9 v9 A& h* N" f/ L6 xhimr 0x80040002 0x222 d/ N( q- Z! e4 R
himr 0x80040003 0x339 P2 o. K- O7 q9 f
himr 0x80040004 0x44
9 |2 [6 C  |7 w5 o/ U7 Y) N; yhimr 0x80040005 0x559 I  h$ ?& r7 E+ i0 K! e

( P. m2 V& p+ b% `" l3 ~- nSN也是类似。/ J1 r9 a) L6 |7 {
" b6 |- o+ K' G3 I
现在主要是,谁告诉我们MAC和SN的地址?
9 N3 t9 W; K! R# q! M6 L
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) ^1 N( f- `0 p' b: N
一直想找到运程修改MAC和SN的办法,苦于无解啊
3 [: [; _: ~1 u
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + S6 r- \. z" W6 [( G, c
  c" n5 x* e( b! C
修改的代码早有了。到今天不会编译。
# W0 G  }# ?7 p4 J& r* m需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
      R$ Y$ t) _2 j" b  y
  2. #include <malloc.h>
    * v; Z4 n/ ?) F
  3. #include <sys/types.h>
    5 d( K8 a  r: O$ W1 y+ @( w
  4. #include <sys/stat.h>; b2 C8 w3 w$ s- |8 [+ w& ^) O
  5. #include <sys/ioctl.h>
    # @: Y- f2 c0 ]! x& o2 h+ |
  6. #include <stdio.h>. y" x- T0 S" V: w% b/ U) G% U
  7. #include <string.h>1 {1 U6 w4 T6 h% Y

  8. ; Z& F. \5 V& a3 ]6 A* p4 p) Z! M
  9. typedef struct {. P2 O4 w' v; x* \% p( c
  10.         unsigned int        e2prom_cmd_sub_addr;( Z1 O' L5 I& N5 U8 Z* s
  11.         unsigned int        sub_addr_count;2 K, k1 o4 Z* o9 s
  12.         unsigned char*        e2prom_cmd_data;/ t2 r/ E1 K2 t5 S9 f. j& I
  13.         unsigned int        data_count;
    - v' ?7 ^8 P, ~: L
  14. } e2prom_s_cmd;
    # }! N9 M( b2 U( u" r7 @

  15. " Q+ W# u( q( B$ m1 O: E8 A4 j
  16. #define E2PROM_CMD_READ 18 u& Z' _7 w+ @  Q+ z
  17. #define E2PROM_CMD_WRITE 2
    ; ~. J6 ^+ E" Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 y7 @0 S& x" P
  19. 6 d7 ^. F4 [$ e% J# c7 g! T
  20. static int readparam(unsigned char *mac, unsigned char *stbid)/ E1 H8 \- G" y" k/ j% R% v7 m
  21. {
    3 g* X' V5 |. }0 Y
  22.         int fd, ret;1 {1 ]1 ]7 K& E1 l" [5 e9 p
  23.         e2prom_s_cmd arg;
    3 A+ c. e9 O2 E8 h5 C
  24.         unsigned char buf[0x18];; G2 i) u$ j6 W0 J/ e

  25. 7 t. F7 P& |% q8 o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 F) o: b5 x3 m! s1 H
  27.         if (fd  < 0) {
    6 p$ b/ S# ~8 C3 e- \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 |. ~5 B; |/ P3 G5 z4 {3 \
  29.                 return -1;
    ( t/ q0 L3 O" c! C
  30.         }
    ! @& Q% Y2 O8 V" a/ Y
  31.         arg.sub_addr_count      = 2;
    ' @  w( e+ ?8 A& x* O, R5 f+ C+ j
  32.         arg.data_count          = 0x18;0 `& X) N* a. u
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 q# p/ x9 M- B3 P, r* A: [! d
  34.         arg.e2prom_cmd_data     = buf;
    8 Z1 o) T* Z% ?+ _: ~
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 C& _6 a0 E/ j- T& |8 J& h
  36.         if (ret != 0) {
    0 a& _* j/ ]0 r7 G2 o( [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; H3 J% y  B% S
  38.                 return -1;4 w# K' N$ G2 Y2 S0 I
  39.         }* o/ i* z9 x( U) [  m/ X
  40.         memcpy(mac, buf, 6);( v0 H& U# \, o& ^$ D0 X$ W
  41.         memcpy(stbid, &buf[6], 18);
    1 S# K6 K( v: `4 U
  42.         stbid[18] = '\0';* L! S' T; c% ]/ T' E! \& {

  43. + j/ U! s2 i! n" H3 G8 J: o2 W
  44.         return 0;+ V3 d- ]0 r: y7 P
  45. }
    ' Z- Q8 }& N4 {9 }3 P9 v
  46. & G( P7 T3 ]/ C. P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)( Y5 {- y( V8 R- g  O3 b! O9 r) Y
  48. {. D: w' w  u1 t% ?" Y
  49.         int fd, ret;! \9 b- g! V; `% R
  50.         e2prom_s_cmd arg;
    % {6 \- W* B: O+ b* Q0 l: _. Q
  51.         unsigned char buf[0x18];7 M' q+ L+ W1 X7 ]5 y% u
  52. 8 l& c- L+ w* M0 T- b
  53.         memcpy(buf, mac, 6);% I/ L) N: _" ?7 D! l+ O9 y
  54.         memcpy(&buf[6], stbid, 18);
    # T* [& e$ ]1 U/ F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      k! @0 _0 H, J/ y5 s/ ]1 ?
  56.         if (fd  < 0) {
    / P6 M( d; @' ?4 ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 v  W( n8 r9 w6 b
  58.                 return -1;% o* T; ^) d1 V: Z- f
  59.         }! f7 ^9 p( m* i9 x+ j9 s- F6 a8 S
  60.         arg.sub_addr_count      = 2;
    4 [7 M& y; T9 b: t, T# H  q
  61.         arg.data_count          = 0x18;
    - U9 h2 p- R0 ]) e
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ T# t& D3 e7 |! U' G
  63.         arg.e2prom_cmd_data     = buf;
    6 S' p6 |2 j3 r+ M2 a" I/ K' h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 o$ a" ?; R6 r% R9 I* |
  65.         if (ret != 0) {- ]& |/ `) i. u; Q+ K) Z* O5 @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! H! L- w4 ]" d+ C  u& {" p7 @, |0 d
  67.                 return -1;4 U2 v/ d3 f& b
  68.         }# f( n2 P+ B7 V! \) n; J) c7 S

  69. 3 N# P' S: E9 U. Q- J' T
  70.         return 0;5 [- `- w. o. }4 Z4 J
  71. }) H& h, w; T) D1 f; [% y, O# F

  72. 4 b. u: \/ a3 P* T
  73. int main()7 r2 ]( R1 \3 S* @0 w
  74. {0 B+ S  I( C! Z" m
  75.         char c;
    " d4 p- N- e2 Q4 H4 Y# o
  76.         int i, macs[6];: ~0 N# C) Q1 R6 G2 ?0 _
  77.         unsigned char mac[6];
    . x- t" P5 |4 k2 W0 @3 z1 \! D
  78.         unsigned char stbid[256];3 b& V% c$ m1 e, q% x8 X' u: s, F

  79. . S% T2 k/ h, a6 d$ v' j1 r
  80.         if (readparam(mac, stbid) < 0)7 @" [4 ?8 l8 t0 F! C4 C0 N
  81.                 return 1;5 T$ h9 o0 N% Z
  82. , ~- ~7 u% W( y0 y: ~4 h
  83.         printf("Current parameters: \n");' Y0 w; k9 Y9 P. X# J9 l
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 J1 l9 ^3 _9 S' i" N: p+ c
  85.         printf("  STBID: %s\n", stbid);  e  b5 N+ A8 V, \8 L
  86.         ; Q- \% f5 v% {1 x7 Z" {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, A5 G7 q6 l- {( ]2 v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " P3 W3 E. D2 w' v. |5 o
  89.                 printf("Input MAC error\n");
    1 }# Y' K2 C7 Q! I3 _% n
  90.                 return 1;
    " _- A% a+ c4 n' D& {& b. j6 ~
  91.         }
    9 C9 }$ _/ n2 x5 I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " f, g# k- S# j& X  m
  93.         printf("\nPlease input new STBID: ");8 E$ f1 e# O4 x
  94.         scanf("%s", stbid);
    4 |6 h/ |- {$ P
  95.         if (strlen(stbid) != 18) {
    9 V# c# `5 B1 q) l& X
  96.                 printf("Invalid stbid\n");
    ) }6 p% e+ [# ~7 i& j# m
  97.                 return 1;
    3 P3 p- ^9 ]/ @; K9 B
  98.         }& _/ y6 n$ M. `% |2 o* B4 R
  99.         printf("\nNew parameters: \n");
    7 ~+ o4 p% ~& e: n) i3 ?/ v8 l$ U7 a4 Z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 v& G$ Z( l) Z, w
  101.         printf("  STBID: %s\n", stbid);
    : V+ l( u. y4 k
  102. ; g, s) S7 \, t! W8 F2 @* D
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 O1 X, v; }$ Q
  104.         for (;;) {
    8 d. [- k' `, R9 [* o
  105.                 c = getchar();: \" E% f; Q, X0 U! b% m
  106.                 if (c == 'y' || c == 'Y')
    ; A6 B: O% q0 \9 t9 N
  107.                         break;
    " H9 W4 P4 A  o/ b* t( S0 \9 X
  108.                 if (c == 'n' || c == 'N') {5 ?" L! K9 L" [: P2 ]  I3 O
  109.                         printf("\nAborted.\n");
    % n" d/ y( y8 a* D, ?- W3 T5 q
  110.                         return 1;9 j) ~: g6 @6 y0 o1 B$ Q5 P% X
  111.                 }- e  g0 J; W9 V' w2 t
  112.         }
    0 q5 m, G& b/ T$ W
  113.         if (writeparam(mac, stbid) == 0) 3 ?& S! P. T6 }! z; ]0 t
  114.                 printf("Parameters changed.\n");3 Q" p1 z! X1 S/ X" {- i. b
  115. $ x- I7 x7 S1 O3 k8 z% G
  116.         return 0;
    2 Y8 r9 [- W5 A8 ^
  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
& n, D- j2 R' b7 M: t9 R3 |% u3 P在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ g" c5 ^3 D( u) }) ?8 `3 d+ l( d! D你用的编译命令行格式是什么?
/ K" E6 L  h5 O: f% r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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