查看: 17082|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) [- f2 a0 ]/ f- _5 I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . S* g# b9 u" Z( {6 _( Q) e# k0 [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:5 ~: k' a4 T, e0 O1 G" g& E
usage: himr <address> <value>. sample: himr 0x80040000 0x0
) @5 x. _) E, E0 y7 ^: N. C0 A7 q- g6 E8 i; ]" Y; N- C
$ {: w. H' a  \% t6 U
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. X. C  a$ n" a4 q0 j6 v9 J

0 T8 O& h1 W. V; a& d补充内容 (2012-3-8 09:42):
- u  k- d6 y7 J! ]9 Mhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* B& ^+ \- G# W6 a( V这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。) {7 v1 F) v6 C7 E2 v  R
, t/ ^- y/ ^  c
himr <address> <value>. sample: himr 0x80040000 0x0$ H0 z2 o0 V9 I% ~
* u) q$ s3 a/ R# g/ B
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  b& }  G) N4 @) @0 _) {1 F0 l
himr 0x80040000 0x008 j: s2 U: f$ e9 B) H1 C" f
himr 0x80040001 0x11
1 A# z' ~! S2 e  s7 Nhimr 0x80040002 0x228 M7 r: ?9 g3 \$ v4 P" A
himr 0x80040003 0x33
$ X2 d" x- ]3 s* K7 q0 }$ chimr 0x80040004 0x44
9 U; ^7 b$ Y" ?( X# \1 ~himr 0x80040005 0x55# i0 o( \6 R% _8 X1 w. L+ B

1 T4 R, z) ~6 aSN也是类似。# K" C5 ~# w7 H$ b! V+ D9 ^7 H
1 i+ D: z  y  r' |) q
现在主要是,谁告诉我们MAC和SN的地址?
( G$ I* f9 S) p7 S
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ r$ _' ~' v- J* M( g一直想找到运程修改MAC和SN的办法,苦于无解啊

6 {0 H) z. v! Y6 a( C源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 P0 O' M% p. c& _% E9 M3 f/ w9 f  o; }8 t4 u- w9 R2 o
修改的代码早有了。到今天不会编译。
. ^1 c( P8 T& @' N需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # m$ A! Y5 k1 D
  2. #include <malloc.h>8 d5 L% J' K; T$ P" @7 a, V
  3. #include <sys/types.h>- W# D( q6 L1 @! o9 a
  4. #include <sys/stat.h>: J. M2 R3 p4 t. k3 n' n- q2 h; |
  5. #include <sys/ioctl.h>
    " W$ |- V! h  t+ D5 f+ k. b
  6. #include <stdio.h>' I% R6 T" n  U  c! z9 _
  7. #include <string.h>1 `9 D( F! w7 V

  8.   ?! ~2 S, A; I7 I
  9. typedef struct {' D, a% C0 k+ U2 C, m* `5 `. J4 @: j
  10.         unsigned int        e2prom_cmd_sub_addr;7 u! Z: G0 t& _
  11.         unsigned int        sub_addr_count;1 s' o" ^  F# d
  12.         unsigned char*        e2prom_cmd_data;# K+ q& P& D0 Z- X% U8 {6 Y! X
  13.         unsigned int        data_count;( v" t. k8 o3 a6 c4 _4 I2 F
  14. } e2prom_s_cmd;1 R6 h0 w0 W& `$ K# b

  15. + f" c5 b. X5 |, P' _
  16. #define E2PROM_CMD_READ 1
    - h" v! ^- A3 B8 }- n/ {7 p. \
  17. #define E2PROM_CMD_WRITE 22 v. ^% O4 Q8 R5 f+ a7 k, ]# b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 Z) j, O- T' f* P8 n& B3 c" d

  19. ( H# s, h$ Y/ e2 B# q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & y* @$ s$ S& b3 u' t3 ^
  21. {
    / q6 }. l% J( z; K! Z
  22.         int fd, ret;( u1 M3 i0 O' m4 Y* ]
  23.         e2prom_s_cmd arg;/ i" }% H* N7 M9 v) W% X) w
  24.         unsigned char buf[0x18];: X7 I4 h# A% x6 O8 B
  25. ( `. J. x* K; d3 d: ^* ^
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# s4 _- V9 Q* m6 R7 A
  27.         if (fd  < 0) {4 u# X/ h! b3 u# |: j& s$ F
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- S1 P* n' }1 Y) _7 W5 m
  29.                 return -1;
    $ W7 h( [/ j) p. J
  30.         }
    8 ]7 `/ K# M* M: g, B' `
  31.         arg.sub_addr_count      = 2;  |  z1 Q% o2 \! {1 ?# R5 c* g
  32.         arg.data_count          = 0x18;
    6 n, v8 Z. Z! F' F! ~( E. o
  33.         arg.e2prom_cmd_sub_addr = 0x290;* h3 s5 k, _3 x( ]1 j" ^
  34.         arg.e2prom_cmd_data     = buf;: Z; t$ P! J: L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);; E7 I3 u8 }* D/ d: _& r5 d
  36.         if (ret != 0) {
    8 h# ^$ o+ b' G" b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);% j) R" B% ^8 o0 P: a, n
  38.                 return -1;
    2 C9 X) r- J; }: j8 a: o0 r
  39.         }
    $ a" z  }  _$ [, A, P; g
  40.         memcpy(mac, buf, 6);$ L( \/ b0 W, @: Z4 h, P9 ]& _6 Z
  41.         memcpy(stbid, &buf[6], 18);
    3 f4 b, A; G4 F" e7 O  J7 f9 r5 \
  42.         stbid[18] = '\0';& a, {, ^" `; c! Q4 H- d3 @
  43. 4 m# c2 s! Y/ u  H! C0 P/ |
  44.         return 0;6 @7 M' f* W; o
  45. }
    - |9 W% S' S! t9 Q5 l# |3 I. d$ X

  46. - v- I1 z) H: W1 ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    8 J7 r4 U  l+ O$ [" l
  48. {5 H7 o6 {" l0 a
  49.         int fd, ret;
    ' ?; n+ `: W' j
  50.         e2prom_s_cmd arg;" ^$ X9 ^/ }3 p6 A
  51.         unsigned char buf[0x18];
    ; M: Z# O+ d: M% I

  52. 9 {! H' s! D) P3 @8 a
  53.         memcpy(buf, mac, 6);) ~7 D# g2 I. @: D9 y8 e8 C
  54.         memcpy(&buf[6], stbid, 18);' N' u! t- q' f7 k$ @* j9 _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . B7 ?- G6 A+ ~6 z
  56.         if (fd  < 0) {+ R. @7 e" C, v# U+ J0 A; j& n% D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / y1 T0 p7 ~0 V; h% b6 x
  58.                 return -1;, }( l9 u5 |! m6 d* j0 ]3 `
  59.         }/ |$ M2 E  U7 T2 o
  60.         arg.sub_addr_count      = 2;8 v# F+ A( v6 z- G6 V$ p* N
  61.         arg.data_count          = 0x18;# U5 A  M! ~0 Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # A. b6 Z, \0 T% s! y) p1 v; @  a/ @( H
  63.         arg.e2prom_cmd_data     = buf;0 g6 Z1 n  B! x9 o7 t8 q+ F
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' `8 e1 g" J) V+ `& N
  65.         if (ret != 0) {
    ' l* {* G7 Y, i" _9 p7 r/ x+ a/ e
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ [5 a9 b% H, o) P, N3 s* M* W
  67.                 return -1;
    ; H2 G+ H; j) @8 {& Y) b
  68.         }
    / E& `. @3 N/ E& q

  69. ! e* A9 Y, R4 l0 P& S7 O
  70.         return 0;
    $ D. z' x" [9 w+ K' H  c
  71. }! ?! R7 G, W! ]( Z5 \! [% ^+ _

  72. $ {' H' z8 h+ a+ K' G% O, F+ V2 _$ O
  73. int main()% v+ ]' q; N0 T: i' x7 k3 l: U- O6 b
  74. {
    7 L! N( t; C5 @: G/ J# ]
  75.         char c;
    9 b1 a, ^3 A. Z( E7 I# `
  76.         int i, macs[6];; x. Y5 V4 \6 j& o" P' I- g; D
  77.         unsigned char mac[6];. b7 C" P: x0 f5 q
  78.         unsigned char stbid[256];
    * W4 K) ?( c& O) V9 _  u
  79.   I+ I* `# l- J" X* S; H  W* S/ v: l
  80.         if (readparam(mac, stbid) < 0)
    * {& S( n* L( t" T
  81.                 return 1;
    ) A: I: s8 b# D8 l

  82. ( r) r" X4 S2 S5 r+ }+ E6 }
  83.         printf("Current parameters: \n");
    6 c: @6 Q* j& v  e! w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 ^- p2 A% n7 _( w: }5 F  m0 c
  85.         printf("  STBID: %s\n", stbid);  N8 }7 v; l/ c, Q8 t4 [5 Y+ B
  86.        
    , ]4 M  D, x0 C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    0 X  g# s/ A2 }. O
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 E" U0 o) e9 b* D
  89.                 printf("Input MAC error\n");
    : c+ P5 p- f6 Z7 v; k  Y) U
  90.                 return 1;
    & T7 d. j# |- m- w: A' N
  91.         }
    7 [) n! X/ j9 `. J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- z! H  b+ e' R' E
  93.         printf("\nPlease input new STBID: ");$ Q- g0 }/ {$ W4 B& j1 C
  94.         scanf("%s", stbid);
    $ {( C3 l$ ~: U
  95.         if (strlen(stbid) != 18) {& E- w6 s2 C$ `: w! Q
  96.                 printf("Invalid stbid\n");3 c' A! }( b& `
  97.                 return 1;
    + u3 n5 Z6 D  s7 x# p
  98.         }; M" B1 ^5 Q( l* b9 p7 K
  99.         printf("\nNew parameters: \n");, }- S- M. i# S; w* }! ]2 D9 B! T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 x( }' Y1 q9 u: G- t0 T% Z9 g
  101.         printf("  STBID: %s\n", stbid);
    0 S7 N+ \; T# f! F+ z$ H% _

  102. ( u: v2 o/ u$ b' f7 a' x
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 q* @6 D, T" u/ C; P1 [/ a
  104.         for (;;) {
    " S) O1 Z. \  N. N4 O) u9 k4 V# f
  105.                 c = getchar();
    & Q( Q% k1 p) K! H* ]" y6 r
  106.                 if (c == 'y' || c == 'Y')" ?: l/ M3 j( @3 r! m, |
  107.                         break;) r) M7 {8 M" b% T
  108.                 if (c == 'n' || c == 'N') {
    2 x$ @0 C$ b) J! l0 ~& m7 N
  109.                         printf("\nAborted.\n");
    ; v9 i; q0 H' U% B
  110.                         return 1;
    8 J- t! X( n( r& L8 w
  111.                 }' U# w% n  x; n( Q, M
  112.         }
    , ]! w5 D( V2 i/ i
  113.         if (writeparam(mac, stbid) == 0)
    2 d" e0 Y0 E) h: }9 `+ M0 j
  114.                 printf("Parameters changed.\n");' l/ q5 ]' ^* w  H8 N/ O) _! q( c

  115. ( o* F3 _9 I* h1 z) w( i2 m0 F( P
  116.         return 0;7 X0 i) V1 j0 L0 o/ a7 \
  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
9 }9 p8 j0 U4 r8 |- L在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; i5 q5 S# O0 C+ h6 C7 T
你用的编译命令行格式是什么?% a+ s8 t) I+ }% k4 j5 s
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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