查看: 16610|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 ~! ]4 M  x$ U5 `& B3 v% h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 F9 w  t# l5 U; v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  s! U. }* b( S, n5 L
usage: himr <address> <value>. sample: himr 0x80040000 0x0  o0 u( L. o/ c% `

- e- h6 Q! C; Z( l* d# s+ l6 B. s- I  K& p4 y* E
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' u- W- t: e" k

8 B' ?$ {6 A1 i4 _& K补充内容 (2012-3-8 09:42):6 i( D+ O2 |+ |- _/ Y3 o+ m# Z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 v! @9 f+ d) a+ }7 q) g) `
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。  c! a0 _: P) X; z" ]* t

. ~1 a8 M4 u& ~himr <address> <value>. sample: himr 0x80040000 0x0, j+ v3 O) m% Q/ m& H+ y& O) K

- J# e9 k3 B8 V; M+ R: E) ], |, w  J例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# N! ~% |6 v, M9 }. C1 g
himr 0x80040000 0x00
, f' b" T" N- l4 F8 N; hhimr 0x80040001 0x11
; k0 J" V0 R" c" R0 Mhimr 0x80040002 0x22$ j: D4 R8 \) v8 Q& J" L4 j% M
himr 0x80040003 0x33
0 ~9 U2 e+ T7 j( L& n& e) n! xhimr 0x80040004 0x44( `  o% o* ]1 V& B: {0 x/ I: ]
himr 0x80040005 0x55; I* r3 c2 R' s) e4 E
, }! \( E9 w  q6 }& w; a
SN也是类似。
3 e6 F1 G% P6 d( J) K! J/ w' A( s/ d; ^. b  q
现在主要是,谁告诉我们MAC和SN的地址?4 p( E  V; {+ t' o  l
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' S3 t) L0 F0 c. H& k一直想找到运程修改MAC和SN的办法,苦于无解啊
' V% h& J, A4 K! P- f
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & M( z! I5 O/ }  f  t
3 ^7 T" s# ~/ ~/ O
修改的代码早有了。到今天不会编译。
+ U8 C6 v+ ~( V) x7 L; u! [需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 x: s4 Z2 |# B  N
  2. #include <malloc.h>
    1 P' l: }. Y1 ~9 n# G9 F
  3. #include <sys/types.h># y0 F: h2 `( }! x; Z
  4. #include <sys/stat.h>" t# a8 e: m& R7 \. Z5 [
  5. #include <sys/ioctl.h>
    ) y8 X! S# z% V6 x: w, i( e% \7 U
  6. #include <stdio.h>* W9 s: z* K9 |5 M) z
  7. #include <string.h>2 q7 w- H- m9 e3 ?2 [

  8. $ b* y" a! G) r( {2 Y# M! F( C
  9. typedef struct {
    . _. v* n' |7 e+ Q+ P
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 \: c( N# K1 \; Y, G5 P
  11.         unsigned int        sub_addr_count;
    2 K: f1 E* g7 G6 {1 a% s# N: w
  12.         unsigned char*        e2prom_cmd_data;
    ) n" D% @+ G2 _9 E8 v$ i2 v, D- {
  13.         unsigned int        data_count;
    ' c# q) ^/ `6 ~, h7 L! ~1 ~
  14. } e2prom_s_cmd;& f, y/ M, g2 }6 d7 I- i1 ?

  15. . a/ n# W3 x& l3 X& H* r% o
  16. #define E2PROM_CMD_READ 1& h1 `, l( n) a4 l
  17. #define E2PROM_CMD_WRITE 2
    # K& A% `" \  R8 I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 |' y8 Q/ K! W. h  e$ b" x5 v
  19. 5 h0 I: O4 ]; n2 G" x) i4 ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & F' S. R1 b6 V! l
  21. {9 d( l0 [  e2 b9 O# t. U) [
  22.         int fd, ret;
    " t8 M) Q0 O* I+ K/ g, ?, R2 m
  23.         e2prom_s_cmd arg;, E. \1 i" h" i/ M7 n, b: h; D
  24.         unsigned char buf[0x18];3 X, k$ A7 I9 y: c
  25. 1 f. S& J! A* p
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) h/ N: X& Z9 i7 Y" U" Z! G7 f7 n
  27.         if (fd  < 0) {
    ' S8 H9 w5 g& B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    " G- A) L) c8 A- M7 `4 P
  29.                 return -1;8 J- E4 Y% s& t7 M3 E
  30.         }
    ) B$ p3 |- l+ G
  31.         arg.sub_addr_count      = 2;
    4 ]- m: l& `3 J  E/ T$ Q+ p
  32.         arg.data_count          = 0x18;
    2 |$ K% O5 j7 k+ X3 V
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 Y/ Y" F. V, X" b% p. b
  34.         arg.e2prom_cmd_data     = buf;
    ; C3 R9 Y8 i8 y5 M1 O, W/ {
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);& U" p" H; U1 `! o6 q! s
  36.         if (ret != 0) {6 e" r3 I  V0 `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 i( d4 Z2 R6 E* W
  38.                 return -1;4 r8 i' `8 H- q* W% K
  39.         }8 F% d% m7 O# u7 ]" H
  40.         memcpy(mac, buf, 6);
    ) ^4 P9 i+ j% i- s0 d
  41.         memcpy(stbid, &buf[6], 18);
    2 T; p' _6 }$ `$ b- }
  42.         stbid[18] = '\0';6 D' q( U& T5 K, K7 M' W

  43. 9 D2 b0 R) a7 T( I9 D5 h# T
  44.         return 0;. f( Y, k0 P" |% k  A8 _9 w, o' U
  45. }
    2 W6 a# N; N: L: H

  46. ( M5 d8 L* k6 v3 a) l
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 S0 R! [; B; j
  48. {) b$ F& R3 b+ }5 _, I
  49.         int fd, ret;2 v5 W5 [. W6 q$ r- l9 P- M: R
  50.         e2prom_s_cmd arg;# E$ B3 Y8 R! x# z2 n
  51.         unsigned char buf[0x18];
    - C* D; J9 v  ]. F* ]7 w

  52. : u. l' u- O7 G8 D2 `
  53.         memcpy(buf, mac, 6);$ n4 g+ z8 _7 `5 {5 W
  54.         memcpy(&buf[6], stbid, 18);
    7 E; b- Q' V8 W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    & I$ n& u& J2 [
  56.         if (fd  < 0) {
    8 U, _( E# K% ?" O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 l( E. D+ R+ @# y- \
  58.                 return -1;
    # l# q8 f# Z9 Q, {, [' ?' }: W
  59.         }. j0 T: `, Z  X) ]  A+ H
  60.         arg.sub_addr_count      = 2;( k' X  F; _6 @9 S. C
  61.         arg.data_count          = 0x18;% O! {, N) }8 m$ z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      m+ T8 K  F9 P% ~2 |
  63.         arg.e2prom_cmd_data     = buf;: V. L  N- f' H
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ d9 w" _, N$ r' x7 i' h
  65.         if (ret != 0) {
    1 V9 n7 x2 R) }+ ]+ P) B5 Y+ @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & A  D" D. K1 d. j3 g
  67.                 return -1;) n$ g* S6 g8 m: G2 \0 a
  68.         }0 ?3 G% y, T' B# G4 b( ]9 U
  69. $ V, d( g, f' g: F3 G
  70.         return 0;
    5 T, m7 ^( J' n
  71. }
    ' _# P* U- e8 j4 S- t5 V9 R
  72. " I: Q0 [. ]" F1 E
  73. int main()1 r$ ]! O' ^9 C1 Y3 H. n. n
  74. {/ i. @0 j4 \; C6 B
  75.         char c;" o/ H+ b% ?+ X  a9 {8 ~- i
  76.         int i, macs[6];0 P; C% K  y1 [% U# `3 s
  77.         unsigned char mac[6];4 ?3 s7 Y' J3 y. M; D, f
  78.         unsigned char stbid[256];
    + H8 K3 X, F9 o6 Q) @/ G2 J  G
  79. 7 u1 u5 p* X5 o( {8 G
  80.         if (readparam(mac, stbid) < 0)
    % k2 h4 z, ^$ a" L' `& M- l
  81.                 return 1;
    8 v6 \  h$ p$ |, A
  82. * i0 O6 S, X! P! p; x7 v
  83.         printf("Current parameters: \n");
    # p+ ?: d0 _" _8 X$ S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , |' f% M* ^. T$ e* t
  85.         printf("  STBID: %s\n", stbid);$ ~3 e! m: e7 N: H
  86.        
    7 v0 c5 Y( V, D8 H
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 o8 ?1 y0 ^: E0 _: M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- {  O6 z; Y+ k% Y& j5 C
  89.                 printf("Input MAC error\n");( t0 Z" p6 s# X/ V
  90.                 return 1;" L! B' \2 m- f/ l$ F5 `% @
  91.         }
    + g* ^) v/ \6 P7 M1 P+ M! `  ?6 ^2 W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- a' r! I& U% f) y/ J0 z6 ~
  93.         printf("\nPlease input new STBID: ");
    ) B" W+ x9 U* d# E1 H
  94.         scanf("%s", stbid);
    4 X1 G& m& }- `5 D6 V  U- e5 l6 R; H7 J
  95.         if (strlen(stbid) != 18) {
    % }( L1 R- i* d
  96.                 printf("Invalid stbid\n");
    / t. p7 ?" y7 @# i3 K; T
  97.                 return 1;
    # F0 b( N$ c, F; f4 |. z& a& c
  98.         }' k4 B. T% a% d5 L; E0 v
  99.         printf("\nNew parameters: \n");! ^. T! t) B8 c4 C# O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 y! ~: r: _( H3 L: R( c0 N) r
  101.         printf("  STBID: %s\n", stbid);2 d# D# q; V! f$ E% p2 Q

  102. 2 j3 \7 }" c5 x7 U  m4 f9 G
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & G2 b, h4 H( h% a) o$ r
  104.         for (;;) {7 b+ X; K4 A$ S! f( Y3 a
  105.                 c = getchar();9 o9 M4 g, z: e% _
  106.                 if (c == 'y' || c == 'Y')) `* |4 I6 }( ^7 H( T+ V, ?! W5 t% A
  107.                         break;8 W9 w' P2 k' q4 F; [+ I/ C
  108.                 if (c == 'n' || c == 'N') {& k$ g& w$ ]/ H  }. r. u
  109.                         printf("\nAborted.\n");
    5 g; J& d6 d" K) G7 E
  110.                         return 1;- O  h& z0 o9 C  G
  111.                 }
    0 Q2 s  z7 o8 c0 T, q
  112.         }
    ; [: @* U( t, r, a
  113.         if (writeparam(mac, stbid) == 0)
    " U6 w1 n* z  D' s5 F
  114.                 printf("Parameters changed.\n");+ }, d9 y4 x$ d" x5 x! R

  115. 3 z. c( D5 p+ ]9 x) q3 a6 q( E; R" [
  116.         return 0;
    ) x) _& C' @% u% t. ~
  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 / q& j1 z2 A+ T& W
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 p9 @4 N5 a% d; s% M1 u/ {
你用的编译命令行格式是什么?( z$ D' I: w# Y
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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