查看: 16881|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr7 B+ @3 _6 ]0 F8 g! ~& v$ a! X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - [( \' H- [( e* ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' H6 X/ N* ?) f. V& S6 O. u) t- L
usage: himr <address> <value>. sample: himr 0x80040000 0x0
# [% x2 g& E( C" @  q' X. y0 D

9 K' O+ U! X, G- Z7 c不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
2 v, [' ]$ L. G$ g
% g. p$ O8 ~4 `7 ?补充内容 (2012-3-8 09:42):
& J( X3 i* N3 u# \8 A# U; j( W) @http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% F+ ~) B$ @) f$ E& g9 I
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
( @: G6 Z$ s% t6 Y9 A; Y' S0 q8 ?, m6 M; w) i
himr <address> <value>. sample: himr 0x80040000 0x0  q  G6 ^# z3 H% f% z! M* f9 X  J1 @; L

$ W/ I5 Y; b+ L; B* e; O例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
+ p' f$ z6 W, [, C- Chimr 0x80040000 0x008 e5 M5 {! [$ \/ j
himr 0x80040001 0x11/ @) i( \* F" j3 G1 a1 Q
himr 0x80040002 0x22( U) G) G2 P: s2 P& G. x
himr 0x80040003 0x332 a. m, ]0 u: o% ?' t1 P4 z
himr 0x80040004 0x44
  W) Q4 s2 H4 W& E0 S- J% A/ xhimr 0x80040005 0x55
9 I" |( a/ N! h# |+ {0 G) t2 j# L- m9 k6 m; S* {3 |# w* t! H
SN也是类似。
: ?/ w& j( H' C
2 C6 K3 k& B' N5 i; |5 k现在主要是,谁告诉我们MAC和SN的地址?" P5 z. M0 C5 C( E( o$ M, J
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) @7 I2 t5 z& `/ n+ B! a( q* c9 o一直想找到运程修改MAC和SN的办法,苦于无解啊

- q- l* U- B! ^4 w源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ A4 p& H3 _) P3 D9 s5 u% O9 l' {# W  m: W) {5 c# y0 ]3 \, ]; [
修改的代码早有了。到今天不会编译。
! j0 a1 g) |$ n8 A需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; T3 r# X( W/ a
  2. #include <malloc.h>7 O$ q- h" B( w- W3 p* Z. \0 w
  3. #include <sys/types.h>$ A2 {& n' {* H/ A7 Z2 V8 D0 `
  4. #include <sys/stat.h>
    8 Z5 B( L; b, a- G5 y* I" f
  5. #include <sys/ioctl.h>8 [  {  j& k5 p+ B& b
  6. #include <stdio.h>
    1 V$ j1 {3 g4 z1 P) k( f8 ]
  7. #include <string.h>
    " [/ t% r; n, w  \* ~3 g1 x' w
  8. 1 j( M- z2 f9 ?$ R- ]) Q" x! [
  9. typedef struct {
    6 ]# ~3 ^! K9 L# w: i2 W; V
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 d8 w4 C, O. {7 _0 ^
  11.         unsigned int        sub_addr_count;
    4 N3 {! X, c' h( T; M$ S7 v4 N
  12.         unsigned char*        e2prom_cmd_data;3 G3 J% r7 u. P/ F* R' T
  13.         unsigned int        data_count;
    3 g* p. h; e* b+ h7 p( r. U
  14. } e2prom_s_cmd;
    2 P  ^" x2 Y& _5 |/ ?* j
  15. $ \# H, C4 l. w' X. b
  16. #define E2PROM_CMD_READ 1
    8 h2 R( ?+ o* |: W5 o
  17. #define E2PROM_CMD_WRITE 2
    5 v: r8 j2 a; `1 Y& |' K# d  U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 E: u; K9 k! p% [& T6 Y, @+ D

  19. # y4 @  H) W6 I# ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid): k0 F2 p# k9 }* p
  21. {& p; d% ?3 q) h, P
  22.         int fd, ret;
    9 ?, ~& D2 q, q
  23.         e2prom_s_cmd arg;
      Y4 o/ N7 W8 s# T+ s! |/ a# \- K
  24.         unsigned char buf[0x18];4 w6 [/ C2 h, F/ P9 g
  25. 6 S. I; w4 O1 {3 G0 m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' Q+ M; {3 U. O1 H  d- x$ O
  27.         if (fd  < 0) {% N/ B& \, E/ o, J% Z: d2 i) g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 T- R. a' ^3 o& P* T( q8 l" {1 o! G
  29.                 return -1;
    : w" ^7 O  U" a
  30.         }2 b: p2 Q( q: x/ }1 A3 Y
  31.         arg.sub_addr_count      = 2;
    $ o  \+ ?# \5 _% i
  32.         arg.data_count          = 0x18;. [5 _9 l5 z& m6 G' m
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ x' I- p% R  W. a, }9 E3 K
  34.         arg.e2prom_cmd_data     = buf;
    - \+ q, ?2 |1 N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # P  h4 {9 [9 H$ c% n6 c* p1 r
  36.         if (ret != 0) {8 h# x) s1 }9 a: e( h! Z: C6 e
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # N1 d* c  \' w( \) }
  38.                 return -1;
    * P4 A. M; a- G- Z
  39.         }. R, T5 N, L0 ~; y+ ~4 ~
  40.         memcpy(mac, buf, 6);
    - ^) T9 l7 l) f1 V, S$ [# ]# B7 g& b6 ]
  41.         memcpy(stbid, &buf[6], 18);
    . T2 j7 N- I& d( `  w# t) B; R6 P. J
  42.         stbid[18] = '\0';
    8 O) K/ m' O  n8 X
  43. % o; V% o; [3 E, j( T8 ]6 w+ j
  44.         return 0;  o" t% O  X# W5 J& J) ^4 l. t
  45. }- I7 I7 `0 `+ j" C3 G4 h

  46. / v* P! T1 {/ i! }; ^
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 L9 l# d5 g3 m
  48. {# O' H: ~, w) K* O
  49.         int fd, ret;
    ; U8 ~6 y9 r) h* }4 s- g( @- Q4 W
  50.         e2prom_s_cmd arg;1 \- z- k0 a7 z) v
  51.         unsigned char buf[0x18];% |8 |. b7 s) |- A% ?
  52. 1 O7 b" ]0 v8 Y- b0 G" x
  53.         memcpy(buf, mac, 6);  c3 |0 C( v$ r! ]7 {
  54.         memcpy(&buf[6], stbid, 18);
    ) V8 e3 m  y+ w, G- A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  D5 h8 l1 N* T6 s
  56.         if (fd  < 0) {
      f- F6 j4 `( r3 q- G) n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * ?4 G$ M# `, L0 m. A
  58.                 return -1;+ o; j2 h; p; x9 y( ?
  59.         }
    , a  @; G# o+ S6 ^9 Z- S% o
  60.         arg.sub_addr_count      = 2;6 j: q( _! ^' I: p
  61.         arg.data_count          = 0x18;' Z1 X  h8 w+ o1 P
  62.         arg.e2prom_cmd_sub_addr = 0x290;# Z. n" c4 A* `8 v4 y4 W) t, ^
  63.         arg.e2prom_cmd_data     = buf;
    : u3 A+ [0 _8 S# o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( v7 ?6 o6 J4 {$ j1 c7 L
  65.         if (ret != 0) {
    ; b; i( i' J: K( v$ ~: A3 p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 j0 n6 n! ^$ [, c& D' |; e- X
  67.                 return -1;# t( n; a+ z) S/ ^2 H
  68.         }
    9 r/ K9 N0 K1 d7 t. R( r" ?
  69. 0 R, {) P6 Q. P
  70.         return 0;2 G8 a' f1 {+ w1 q+ z1 e- F
  71. }
    # k4 h6 N' R$ S. q0 X* x  n

  72. 8 k4 A8 t3 G; t) N/ H+ X* q
  73. int main()
    0 B) T. h9 l/ U2 @6 t
  74. {' h7 E# }% L- y: ^2 R
  75.         char c;7 ]: P: ^: b2 |1 Q& W  T( e0 j; o+ W
  76.         int i, macs[6];
    - [( Q4 q& W, j. F) m. P
  77.         unsigned char mac[6];
    : X9 H- A& a: V: M( T
  78.         unsigned char stbid[256];
    8 x- j# f" ?. [  N) |
  79. 6 `/ a" _' m2 m. g, d, S( ?
  80.         if (readparam(mac, stbid) < 0)
    8 G! N) r  y$ _
  81.                 return 1;& H& d' j/ C5 I* J
  82. 7 _" G/ b) P# u" S
  83.         printf("Current parameters: \n");0 ^# D4 `  X, k& E0 O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- @3 K) z5 J& I
  85.         printf("  STBID: %s\n", stbid);0 x( ]9 \, \  r1 e
  86.        
    / ]5 D/ t8 j/ ^" a
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, ^' d+ H5 [0 L* f: z; ?( }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  J/ H" ?: ~* `% K) a' _3 l4 D- w
  89.                 printf("Input MAC error\n");+ _( p/ h$ S0 f: l7 _7 u
  90.                 return 1;
    4 |) Q6 Z8 L) r, }( J
  91.         }% q+ ?6 e! l0 y( @( }
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* M. V5 L; ?( w5 w3 y4 g; |' \+ B
  93.         printf("\nPlease input new STBID: ");3 h% k/ ]" t; F- y& d" U
  94.         scanf("%s", stbid);9 D0 h5 g& v  b8 u+ W( v
  95.         if (strlen(stbid) != 18) {
    % z2 J8 A  V/ _$ W/ @4 q
  96.                 printf("Invalid stbid\n");/ H% u- J" m  N+ A1 }1 p
  97.                 return 1;1 u& J9 W, C. x; @- i; f
  98.         }' k9 f# N4 A8 \0 i; w( \
  99.         printf("\nNew parameters: \n");
    3 t7 e: U4 G4 Q$ J/ n! n6 \, p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " Z: ?: L: c$ T& G
  101.         printf("  STBID: %s\n", stbid);2 t% A1 ?1 F# w: d' K1 ]2 q! _  v
  102. ; @# d) f) x+ K: q
  103.         printf("\nDo you want to change paramemters? (y/N) ");' k% ~  d5 _; _
  104.         for (;;) {
    ( X, R. U  P. j2 J
  105.                 c = getchar();
    ; e7 L, u' M) Z1 n2 E' ^$ r9 p
  106.                 if (c == 'y' || c == 'Y')9 y" w6 {& O2 P- F) x& D8 Z
  107.                         break;
    * U8 |( f: |0 i/ F- U" R0 R1 r/ T
  108.                 if (c == 'n' || c == 'N') {3 T( G5 V" V8 k
  109.                         printf("\nAborted.\n");
    - x7 Q, Y8 m1 e) S
  110.                         return 1;" t7 f) P  I! M# l
  111.                 }/ u9 m; S1 w" j6 v# I" t
  112.         }: G5 \  I/ D, m8 f
  113.         if (writeparam(mac, stbid) == 0) % i2 k" @# E" X. T: k3 d3 X. N
  114.                 printf("Parameters changed.\n");) _) a, W4 m- l( A6 z0 v

  115. 3 h# w4 W! g4 h# P* a4 B
  116.         return 0;
    - Q. Y+ H" `" M* }1 ^6 U) j3 V
  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 " O% C2 L+ N, m, J' a: L+ W5 b6 Z
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
2 n% |$ b* z* [5 [
你用的编译命令行格式是什么?
5 j3 P( h" F. J
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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