查看: 16854|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 {9 O3 k" v6 \* |8 U+ S
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & t, {9 p) s2 B$ i( X+ ?$ J& s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' a% v6 F$ {0 d7 F  p2 z8 u# q0 j  Xusage: himr <address> <value>. sample: himr 0x80040000 0x0
% J( z) P; @9 X2 {) _7 x
/ c4 ^0 D! `3 p: e
4 S; U, N0 `" }6 W+ \不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% J& r$ k% {2 I- w2 p
& Q, V5 j# ]6 v! x" k补充内容 (2012-3-8 09:42):
* h  H# k5 O) [http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; l1 y+ |" b: p% m/ X5 n" r0 b这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。8 m( I3 q% Q, R3 c2 L, H$ c

" \) v2 N; o, s' y: `9 R. dhimr <address> <value>. sample: himr 0x80040000 0x0
$ g9 D" e$ {4 E/ @; V8 F! f1 g! D% o# |8 n  v- j& w
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。2 ?  C. L+ D6 O& o8 A: _, Y
himr 0x80040000 0x005 M3 z, O( `) B+ _  f
himr 0x80040001 0x11
/ \' h9 \) w  T/ e8 a1 h7 Zhimr 0x80040002 0x228 ~  O( Y  {: F: m! s1 X
himr 0x80040003 0x33* O% ^. T9 Z, `  @
himr 0x80040004 0x44* X$ h0 v9 u/ T( R& G- ]
himr 0x80040005 0x55( E# `' [# B. q: s* N* z$ T

1 y2 T; z; G1 A, H9 Y( n7 R) rSN也是类似。
1 x5 e6 h& L. }. z9 `4 F( R
1 d) \- w9 S! y9 M2 e现在主要是,谁告诉我们MAC和SN的地址?
. @, H- p7 c( f
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * j/ [( z: H! S% q, B' ^/ q' f
一直想找到运程修改MAC和SN的办法,苦于无解啊

& A1 o6 s4 W! c3 }源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 q. b! L1 f2 Q; T. r

* D$ }: G9 e: `: q2 u6 b修改的代码早有了。到今天不会编译。
0 t% B6 a8 Z; p9 l* N* C( c9 `6 R- e需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% L* @4 _- A9 e
  2. #include <malloc.h>
    6 e1 O2 M" b5 G7 e; S
  3. #include <sys/types.h>
    , D% M6 m* J) q/ T
  4. #include <sys/stat.h>
    4 L, S+ P5 W& [! @1 Q5 r
  5. #include <sys/ioctl.h>5 M  L5 M% ?% V
  6. #include <stdio.h>
    1 ^( ~1 e2 N$ T4 g9 U
  7. #include <string.h>  w+ V4 X6 }0 x. y) V8 J' s& g+ K

  8. - w2 I, c+ H& h" E& g6 o: z1 f# i
  9. typedef struct {
    ' a0 n9 Q) G9 S- Z
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 B& Y7 w+ M8 l
  11.         unsigned int        sub_addr_count;
    9 @. e. T. S" r, F' P. L- f! I
  12.         unsigned char*        e2prom_cmd_data;% h' b, e/ y, P* N) x% F
  13.         unsigned int        data_count;
    ; L' g  d6 R# s7 b! j: F/ J3 E: B
  14. } e2prom_s_cmd;
    , p* G. @  g+ W+ ?; `1 j+ J
  15. / Q! F3 G0 V8 Z% P( T
  16. #define E2PROM_CMD_READ 1, o$ R5 R; i1 s1 u! W, r* X
  17. #define E2PROM_CMD_WRITE 29 _6 N+ m, ^$ z! d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % N# L1 U, S1 N) L8 ^

  19. 0 b( q) M. q9 n' K& T- N8 N. g
  20. static int readparam(unsigned char *mac, unsigned char *stbid): `& u/ W. B5 V8 ?
  21. {2 z: ^+ x& p5 B( S& p+ L5 Z  U
  22.         int fd, ret;
    1 u- S* J0 I! ]  \* L
  23.         e2prom_s_cmd arg;
    ' u" {0 t" Q8 U! ?& O4 M
  24.         unsigned char buf[0x18];
    - s  t% b' {1 [5 ]1 y2 \
  25. & o$ G, E* ^& q# S4 e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . C7 O: h1 W6 {+ I! T, f
  27.         if (fd  < 0) {9 c$ K" Y) T3 Q1 u. O6 C. k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 z' Z3 j! I8 z% R( [$ Z
  29.                 return -1;
    4 S, ^' R  u+ Y+ e2 p
  30.         }
    4 i& G* v1 C: t2 n' J4 t& B8 T+ K
  31.         arg.sub_addr_count      = 2;% q# {, m0 S* w
  32.         arg.data_count          = 0x18;( ]0 S/ C  _- j
  33.         arg.e2prom_cmd_sub_addr = 0x290;
      s8 @% t! x- c8 k4 m, z
  34.         arg.e2prom_cmd_data     = buf;
    1 d; E5 K3 S7 j, J" f# f  G, \: r- {
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    6 e. `5 j& p. @' n/ S1 Q
  36.         if (ret != 0) {* k) d' \0 ?7 V; q$ t% {  |% Q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);% C! K) Z: G+ C- `/ `  W) j
  38.                 return -1;! I4 N7 v: ]* l' O& J9 |4 I8 n% C
  39.         }2 {! A( Q' b, P. w! M
  40.         memcpy(mac, buf, 6);" w8 |0 P: D5 t
  41.         memcpy(stbid, &buf[6], 18);
    & [) B9 E1 b0 u. P3 l0 X4 E
  42.         stbid[18] = '\0';
    ( \# m6 [& ], {. s5 C0 z$ ^3 y/ _- }

  43. " _# U9 s0 i1 A, K' h
  44.         return 0;+ }- I: v3 V1 C0 d; r, O
  45. }
    9 s1 M3 I! D. c

  46. ; D5 x* M) W- ~0 `2 F5 H* t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / a- K$ V5 s; H8 T& N; s
  48. {9 [2 u/ G" G6 Z5 @2 k- @9 Q
  49.         int fd, ret;$ S5 A% b: Z9 ^  o* f0 \- B
  50.         e2prom_s_cmd arg;
    0 A' p/ Y# \# g% M5 s
  51.         unsigned char buf[0x18];
    7 B: t* R8 e9 F; E
  52. 9 m) ?& Y  [0 C& S) @
  53.         memcpy(buf, mac, 6);6 a; @. n: y; l/ J1 m+ [
  54.         memcpy(&buf[6], stbid, 18);$ t4 z! Q5 J7 E7 Z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 E- _  n" q8 K6 |
  56.         if (fd  < 0) {" r9 m$ o- l& D6 B1 e- s' ^8 v' R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; y4 S" z  u! N1 P* H; `; X2 @/ a+ ~: H
  58.                 return -1;7 b4 ^9 f) }+ u( X' C0 u7 I5 y
  59.         }( o  o! d; {% U! x2 e* I
  60.         arg.sub_addr_count      = 2;3 _" o1 j# I' }
  61.         arg.data_count          = 0x18;7 X. m4 u3 N' q3 \
  62.         arg.e2prom_cmd_sub_addr = 0x290;) b% j! O( p: y$ H- J! \
  63.         arg.e2prom_cmd_data     = buf;' {. r0 p6 P+ `( f
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 |- M, @3 G' u
  65.         if (ret != 0) {0 n% j( @( C) O( ^1 X; `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 [1 ?3 G5 A/ y: S
  67.                 return -1;  ~' s+ y1 F  D( F3 h( I; w
  68.         }' Y1 A! ?* b, u: B4 ]: I

  69. - A& ^4 i+ J, \
  70.         return 0;
    & }0 q* o. U- y2 A- P" y
  71. }9 }& B: c/ U  s* m0 b! P" H

  72. ( t1 k, T! D1 f& L
  73. int main()8 I2 e2 m( a9 |. q
  74. {
    # v- _+ E7 z) V5 J# J6 T; a% R
  75.         char c;1 D8 h, C, y; t
  76.         int i, macs[6];
    ! P5 K/ X8 t$ q! A9 h
  77.         unsigned char mac[6];
    " c, I  F$ X% s
  78.         unsigned char stbid[256];# H, S' ?6 r$ p+ m* M6 b- N
  79. . W& N$ M1 @2 ?2 u/ f( M3 `
  80.         if (readparam(mac, stbid) < 0)4 i1 O" l" P. o$ b& D  C
  81.                 return 1;+ a; {1 j8 y0 F3 V5 C) a
  82. 3 A/ ~! f2 ^9 t# |5 U6 i. a: a! A  ~
  83.         printf("Current parameters: \n");
    + {% [( o/ w' i, _8 I7 E7 y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; e7 z6 q9 u) h! M
  85.         printf("  STBID: %s\n", stbid);
      B1 C' g- W2 n7 q4 z
  86.        
    0 j; ^% ]6 w+ |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( _* i+ d, x! _! I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 N1 M# [# |0 l" X0 i4 m/ ]
  89.                 printf("Input MAC error\n");
    ' r. I2 ~* }( z8 l7 R1 }  x
  90.                 return 1;. k6 G: {" d2 Q' u
  91.         }
    . Y( r* `- i2 p" O: T  T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% [+ E) T+ q: Q; N4 |3 P
  93.         printf("\nPlease input new STBID: ");0 X' n. k- \. U  `5 B+ ^7 t
  94.         scanf("%s", stbid);
    : c5 s# ], j5 ?4 l# r
  95.         if (strlen(stbid) != 18) {
    2 u/ @& C* `; b
  96.                 printf("Invalid stbid\n");5 |' I9 \8 \, G. o  T. `
  97.                 return 1;
    0 C; {9 `) s3 r2 S) S4 W5 c* Q/ ?
  98.         }
    1 b" f) M/ i0 E" u' a5 s& R
  99.         printf("\nNew parameters: \n");, U) l5 {0 }" {6 q% P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& o$ X! x2 `/ I0 b& m. A
  101.         printf("  STBID: %s\n", stbid);
    : ?1 o4 \# g. {

  102. & q# H% e5 D! m/ }3 T2 g
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 |6 ?5 Q8 P9 M3 }9 c( B  X
  104.         for (;;) {+ q9 Y" ~" }5 \% m) I# O
  105.                 c = getchar();9 J! O( H0 v7 G; z! y7 S
  106.                 if (c == 'y' || c == 'Y')
    + @8 I* I5 L* \8 c! `9 f
  107.                         break;
    " [+ q& G& S: S1 O  E" S7 z
  108.                 if (c == 'n' || c == 'N') {
    3 C3 G0 o/ R& {% p  Z/ X5 U  c
  109.                         printf("\nAborted.\n");, B5 N3 U5 K0 ^/ a  A% z2 J! F
  110.                         return 1;
    9 Q+ E( [/ y2 q1 x% y# }$ C
  111.                 }
    ; l+ I5 V( ?: ^. s6 V# G: ^
  112.         }0 e/ z) ]7 F4 g: x8 f. D1 c
  113.         if (writeparam(mac, stbid) == 0)
    , u, c% J% o6 @( b4 K6 i
  114.                 printf("Parameters changed.\n");* R; \; \! a0 ^' I- R" L* N$ V
  115. " h. ~& z6 X. Z* J9 q, d! D
  116.         return 0;
    # x. g% ?: D0 A! o7 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 ) w0 z7 v0 e2 Y4 u" v. A
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& T/ \. U; L0 C( T/ p: Y你用的编译命令行格式是什么?3 g: @$ o- b( h! H8 j2 G
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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