查看: 16666|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) f3 ?2 F  i( S" b% {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 W$ S4 l8 x  A' g- R- G8 @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:! Y% ?7 C7 w. @/ Q
usage: himr <address> <value>. sample: himr 0x80040000 0x08 d( w* ^+ Z' d1 \) G: ^

* u" E' l) F; s& I" B# U% U8 {! @, Y# r- l, e4 D6 F) R7 N6 t
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# V! A7 z  D" H

2 J- h1 ]+ I- u, O7 v4 A补充内容 (2012-3-8 09:42):7 i! F( c7 ]2 ^2 u/ B
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: O, ]- C2 t  \" |5 D0 X这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
" ]+ p( a2 r& l  m4 A- Y' n% _0 A6 ]# L* e7 G
himr <address> <value>. sample: himr 0x80040000 0x0& W0 `, U2 J% p3 ?+ k# l, I$ W

9 Q3 g$ K. M( W: i. I' m5 v例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ a8 K, F+ B& p5 Z1 p! E
himr 0x80040000 0x00
5 f) o% t; h0 O8 {7 nhimr 0x80040001 0x11- k+ ~2 c% Z% m+ ^$ C8 q; U
himr 0x80040002 0x22
/ u! |0 R; \2 Lhimr 0x80040003 0x33
1 O0 e+ z% H) H2 ]himr 0x80040004 0x44
2 B; _6 k9 X' Nhimr 0x80040005 0x55
6 |9 b/ M& q, e; P! c
* X" T* n# f3 }6 y5 kSN也是类似。/ t' }& m. m" I2 w
) T- [$ u' U) L# I$ C0 r8 ]
现在主要是,谁告诉我们MAC和SN的地址?) `6 [+ D! Y$ f- J1 E8 \
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 Z. y; s8 X; O  z: S一直想找到运程修改MAC和SN的办法,苦于无解啊
4 s/ O0 J# E- U+ c, F8 ^
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) d$ N( c; C$ Y( K, X: ?6 \7 n
2 I# O$ }( _' A修改的代码早有了。到今天不会编译。
; A# c- J9 q1 z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ j! J3 U4 x# I
  2. #include <malloc.h>
    2 v; A  D3 g* B  C. j
  3. #include <sys/types.h>: c1 R! Y% ]9 e& Q
  4. #include <sys/stat.h>
    & W! F) p7 l) o6 C! q& s( W* ?
  5. #include <sys/ioctl.h>
    3 Q+ _  y  A6 |" F  W
  6. #include <stdio.h>7 _7 o( [8 d5 k  i- }: s: Z8 L! D
  7. #include <string.h>. |7 C9 R( M5 L+ O4 F: l/ `" r

  8. 5 Z( g$ S* j7 w
  9. typedef struct {
    + u# h* {9 F& M. C7 h0 H" ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    , `4 @' ]$ q8 g- w/ o
  11.         unsigned int        sub_addr_count;& ]4 U4 y0 i2 _4 h' j! l
  12.         unsigned char*        e2prom_cmd_data;
    9 y5 b, F9 `4 n4 g8 L0 u) _
  13.         unsigned int        data_count;( [, ?4 a( I+ A# }
  14. } e2prom_s_cmd;
    & p0 M5 c% O/ }3 h

  15. 7 }- H6 f% L0 _9 z# z& V
  16. #define E2PROM_CMD_READ 1
    # M% o1 a; G$ p- I6 [* }3 G3 `) S
  17. #define E2PROM_CMD_WRITE 2
    ( H$ O$ k. v# U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", a! a0 |# |( S) U1 ?

  19. # B4 d# K* c; q3 ]+ L0 ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' j5 S' Z/ o* w# s# O& S) }) T
  21. {+ O* a* J/ q6 Q+ `  H6 B
  22.         int fd, ret;
    ; C) I. n* y2 ]! V
  23.         e2prom_s_cmd arg;
    * n; p/ b" i6 H/ Q, R
  24.         unsigned char buf[0x18];
    - l4 E( W* |- J
  25. ; B- X8 a6 Z& P- g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - t/ v" s5 R0 Z* [
  27.         if (fd  < 0) {
    9 K. s3 Q1 Y* m( T
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( c% w; S; A$ [: M
  29.                 return -1;
    0 x  L! f0 F! ]
  30.         }( @$ K  ]# W/ L+ Y; T5 s
  31.         arg.sub_addr_count      = 2;! U* A# j5 z+ V- F9 f: w9 }" j& m
  32.         arg.data_count          = 0x18;0 J8 ]+ S$ u/ }4 i5 x9 \$ k
  33.         arg.e2prom_cmd_sub_addr = 0x290;( F/ U5 z- q; S  V  N
  34.         arg.e2prom_cmd_data     = buf;
    ' m% E- Z! X! d* ]4 S6 R3 D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % ^8 f. p& w$ d* H$ @1 R" c% o- F
  36.         if (ret != 0) {
    $ ?  p+ u3 w! _' E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 A; ]4 B4 `- K7 ~. u
  38.                 return -1;
    3 J/ n6 l; A& i1 N, I
  39.         }: |; u7 D6 o2 I9 {5 ~: `
  40.         memcpy(mac, buf, 6);8 {! @; Z& l8 y' t& Z% s
  41.         memcpy(stbid, &buf[6], 18);9 q& N, g, t2 z# S# K
  42.         stbid[18] = '\0';
    $ p  a& w6 ?9 X* B5 W6 |. @
  43. 2 o2 V9 f  s, k; H4 _+ Y' M* p: T! U
  44.         return 0;
    ' {4 T: Q+ e* D9 J; r2 M, b
  45. }
    & @$ m; Q5 J% |1 T# B$ n; p

  46. 9 R8 n. r, y. G' I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 `- ?& X$ i3 o; ?  D  }
  48. {
    ! e4 x1 C2 Z2 o' V9 E: ^
  49.         int fd, ret;
    / j" {$ w" C0 l. w$ ?, t
  50.         e2prom_s_cmd arg;
    6 D! j% O* C+ y
  51.         unsigned char buf[0x18];% ]) D( z- y% v- x4 R8 Z
  52. - x2 m4 P  Q2 D
  53.         memcpy(buf, mac, 6);! b! m) ^0 \" `
  54.         memcpy(&buf[6], stbid, 18);
    # k1 y" p. ?0 V+ H+ e- A9 ]; r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    , R; v- Q( r! P) W; e' C
  56.         if (fd  < 0) {
    1 _% g1 d: g: {5 [& d. e( D+ N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);" p9 y6 y$ _; c$ N" u/ X
  58.                 return -1;4 B/ E! O. W' V
  59.         }
    3 S' g: i6 p8 E( |% p# E# B* v/ W
  60.         arg.sub_addr_count      = 2;
    - D8 G4 t/ l5 G; a
  61.         arg.data_count          = 0x18;
    , O8 c% `' j  E2 e( m# D; _
  62.         arg.e2prom_cmd_sub_addr = 0x290;: P+ {. G" l! y/ D
  63.         arg.e2prom_cmd_data     = buf;
    & ]) A; Y9 H4 e# u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 d: _. a$ ^0 t( q; K" O5 H
  65.         if (ret != 0) {) {. h& h8 r8 B0 g1 n( `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 ~; d, L# \9 q: B9 K. D
  67.                 return -1;* o' U+ ]* x& S& S3 O
  68.         }9 A( N* |6 Z. u! U+ Y

  69. & F( W) U7 @0 k- N- I
  70.         return 0;5 K3 Z- C+ }& ^3 H
  71. }
    " Y. V; y& R! g. ~
  72. 0 y! Z5 A8 x3 p! m& P5 [7 M  y
  73. int main()
    $ j: U% t: Y3 c% s+ B
  74. {
    . B; R: ~' Z& d$ @+ T3 k  Y4 O
  75.         char c;
    : a* y. I' d% w
  76.         int i, macs[6];0 a7 a7 W" ]/ h2 m
  77.         unsigned char mac[6];  n0 U3 l# `) R1 o; h- u2 ^
  78.         unsigned char stbid[256];: p! ~" j; j( n  h0 b
  79. ! F! P. {1 F5 o3 r
  80.         if (readparam(mac, stbid) < 0)
    ! E/ R1 v/ n) e" q+ H) m( m) v; v
  81.                 return 1;
    * {- m$ _+ z& }! ~5 ?, r0 _
  82. / A' m1 a$ V# J! \6 G3 ~* D
  83.         printf("Current parameters: \n");
    . {+ a, `1 `. V' ?7 m4 H( [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 [3 R  b+ q1 Z# r# Q/ d2 C1 |
  85.         printf("  STBID: %s\n", stbid);
    6 B. ~+ s+ E3 m
  86.         , V: C1 S* c7 I% W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 \6 W- L# d* U
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% |6 Z: A7 ^' E0 ]( f  Z& x
  89.                 printf("Input MAC error\n");; }! Z" K* X1 t
  90.                 return 1;8 _  T* @! ?& N  x* l6 |1 _# ~
  91.         }
    5 W) ]) a; B. i+ s$ e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 x+ M. S4 K7 ?! L( L
  93.         printf("\nPlease input new STBID: ");
      S5 l5 m  @. \- @' g* w' m
  94.         scanf("%s", stbid);
    $ y! S# D) c: G8 J& V3 U$ E
  95.         if (strlen(stbid) != 18) {; ~1 M8 p* K0 i  \: Z: w
  96.                 printf("Invalid stbid\n");
    - \6 A/ K9 q; y
  97.                 return 1;
    + v. ^# k" ]8 v. T0 I' w
  98.         }
    : A7 S; Z. T* `4 \! x- K  b
  99.         printf("\nNew parameters: \n");
    - I% g: N. F8 h* P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . D7 G9 p- N. a
  101.         printf("  STBID: %s\n", stbid);1 i) d2 _$ T4 X$ w: M2 }" P0 K! \

  102. 5 ^3 C; z4 _3 s9 l' q% A
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 H1 G6 n* g  B9 I9 [) r; b
  104.         for (;;) {6 v0 a5 B6 w- R# G/ q- ^
  105.                 c = getchar();' i& @6 B; |  {, @  J9 M2 C) m
  106.                 if (c == 'y' || c == 'Y')$ k' b7 d9 _+ \5 H2 a4 b3 N; K6 d9 r
  107.                         break;# Q1 J6 ]0 {* @4 T
  108.                 if (c == 'n' || c == 'N') {
    0 Y* a' I3 M! \, \! c# E
  109.                         printf("\nAborted.\n");
    1 K& K- Y, ^6 Z4 ~; p
  110.                         return 1;" s2 L8 c' j, y
  111.                 }
    0 Y7 X1 I' J( f5 s" B# P# P3 v
  112.         }# J* Y  T* T2 j
  113.         if (writeparam(mac, stbid) == 0) ' N3 _& a+ A0 ]9 N: ]6 G% d
  114.                 printf("Parameters changed.\n");+ Y( b  Q$ F$ ]: G: F$ I: H

  115. 4 Y- x7 q% L9 E2 `+ @/ L
  116.         return 0;
    6 w: E9 r, E+ ^; o" w5 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 7 ~* Z5 o7 `9 |( q) M' i5 c" @, S
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

5 G/ j! ]  h& W1 B" X4 }0 o你用的编译命令行格式是什么?! J; y. C2 M' q+ ^3 O0 P
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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