查看: 16538|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 {8 l8 D( e  K" h9 V: X* n
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig. b: C3 C3 ^9 E8 r
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( x$ O' X- G# N3 w; {; h8 j! Dusage: himr <address> <value>. sample: himr 0x80040000 0x0* E/ w! w& y8 [+ h8 ~% o# C8 A

8 U; x- H( X! ~/ m' B
* ^# U. b" u8 h# b* I% \6 @不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; k0 o9 p( L1 S
# q: j! }' m2 U3 O6 R1 Q
补充内容 (2012-3-8 09:42):1 x8 U1 Y0 N6 O6 o4 R
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
6 d: Y: E: b6 \  q1 g这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 P2 x5 Y2 S9 K& b5 d) c% r3 n7 |" O" U- E+ ]% f; @7 G9 _: k  l
himr <address> <value>. sample: himr 0x80040000 0x0
. L# L* O) I" ~9 }1 B. q4 ^" t4 C1 K" ]+ o; s8 ~9 }+ P5 A, e4 c6 e
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 X9 d& k) G3 i  T
himr 0x80040000 0x00
3 S/ h9 W! X' C. ]1 W3 `: q8 rhimr 0x80040001 0x11( O; P% ^, X: G
himr 0x80040002 0x22
) N  T  h- P/ U$ p# Q+ khimr 0x80040003 0x33' _2 X. B; j9 P+ f
himr 0x80040004 0x44
$ c7 c; }4 O! Y/ l. _* N% chimr 0x80040005 0x55
: r$ J. M9 x$ @  C9 E5 Q8 }! z
, f% q( |8 \8 G/ M) v- Q# ISN也是类似。( p4 e# v1 D# h# S6 I- y, v

# z6 ~4 n3 ~* U( k1 L现在主要是,谁告诉我们MAC和SN的地址?1 I3 a- o2 M3 R5 Q6 m' M
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   d# e. e+ A; b
一直想找到运程修改MAC和SN的办法,苦于无解啊

: E/ @! I0 u& l% U+ j源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( B7 m3 Q1 a: {# k( Z7 w6 }2 G
, @: r8 ], s4 Q) B, s, n0 p4 p5 J
修改的代码早有了。到今天不会编译。  R- m# o9 T6 j2 r2 D$ ^
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( p, e  L4 [( V" Q5 n" @6 _
  2. #include <malloc.h>8 Q$ K. R: _) g) H  B9 R4 x, E
  3. #include <sys/types.h>1 t4 ~! X6 I8 t6 W: K8 q$ k7 b
  4. #include <sys/stat.h>+ |  U/ J6 Y# ]7 x& X% t0 z; Y
  5. #include <sys/ioctl.h>
    ! X* }4 `+ d7 P+ _1 j$ j
  6. #include <stdio.h>
      R7 m5 E6 \/ H: G! B" Z
  7. #include <string.h>7 n" u; u) S6 w7 b+ j$ E8 W( v

  8. $ ~1 u: U& e5 T$ S2 G
  9. typedef struct {
    - N1 U) m3 m9 j2 O" Y, n8 y
  10.         unsigned int        e2prom_cmd_sub_addr;* r, I5 T1 ?' E' M% N1 T3 w. Q' e* G
  11.         unsigned int        sub_addr_count;
    - a4 m6 p; v7 H& i; o# E3 ~
  12.         unsigned char*        e2prom_cmd_data;2 k: d8 \. p5 `
  13.         unsigned int        data_count;
    , l7 T5 |2 k) V8 }' e) r; N4 |4 k
  14. } e2prom_s_cmd;+ b& n2 r# h% K) U

  15. 3 X+ l! [/ w7 x7 H# p
  16. #define E2PROM_CMD_READ 18 Y, y  P- B4 ]; |. B
  17. #define E2PROM_CMD_WRITE 2; a- a- D. I; q0 i! D
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" G% Y) G7 d, W  |( Y; f& ?) F
  19. 5 f0 b+ U7 k6 e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 x( Y7 u/ L9 O5 }/ N
  21. {0 J% q- T: U# ~3 |. k7 b
  22.         int fd, ret;; g. T8 y3 a2 P" A) `
  23.         e2prom_s_cmd arg;
    5 m2 q5 w# D1 V7 @
  24.         unsigned char buf[0x18];; p' e6 V  [: _# K: k$ ^! @4 O6 d. ?
  25. 8 q$ n. [7 _$ U5 t2 }3 b) t7 B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& v# s4 l% P$ W/ S5 X
  27.         if (fd  < 0) {! |2 ?; Z& _! \; `( S
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , t. O' \; C2 t, `+ ^4 l
  29.                 return -1;' K( R! |0 u7 B* T9 s2 s& }& t7 \7 B, W
  30.         }, B) A' [/ {( |6 W
  31.         arg.sub_addr_count      = 2;) T: `% e: D. F/ p2 }
  32.         arg.data_count          = 0x18;
    9 Z8 `( \# s" b/ L& a9 S# v0 A
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 X8 r& S! B& M5 y# k( K
  34.         arg.e2prom_cmd_data     = buf;
    , z, }' Y! i6 d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : }; M% S) m9 b
  36.         if (ret != 0) {" v! J/ t! g5 t: ^( A+ @* U, y/ v# ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);) l/ P2 i2 E$ @! L" e
  38.                 return -1;" M0 }. p4 E  I1 L4 S5 T
  39.         }2 ?) t' I$ w6 }
  40.         memcpy(mac, buf, 6);
    4 r# v- @! Z0 R* @3 m
  41.         memcpy(stbid, &buf[6], 18);
    ( P- E6 O9 @& V! K5 u
  42.         stbid[18] = '\0';
    - [* w. H; ~3 @8 A7 _6 s& D

  43. 8 `: @- l" c0 Q( S
  44.         return 0;
    1 o6 `8 T& n3 w; K# L/ r- \5 j, k; t
  45. }4 V: ^- D' r' e' D

  46. # j0 I7 D* r+ d5 Z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 u1 H4 B& R2 m5 M9 R
  48. {
    % Z* a6 `2 D! X; L/ z+ n% f
  49.         int fd, ret;
    9 c+ ?$ r; f4 k( @4 I
  50.         e2prom_s_cmd arg;
    # {/ B9 _( Y# h
  51.         unsigned char buf[0x18];
    4 F; M9 `4 x; V9 b
  52. + q9 W1 f3 F: [& l9 [
  53.         memcpy(buf, mac, 6);$ d6 s2 @, K9 b
  54.         memcpy(&buf[6], stbid, 18);
    0 W9 Y9 C1 A; F% i, _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 z1 D% \+ n& h: D7 ?- u
  56.         if (fd  < 0) {
    8 f% J0 G. ?! w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - T0 Q# @5 b% v# P
  58.                 return -1;9 N9 l4 M2 s: I. A
  59.         }
    7 B' F1 `8 p# @1 u9 l( L
  60.         arg.sub_addr_count      = 2;4 O3 v, K; l' ]. T4 e; k) v
  61.         arg.data_count          = 0x18;
    % V) b5 y) S2 m8 @) u' }4 g
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 W& ^: a1 C5 e/ u, M
  63.         arg.e2prom_cmd_data     = buf;
    % E' e1 o$ m4 v. _/ h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 u( U# d9 j, H& D2 p! l% O; Z6 x4 V
  65.         if (ret != 0) {. r% r7 l$ r. l, ^5 n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . ~7 b' a$ c4 D# K8 Z0 w: I" |4 b* P% {
  67.                 return -1;
    - L% g, f9 t; h. g5 B3 U) x
  68.         }
    " l. h, g% I1 E3 H
  69. . J  e6 {; v8 P' F# p. r6 }
  70.         return 0;  R7 t- v) @6 R. X; O# K
  71. }
    , p! ^' c* C# `  b( d# {

  72. 0 J' o4 G0 w2 r8 V& f
  73. int main()4 F' j8 `# ~/ Q4 |
  74. {; M0 B8 |1 X* M4 D6 U  i
  75.         char c;* I' @* b, }& d- }2 x
  76.         int i, macs[6];* u9 c; x2 ?: z- R  k
  77.         unsigned char mac[6];; k* t" B1 f2 k+ s
  78.         unsigned char stbid[256];4 o' T3 [# q( j- ?! P
  79. 1 A. s2 i2 c) n, P# {
  80.         if (readparam(mac, stbid) < 0)
    ' C3 `  t( C% \- H8 @3 B
  81.                 return 1;, v/ V' p9 f5 i* ]0 }5 S) U
  82. , N% W  U* l, S, C$ f
  83.         printf("Current parameters: \n");
    6 N8 j% h8 @/ ^7 I0 K0 i. h0 a  v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 f' X; a0 D8 J! B- T4 H# a
  85.         printf("  STBID: %s\n", stbid);! T9 i; U4 k- E9 O
  86.        
    + ?9 D# s. R$ w: b6 Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) u+ L' E' C- G( I. h) p. E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    1 e$ H9 j; L/ u4 t( H
  89.                 printf("Input MAC error\n");/ j0 g/ |6 K5 W6 n3 h  t
  90.                 return 1;
    4 Z5 }8 c3 j$ \9 m2 @
  91.         }
    4 A: f( D0 V2 P/ ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # p; z( K! ]' _+ \& E' K6 U7 X
  93.         printf("\nPlease input new STBID: ");- n1 H1 k5 l) P8 u" ^1 C
  94.         scanf("%s", stbid);
    0 \3 s1 H% _! q4 N' |
  95.         if (strlen(stbid) != 18) {
    3 e6 h2 @5 l2 R
  96.                 printf("Invalid stbid\n");8 l( D% i: _0 \
  97.                 return 1;
    : a: ^5 t8 ?, O/ w: F% \- w
  98.         }$ U3 \4 N! [6 n9 Q* w! D7 E
  99.         printf("\nNew parameters: \n");" E7 A2 `1 G% j' ~7 D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # C' H8 s; B7 O& i
  101.         printf("  STBID: %s\n", stbid);
    ) w$ o  e$ P1 L. X% }. b
  102. / V2 J! A+ J3 v) T2 ~& o4 P
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 U5 G8 u' U' z4 ^
  104.         for (;;) {3 k+ r7 L3 z0 s$ h! O5 I$ i
  105.                 c = getchar();( F% l' a3 J, {5 h1 B! S
  106.                 if (c == 'y' || c == 'Y')
    / e4 w+ n( j, A2 `6 Q2 b
  107.                         break;
    # o+ p! e6 \  V: X3 u+ P# r4 @
  108.                 if (c == 'n' || c == 'N') {; m/ |$ m( ~8 _
  109.                         printf("\nAborted.\n");
    0 S9 ?, O0 O, K( \
  110.                         return 1;
    ' q" q5 b) c9 {
  111.                 }% B; q. A  C: K# Y0 H& b
  112.         }
    ! T# s9 t3 C, Z: V; V: J2 O
  113.         if (writeparam(mac, stbid) == 0) 0 H! a6 V2 m, @+ L8 ]7 e
  114.                 printf("Parameters changed.\n");/ N7 e  }0 X2 f: ~1 g
  115. 7 Q; @9 V4 ~7 k& J: U
  116.         return 0;; T- w) o, \* E5 h
  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 * l' J5 [/ w4 E- {6 O2 {4 u1 R! N/ o
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

$ _, s9 G( f5 {: w你用的编译命令行格式是什么?- d$ h) `' t8 I; K
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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