查看: 16042|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      T9 o# }% X, _  G5 C6 }, Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% H, B  Q( W8 u( [. {
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' A  i$ p2 u, K! |( Uusage: himr <address> <value>. sample: himr 0x80040000 0x05 i0 q- B* B0 O8 {7 x- w7 H

* i$ W1 B: G8 R1 e  L' P* A% S
8 A9 `: @& A, Z  n  c# ~不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; Z( q: j" n1 M3 }
( O( [# W5 y& F5 c% }, H; x
补充内容 (2012-3-8 09:42):
/ f1 c1 H* c4 C2 e/ Thttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 v# T6 p9 q1 i
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
4 J; b$ j' Q$ j6 d- w3 U; h
) Y7 ^  v  G" M6 ^3 u% R* mhimr <address> <value>. sample: himr 0x80040000 0x0
8 b$ t9 V6 s* B
- Z6 X5 @, H: B6 e8 i. F, G例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 x4 {# ^/ W& M+ xhimr 0x80040000 0x007 E0 i& S& B6 r" h" @
himr 0x80040001 0x119 u7 ~2 s: U6 x6 G
himr 0x80040002 0x22
3 H' J- h* L7 q+ ?" @6 a' {) Nhimr 0x80040003 0x330 B: R3 f; u& j
himr 0x80040004 0x44
" ~% M3 y# I1 i6 H" ?# Fhimr 0x80040005 0x559 Q# ]% p5 C1 C3 h

4 l0 Q& L; F' _SN也是类似。/ _* ]% `. i3 d

8 S" P# u8 I( D+ o现在主要是,谁告诉我们MAC和SN的地址?' C; i+ \9 U! B. d; M
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! v# S5 C5 ]; |; E. U; t* D' `一直想找到运程修改MAC和SN的办法,苦于无解啊
: x  d, X, f' e/ ^3 o
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, B, q/ a/ G1 _& e1 P# a  ~$ }3 b* ]) ~) M( Z
修改的代码早有了。到今天不会编译。0 H! r$ m) H4 C$ q$ p0 r
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 ^# A/ k9 |2 P* O/ D
  2. #include <malloc.h>% @# ^! o( E! U' v/ \
  3. #include <sys/types.h>; p! I- Z# z. t4 @  f0 Z6 l
  4. #include <sys/stat.h>
    ; ?( ]$ J3 k/ d
  5. #include <sys/ioctl.h>3 K! B6 W. u  S( H' v% C
  6. #include <stdio.h>
    . O2 j- V( w/ E- s; L
  7. #include <string.h>
    : Y# e3 m/ b0 F8 H

  8. / I# Y( O" T! `, t: ?2 ?& t" a9 J
  9. typedef struct {
    1 s- i, u! l! ?  U
  10.         unsigned int        e2prom_cmd_sub_addr;- H# l3 s7 x' p8 T# O" g; V
  11.         unsigned int        sub_addr_count;9 l6 |5 ^0 q7 T/ @
  12.         unsigned char*        e2prom_cmd_data;. S( V9 n- q& V0 y' c) p
  13.         unsigned int        data_count;
    1 M" \7 m7 Y9 i
  14. } e2prom_s_cmd;
    1 x, @# D5 w. ~  K( f: Y9 L
  15. " B7 t( G+ K9 Y0 M
  16. #define E2PROM_CMD_READ 14 `0 x, E7 G  n- A
  17. #define E2PROM_CMD_WRITE 27 j3 N" Z7 R, x' {( O- v% h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 x* P! S- y, E2 [- l8 j+ V! C  _
  19. 7 A5 i# @3 s  p( n4 d. ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% z! z) Y- Y" J0 M5 k
  21. {* n% l/ R; x% g. z) ~+ Q0 i
  22.         int fd, ret;7 V( x! t! y4 V
  23.         e2prom_s_cmd arg;1 k3 ?; ~- P8 H. k+ i0 h
  24.         unsigned char buf[0x18];
    9 C6 l, R/ W7 |& s) p

  25. ' E1 z2 k, q( T3 Z+ i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 K' A* Z: U2 T- g4 V
  27.         if (fd  < 0) {
    . j; \* X2 g3 O0 P, ^" P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ E& n; r8 e- \
  29.                 return -1;
    6 a  O6 j7 {$ ]5 w
  30.         }
    , s) d" H! x8 `, N- H* m: @/ ^
  31.         arg.sub_addr_count      = 2;/ q2 f0 E6 m' Z
  32.         arg.data_count          = 0x18;' J3 f+ e$ a+ O+ s& z6 ]7 M- x
  33.         arg.e2prom_cmd_sub_addr = 0x290;) ^0 u* \' K; F) N. W$ A
  34.         arg.e2prom_cmd_data     = buf;
    , x4 E+ N% |5 r5 M" g$ I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 [- |& e) h3 D4 {8 O( s
  36.         if (ret != 0) {/ `6 n- u4 P8 i6 _7 b9 m2 I$ Z5 R$ p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);% y* b1 x$ P' ^# E
  38.                 return -1;5 t5 E+ g  @4 C
  39.         }
    + a. o6 T" K, M! O; Z/ p
  40.         memcpy(mac, buf, 6);3 x  y3 A1 Y: c# H0 ]/ H2 I: b
  41.         memcpy(stbid, &buf[6], 18);
    . @0 H  J$ {% h, n8 \
  42.         stbid[18] = '\0';
    7 w7 r& D( H* a& V* `

  43. 0 z( x6 }; e9 E) t4 B( I' U
  44.         return 0;8 H: A4 B6 }8 W* y$ y0 _' {
  45. }. b) A  X! D6 x3 v

  46. ) k' e1 @) Q7 O* m5 H" f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : _' C. ^/ g$ e7 k
  48. {% Z% X" k% ^# N1 M9 R$ [
  49.         int fd, ret;+ X( b; i3 Q- ^+ Y- t& s. ~, @* x' I5 c
  50.         e2prom_s_cmd arg;6 e* k$ J9 p, m8 `$ S% t: p. G
  51.         unsigned char buf[0x18];- a% X' T/ a$ [0 J

  52. 3 t8 l$ o! Z% h$ p1 r8 \+ E
  53.         memcpy(buf, mac, 6);
    ) b: x+ j9 ~; h) d5 w
  54.         memcpy(&buf[6], stbid, 18);
    # Z! q4 g* W/ Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 m/ ?  k1 {% a/ q5 d; j4 l
  56.         if (fd  < 0) {
    " v& O- j$ G3 V) b7 @5 ~
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 ~0 O& n2 \0 O+ Y% w5 ~' E0 J1 N
  58.                 return -1;0 t* I: S' ^& _7 ]. i, r
  59.         }
    & g4 r' c, I9 O3 i/ N5 ^
  60.         arg.sub_addr_count      = 2;
    ' I0 K* P) S3 a, U7 c9 g) n
  61.         arg.data_count          = 0x18;6 Z5 M) e7 U6 [! c8 Z2 w
  62.         arg.e2prom_cmd_sub_addr = 0x290;, R! \) u( }# `8 R* Y: i  I
  63.         arg.e2prom_cmd_data     = buf;
    4 A5 }) ~' g# }8 V- ]- l; S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 W2 F% |" h* U# r/ x
  65.         if (ret != 0) {
    ) g" M: E( H/ g. D/ ^$ A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : a/ t& u$ C: s% W, l: o1 l7 H
  67.                 return -1;
    9 o* c7 e4 e) F, N) e% a
  68.         }4 C9 b' W1 n+ @* H- N
  69. 6 Z7 D& d% S$ y
  70.         return 0;- M* G2 p3 A8 B/ R; Q; I
  71. }/ {" O2 I5 L4 C: O: T
  72. 5 q/ c! z/ h) e6 e; Q
  73. int main()
    : H. f1 T/ \! M( E$ j& i
  74. {
    # G8 B! U4 D. `
  75.         char c;3 ]5 \% G) Z7 f% u3 O  b, b
  76.         int i, macs[6];7 d; {7 f" b$ P, I$ V
  77.         unsigned char mac[6];6 H# S7 l) ^  l2 v
  78.         unsigned char stbid[256];  i  d5 M( E) d# D

  79. 6 x0 E! j+ H# Z6 l. T
  80.         if (readparam(mac, stbid) < 0)
    & S7 X( R5 N  R- j1 T
  81.                 return 1;/ f+ O) {, a2 k! a

  82. 8 m. M9 m) G9 w$ e1 G+ }8 S' `5 k
  83.         printf("Current parameters: \n");
      X# S& Z. F0 ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 z; M7 F' C/ N+ ~" A( U. K. t+ r0 ]
  85.         printf("  STBID: %s\n", stbid);
    * Z; U2 L+ Y2 l) r2 g! H5 n8 _
  86.         . w6 [) E) q, M' P) Z% m. F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& D5 E5 E7 ~3 a  g% `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 p4 p6 p( r! f
  89.                 printf("Input MAC error\n");  P# H; O- I) m
  90.                 return 1;
    8 h( M( H" M& z* {
  91.         }: J2 A2 Q+ j0 g& x5 o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , {$ I5 Q5 I7 H. p6 O/ r: z
  93.         printf("\nPlease input new STBID: ");
    8 [6 n4 o7 O: H+ R2 B
  94.         scanf("%s", stbid);
    : H0 u0 n% R; A% |; s- H, R
  95.         if (strlen(stbid) != 18) {$ N" Y! p- i$ O4 d' _
  96.                 printf("Invalid stbid\n");
    ; [" f& o/ Q4 Z) t
  97.                 return 1;2 t5 M/ c3 X: f  @: g
  98.         }' `/ s; i$ l7 ]& P0 B8 Y
  99.         printf("\nNew parameters: \n");
    # f+ F* u) ~/ c' {, T& J' O9 z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 {7 h/ x' M, T) U
  101.         printf("  STBID: %s\n", stbid);1 U4 }- p0 s6 s, d
  102. 1 c+ a- s: Y" ?9 t4 y; o9 o
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; h% i, R% [5 G
  104.         for (;;) {5 c+ n2 l! X4 ^- Y
  105.                 c = getchar();
    ( u# m) ^, ~3 L; U  E) ~; \9 G3 n' e
  106.                 if (c == 'y' || c == 'Y')/ s4 ~+ U3 @# O$ S( e- e
  107.                         break;7 X+ W$ }1 ?3 |+ R6 a
  108.                 if (c == 'n' || c == 'N') {
    2 f0 f; m- |4 ^* o; h. ^/ o1 J
  109.                         printf("\nAborted.\n");3 K) M/ i$ @% Q) ^0 G  ?, o$ @
  110.                         return 1;
    $ i  m- @+ o1 E
  111.                 }
      a  `+ `! m8 A1 R  I3 c
  112.         }4 [- L- h. Q. ?, v9 h
  113.         if (writeparam(mac, stbid) == 0) # ?; u) P9 x9 F& ~" C
  114.                 printf("Parameters changed.\n");
    . u1 f6 `. s. C! r7 |

  115. $ v9 g0 u  u0 D; i/ h6 L
  116.         return 0;
    ' @2 c1 u6 S! V0 P4 k3 q
  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 / W  G  {9 }/ Y0 M; C
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  _* Q3 p: S# o: K7 }: B% a
你用的编译命令行格式是什么?
% u. n4 w: _! v% z* A4 k
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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