查看: 17146|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr& y$ G4 \) E" m' f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 Y. D5 Z' E# y* n; L7 n+ }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
: f3 P, G$ f' ^  {usage: himr <address> <value>. sample: himr 0x80040000 0x0& u! L! j, P" f3 A

1 {: V- O$ @! D7 r( ^
( R/ `6 p. ~, L" `8 Y) n/ d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 k* E: G, N% U) c
- L3 ~+ l3 k# u( b补充内容 (2012-3-8 09:42):
6 l0 X" q& C5 ?1 M9 t; Nhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; w! u- z) r: J2 Z8 ?: ]/ u这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。4 J2 g& V- C5 n: g7 r, X

$ A0 v4 n" F9 ~% w; J) H" Dhimr <address> <value>. sample: himr 0x80040000 0x0
/ w7 a6 V& d' s. W$ n+ H" d* v( a  n& q, T2 O  n3 B- h
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ W9 k; W" Y6 }2 T, B0 {
himr 0x80040000 0x00" e6 [; q. C, i/ l# D# z$ n( Z
himr 0x80040001 0x116 Y$ v8 l3 V0 A  e" v4 L% O5 O
himr 0x80040002 0x22
' T6 a) C4 A4 ^( S$ _  dhimr 0x80040003 0x33
: v4 F# I& v  r/ Q. J$ r( S* ]5 vhimr 0x80040004 0x441 F5 l, K" u4 O5 @8 Q, D
himr 0x80040005 0x55
7 n6 A2 {3 Y- S9 l0 I* J+ Q  r
" S( j# ~) [5 M& z7 ?+ HSN也是类似。1 o7 |- k$ j; z) Z
! ^1 r/ w  `4 M5 r, u. }$ y% h
现在主要是,谁告诉我们MAC和SN的地址?- H8 w+ W1 z! i& V
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 Z2 e  J9 D# t; ]4 X+ I一直想找到运程修改MAC和SN的办法,苦于无解啊
+ A7 \" u- v! I2 P7 c: z# B
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: Q7 W# Q) G3 G% [
: o; _* B/ V+ \修改的代码早有了。到今天不会编译。4 U( I* I0 _3 {; ^: h( T
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + ~5 B) Q  @6 m9 g
  2. #include <malloc.h>
    3 h) g" V2 A) e2 M# f0 R- M( c8 I
  3. #include <sys/types.h>' {; \( W8 d: x$ d
  4. #include <sys/stat.h>
    * u" B  c3 j( T: r- M) I8 o+ G, n
  5. #include <sys/ioctl.h>
    1 j' P/ i' A( M8 m- W" _/ a; E
  6. #include <stdio.h>* R3 z7 S# M- e
  7. #include <string.h>
    $ j" H5 H1 z! `. m) P2 z& ~5 ?, u+ Y

  8. " J% C# z: X- h9 m7 [
  9. typedef struct {
    # A) M& r) p! ~5 K: n" U) M
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! u. I8 c& E0 r& h9 Z/ D$ ^$ |
  11.         unsigned int        sub_addr_count;7 C$ B& m' [+ h. }* m
  12.         unsigned char*        e2prom_cmd_data;% f* N8 j1 c8 {3 O, x
  13.         unsigned int        data_count;
    , j) w' @( @& L5 W  ^
  14. } e2prom_s_cmd;2 w" q  @. s; v2 s, z2 ~6 C, w9 G8 i( O

  15. ) X; D# [% ]" O! r
  16. #define E2PROM_CMD_READ 1
    3 ?& T0 O" |9 O
  17. #define E2PROM_CMD_WRITE 2
    + W& }: T5 |# x2 c- e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 [) [7 O5 E% E( Z5 a6 ^: H0 K) q
  19. 1 H! b9 h. D# }& c" [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ f) O: b9 Q- ^' s
  21. {
    # Y6 t+ D: t2 C4 X' |
  22.         int fd, ret;
    , d3 T' f6 F; O7 I
  23.         e2prom_s_cmd arg;
    3 `+ m) V+ ~8 `. w$ o. I
  24.         unsigned char buf[0x18];
    % d4 I' j$ U9 m3 t! b
  25. 9 V6 r: n  e( O; N6 T5 }' h8 u+ g9 n0 N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 W* R7 z5 z/ B. Y
  27.         if (fd  < 0) {
    ! s' o. d# k. n& V+ M$ e7 `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 o% l( j1 ^) ^! Q5 `+ c7 H. O0 R
  29.                 return -1;) e; l6 X" _. ]& ?+ w$ O
  30.         }1 u  W. S" `4 r2 P% u# A
  31.         arg.sub_addr_count      = 2;
    . U" J$ Q+ O: p
  32.         arg.data_count          = 0x18;
    * \, \, H! l  G" P1 F6 n
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 `* {: D  a# O# l0 O; ^
  34.         arg.e2prom_cmd_data     = buf;) i; k" T" P) a) T3 w
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 O4 d/ E. e! j  p! M# ?9 r) h
  36.         if (ret != 0) {
    3 b* C- x0 l  E8 j/ A2 w! h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 M& E2 U: E" R1 r
  38.                 return -1;1 e! {+ ^" U3 o! g+ m; f
  39.         }
    8 o" L9 {' I" Z3 Q3 b
  40.         memcpy(mac, buf, 6);* R- O( I* P' m' ^+ w" P  `/ T
  41.         memcpy(stbid, &buf[6], 18);1 q& ~( m& Q9 S% M9 H/ a; K
  42.         stbid[18] = '\0';5 m+ q, l) _, c: K/ m, m8 z. D" Y

  43. 4 Y" S. r8 q! I8 x. O" J/ _' c
  44.         return 0;
    5 D# \* F& A/ I9 {6 I# o5 ^! J
  45. }7 O( r# R" {' R- H- I7 m/ V
  46. 2 L, i3 D- ]8 L& w7 a! o' j. o7 P" f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . G. F3 u5 b" c9 M* `! U: j
  48. {
    " }1 d" r1 c( }1 M# s7 L
  49.         int fd, ret;
    3 i; G6 U. X' v5 T+ `) S( u
  50.         e2prom_s_cmd arg;
    ( c: e! D; @3 F/ r; e
  51.         unsigned char buf[0x18];) L: ^& U" x! U& R; d* D7 z
  52. % W, X3 e7 Q4 K1 d5 ?$ x
  53.         memcpy(buf, mac, 6);
    1 L6 F* s! O5 ^9 L+ v. Q
  54.         memcpy(&buf[6], stbid, 18);
    ( [6 O, D& E* W7 X1 U: `+ R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& c, c. ]  r8 [& I+ |% _
  56.         if (fd  < 0) {
    # o8 z- p$ o) v& Q7 {! c* d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# {" h' p" r. h0 ]/ [
  58.                 return -1;; n" e0 n4 w9 a" V5 u0 k$ R! z
  59.         }% u" V+ }! @. f) B  `
  60.         arg.sub_addr_count      = 2;! W+ {1 i' S3 J8 I- F$ X
  61.         arg.data_count          = 0x18;
    3 a; s# `8 N9 r8 [+ M
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' H9 u, g0 Q+ x4 U
  63.         arg.e2prom_cmd_data     = buf;
    1 G) r' c* h% g! B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 F/ ^4 l7 ?" _2 l4 o
  65.         if (ret != 0) {+ W, c0 c; f  A: ?- n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" P9 A2 M6 u3 O- E; r. J
  67.                 return -1;
    + w7 ^( x1 ]. I: j8 \
  68.         }) j* p: d) |. I1 d8 t6 J. w

  69. 9 @! w2 _; w% H# L# B9 [
  70.         return 0;
    5 e# t" Q1 J/ B; @9 S$ B# }2 o# p
  71. }7 W0 K; {: `$ Q% T. p" {( V- R, `+ y
  72. : g; Q! U' |  P" v6 a) j% r
  73. int main(): f1 z  F1 g  @9 \% i  X- }$ G+ C
  74. {, l" g0 y3 [4 q/ A4 r6 i2 g
  75.         char c;
    + m! @; i* ]4 R& L2 R
  76.         int i, macs[6];+ }+ f4 G! g; K  @' k7 V- n4 u  G) m
  77.         unsigned char mac[6];% `- d! g- m$ B9 f* r
  78.         unsigned char stbid[256];
    9 v, I! z( @7 Q- Y9 X5 F% w
  79. ) H1 C6 J0 x! o& a
  80.         if (readparam(mac, stbid) < 0)
    # m7 v+ _; ~: a* T) ]/ ?2 R) |
  81.                 return 1;
    ) y/ D) ?5 C6 g0 F

  82. : B' `( ]# N2 }# h* u6 K
  83.         printf("Current parameters: \n");- r# k; n# s9 T7 T4 S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 A9 o9 d* v9 J( Y3 {: d: _
  85.         printf("  STBID: %s\n", stbid);+ j3 ]9 Q5 u. w9 j" s$ D
  86.        
      f" T9 o8 i* v) b) D& v$ t* \* a
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 [1 E  A3 j% |7 d& E. N7 @$ Y- _
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & [, e4 p' K2 Q0 a3 W- \7 b
  89.                 printf("Input MAC error\n");& _5 j5 \1 J9 P( Q& b2 M
  90.                 return 1;
    ( g6 V( n9 ~$ N/ z; O
  91.         }; d7 T9 I1 j( N6 R3 L
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & M* ]" I  r3 l9 r' C  t
  93.         printf("\nPlease input new STBID: ");4 T, C7 O9 r) ^9 `" G4 b
  94.         scanf("%s", stbid);
    / I, P' v5 ?& F: f, e
  95.         if (strlen(stbid) != 18) {
    4 z9 z( @( P' I; A2 p! p
  96.                 printf("Invalid stbid\n");
    * d: K5 d6 s' O  B: @
  97.                 return 1;
    + j0 ^" Y1 O+ i; [2 z9 c
  98.         }
    ) n# n. ~' `" V  n
  99.         printf("\nNew parameters: \n");# N3 d" E9 ]3 q9 t2 T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, ^  `# S" B( j! Z
  101.         printf("  STBID: %s\n", stbid);/ m: x( Q% |4 A

  102. / [9 }7 b; f' w8 ^  |0 b" Q+ Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");, t3 q$ P6 z6 B* ?& }0 W
  104.         for (;;) {
    6 ?  f' a2 }$ S; P8 O3 o4 p8 ~
  105.                 c = getchar();
    " Q5 k9 E1 ~0 C9 k6 F
  106.                 if (c == 'y' || c == 'Y')0 m6 W6 k. m! u9 \! {0 r& p
  107.                         break;
    0 b  g! B/ v/ P; \* o! l6 ^
  108.                 if (c == 'n' || c == 'N') {2 U# Z  f1 @& H7 i1 q3 h) c# p
  109.                         printf("\nAborted.\n");
    8 U. t9 ~# c( J  o: B
  110.                         return 1;
    ) O2 D3 U' J  \1 W
  111.                 }
    + E1 J' g4 w1 o" b9 T& f
  112.         }' F* ?) [" h1 e) [5 F
  113.         if (writeparam(mac, stbid) == 0)
    9 k7 N1 O- m' f  Y; W( B: E
  114.                 printf("Parameters changed.\n");
    " r7 |" I8 `0 {0 `' e2 l& Z2 X
  115. 4 F. R( c# G8 U( n) l
  116.         return 0;* M8 |! f2 c& j8 V: I! `5 |6 w
  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 0 y& [/ W* L9 b( q( ~; C( w
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- y. [% t- H0 e3 _# E& z你用的编译命令行格式是什么?
5 m- s2 [( x2 e+ D! m
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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