查看: 15948|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' [) j7 ^1 Z: t
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 [! f& H. D9 K, ^% R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ k7 t6 `" i( W* |0 l! ausage: himr <address> <value>. sample: himr 0x80040000 0x0" Z( o) d, s3 |. [9 ~1 o
/ j9 B" W; i- s3 A
) q8 X$ I7 {0 M0 w* U$ Y& s
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& e3 o0 c9 O" r# R% F2 Z
( z. Q) f+ }" y
补充内容 (2012-3-8 09:42):! r8 d" {0 O' M. l* D7 Z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  J( B/ Y8 W1 t2 r这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。0 Y" T( _1 u4 s! p4 V
' s- ~+ @/ ]6 \
himr <address> <value>. sample: himr 0x80040000 0x0
; i5 c2 g- j- k( i) E% Y: o
* T8 {; p, ^4 p% R7 c: ~例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) D: [7 Q# \; n* @
himr 0x80040000 0x007 ]$ B; ]. \6 c! ]! H9 F
himr 0x80040001 0x11$ Q$ h; {! O$ k6 s- h5 z
himr 0x80040002 0x22% x4 _0 V! H4 v+ q
himr 0x80040003 0x33
2 X+ a/ j7 S( ]6 S+ ?himr 0x80040004 0x443 q# E9 ?# J# {# ]2 r+ G' w2 x
himr 0x80040005 0x55
# L3 `5 ]) x. w, W9 c4 I% l7 ^& I8 g# _) b4 q8 v
SN也是类似。
8 p0 v" e, [' |$ {* |* F3 j
; x/ H9 @% r4 s/ B现在主要是,谁告诉我们MAC和SN的地址?7 y; T8 R, b$ G: s1 g6 ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. w: k% Q1 P7 s8 y一直想找到运程修改MAC和SN的办法,苦于无解啊

; I: ~% l* _, v6 T8 s9 o源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* X/ O  l/ O3 l$ v
# a7 c8 \& X. h! Q7 c0 ~修改的代码早有了。到今天不会编译。9 j: z! d$ F3 L' J( `0 g) ~
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ D, R$ c- h& e4 _$ e$ Z* z) V
  2. #include <malloc.h>0 p* J- m% Z- \7 S. ]0 e' S$ r6 d
  3. #include <sys/types.h>7 V1 h1 t+ t: u+ a' L7 {
  4. #include <sys/stat.h>8 M2 p2 `# S) t2 _! ]
  5. #include <sys/ioctl.h>. L  `8 u7 l8 I& J# w9 _2 c
  6. #include <stdio.h># c+ I8 W/ Q+ F0 T0 e/ |2 C1 a
  7. #include <string.h>7 g( K; {9 r  r) @+ P9 K  B

  8. ) Z6 s# \! t" D- G+ ~( f. _0 g
  9. typedef struct {! m( h9 A5 ^, T3 M
  10.         unsigned int        e2prom_cmd_sub_addr;" E8 P2 t, t* P
  11.         unsigned int        sub_addr_count;6 Z1 H! Y$ |4 R! Z" J; b! C6 ~+ ~
  12.         unsigned char*        e2prom_cmd_data;  u$ o- v- P: [# E/ z# X5 `
  13.         unsigned int        data_count;. ~( C8 ?6 f- z* H7 e
  14. } e2prom_s_cmd;
    * p! T! C& I2 @, S7 p) e

  15. : A% G9 s2 Y1 L: ~  l
  16. #define E2PROM_CMD_READ 1
    ) p2 P# {6 h. |' B* h# i) F
  17. #define E2PROM_CMD_WRITE 29 R. Z* e1 k7 b% P8 L, }5 ]
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16": t8 V2 D( z! G) s5 l

  19. & v- x" z% ?, ^! Z9 r; y% j% V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)  {' T( R3 U# l9 R& z
  21. {
    $ k# u. k5 \! o- \1 l
  22.         int fd, ret;0 D0 x0 T# E) G% s) {/ O
  23.         e2prom_s_cmd arg;
    5 [1 Y4 i2 j4 `- v2 L% `
  24.         unsigned char buf[0x18];
    " k& d$ b0 H2 w- x1 F% M

  25. & s# _. @2 l; ?  r2 e! i. o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 J) ]4 j7 A- `0 `8 h/ u0 X
  27.         if (fd  < 0) {
    . f4 R' @5 M6 s* ]. x4 m5 L1 s) c8 R
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & G/ W/ F& Q) X: c  C3 ?/ E
  29.                 return -1;
    " p% Z2 Q' p5 h2 i
  30.         }/ |- g) V2 H- h* b
  31.         arg.sub_addr_count      = 2;
    9 x2 w% v0 P. I3 w' P& \4 A
  32.         arg.data_count          = 0x18;2 S! l  J  j  ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;# K9 ~' I. w7 x; u; D
  34.         arg.e2prom_cmd_data     = buf;* Y- h+ \8 g; y) z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 f2 W$ Q2 c- n; H
  36.         if (ret != 0) {& k0 S9 ^" d0 M- z1 p! Q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " C( S# s8 @3 }. B# N' [6 y
  38.                 return -1;
    : n' M+ h$ P/ \, q
  39.         }
    $ P0 Y1 z0 w& ^
  40.         memcpy(mac, buf, 6);0 C) _* \* N/ p8 a; C( u$ B
  41.         memcpy(stbid, &buf[6], 18);- J' U3 ?1 R1 K; P+ x, J% c
  42.         stbid[18] = '\0';
    * s5 K+ k9 ^8 Y4 b+ f  s8 m! g# C: n

  43. 0 w& n) [7 w4 P" C0 F+ n$ ~1 Y
  44.         return 0;
    : I3 m! u' f" r! R* p2 p
  45. }; j5 m/ i8 O# h; b6 f

  46. % q2 p; m9 @5 I0 a/ |' l# W& w* t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * q% n5 e6 m$ O/ Z8 S
  48. {8 a; Q$ t3 s( {, x, k
  49.         int fd, ret;, R2 ~# E+ C) s; j( K$ J3 W
  50.         e2prom_s_cmd arg;  T9 J3 M4 u) Q6 K
  51.         unsigned char buf[0x18];
    + @' `% L  D$ F6 Y- d7 F7 Y

  52. 1 N0 s  K5 }& h1 [
  53.         memcpy(buf, mac, 6);
    , G; I9 Y$ n. x. d
  54.         memcpy(&buf[6], stbid, 18);# ^+ M2 \! [4 I' |, ~2 {6 a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 f% [2 A1 p' u
  56.         if (fd  < 0) {/ N! }5 y* A/ g; @+ h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( `0 R  I  o3 Z0 _0 E. |1 n$ R. |
  58.                 return -1;) c2 l& w/ H! U" {
  59.         }$ [7 w1 W, B* z) m( E3 x/ }- ^! M( m0 K9 J
  60.         arg.sub_addr_count      = 2;, T" e' v) |+ H, B
  61.         arg.data_count          = 0x18;
    " f4 Y/ U* v! X( V+ L; X
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) G1 ]: @- P0 Z, X
  63.         arg.e2prom_cmd_data     = buf;
    3 z) n& d/ x8 [# V5 C0 N3 `: {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & N  V0 {" V0 Y; ^
  65.         if (ret != 0) {
    / ~: Q% W1 u& l1 ~$ V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 ~1 g7 X9 X( O: a
  67.                 return -1;
      B, f: Q. D- B6 n# P  G
  68.         }
    5 x* }. M' ^4 W; g( z; i& R3 i
  69. - [0 d# c, k9 _, a. `
  70.         return 0;0 V5 _2 Y" F4 Q  M2 y
  71. }
    , N$ G) K2 |4 P! @: _& v
  72. * j8 n; A, o/ O) O
  73. int main()
    3 E' x- H& n& U- A
  74. {
    * N3 G+ N  o4 U( G5 p5 |% C
  75.         char c;/ v0 t/ J8 `) `- h/ Y$ f4 y! ^
  76.         int i, macs[6];
    7 X4 q; ]0 M1 q0 d
  77.         unsigned char mac[6];
    7 |% w7 _: I. f3 @  P" G% d: H
  78.         unsigned char stbid[256];1 W0 E- A9 z4 d! O  A% N8 r( U4 b0 W
  79. 6 u3 g/ J& X& \) i" c9 U- {+ M
  80.         if (readparam(mac, stbid) < 0)
    6 R, h  G" v# n. h5 Q
  81.                 return 1;0 `8 G7 l4 }( F9 F! v4 v+ @

  82. ( z: ~- U. z! L, p, a. ~- e6 T
  83.         printf("Current parameters: \n");- a1 Y/ M3 @' k1 s! K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 Y0 w% U; K" i) R  l5 m/ j; K7 Q
  85.         printf("  STBID: %s\n", stbid);4 g4 ]2 o: Z5 O* R; Q/ L7 f
  86.        
    1 H' {+ Z- [0 [5 ]
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      I- A4 u) |6 `& r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + z0 {' I% s9 G% O( ^
  89.                 printf("Input MAC error\n");
      ^, d/ S: S% q5 R- ^5 x
  90.                 return 1;
    * y4 |& q! _5 j- `! L1 M
  91.         }0 T4 c, `, p; O% C1 \0 d! C/ d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' h& q& C' {2 e6 e- H8 R; J
  93.         printf("\nPlease input new STBID: ");. h3 V  l1 I, }$ |  z# q
  94.         scanf("%s", stbid);+ F% j+ [( T9 y6 F
  95.         if (strlen(stbid) != 18) {
    # B! |* Y+ D/ y' E/ \2 y3 l1 @
  96.                 printf("Invalid stbid\n");( O  }8 U: D& G
  97.                 return 1;
    ! c. o1 i0 Y: r/ R; N6 q2 a6 _
  98.         }
    2 i* B( s; [) ]( S3 F
  99.         printf("\nNew parameters: \n");
    9 x5 ?* V- u, C# t
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" p$ X& `) m0 U3 {8 t) K8 g4 `5 u
  101.         printf("  STBID: %s\n", stbid);& O. }' o+ w' k) ~( N2 k2 j: a

  102. 8 D' X8 `; y# I( t6 ?3 ^
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( N8 O7 S8 I9 Z! F3 j
  104.         for (;;) {
    : Q: a4 O, C8 J" |" S
  105.                 c = getchar();& W) g7 l& [5 g1 d1 X8 W9 ^
  106.                 if (c == 'y' || c == 'Y')
    / x" H; C  U" `. G
  107.                         break;2 o- {4 e8 C8 m& L$ N" b, S: \
  108.                 if (c == 'n' || c == 'N') {5 v4 N' ^' H7 h. j
  109.                         printf("\nAborted.\n");' y; ?1 i1 V1 p0 |$ ~
  110.                         return 1;
    7 |0 h( H: n5 j* _( L
  111.                 }; y: W9 }8 u) |% b! M# W
  112.         }
    . \! ]9 _' k5 N. ?; [# i6 O
  113.         if (writeparam(mac, stbid) == 0) . G+ R: R% w8 [# J( {
  114.                 printf("Parameters changed.\n");
    $ J6 ]% ]$ Y& c# x/ V; F

  115. 4 q$ J$ x7 y+ ?' G: C
  116.         return 0;
    7 C0 L9 b: z+ a. e
  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 5 [/ j' y+ i# i/ H+ R' k7 p
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
, N/ G3 n, `2 Z9 l9 Q
你用的编译命令行格式是什么?1 B  A" Z4 g$ P, n% k% h$ Y: x4 U5 M  B
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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