查看: 17127|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    - ~# w) V8 q) @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( k) v5 I+ Z7 U) d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:3 z5 x  P" B9 F' E
usage: himr <address> <value>. sample: himr 0x80040000 0x00 L+ q- k' S0 ]( b. S1 I0 e
8 U- E) O+ z+ o! x+ d; _
# p3 ~5 h1 [- S0 W
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' ?9 Y* n& ?; U+ D$ y: ?$ w0 c8 K6 \' i
补充内容 (2012-3-8 09:42):
1 N! W9 s0 m2 d, u5 r6 ehttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 n7 Q' T! p# W, M8 P/ S+ N7 F
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
3 q1 i$ g( w* e; w9 i" U% B# Z$ a% ?8 U6 Z& W* v
himr <address> <value>. sample: himr 0x80040000 0x0
+ x' O( i7 G- \# i8 L; \8 R; i  `0 J/ f
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 J) h% Y! _- N: p! Rhimr 0x80040000 0x009 E5 N" c5 b" s0 `2 _$ Y) z% H
himr 0x80040001 0x11
0 S* T, H9 z# a1 \2 Khimr 0x80040002 0x22
0 D* a* O% m9 F8 T; M& thimr 0x80040003 0x33* K0 J2 M' \5 q- v  {7 y
himr 0x80040004 0x44
+ A" \0 G/ B5 C. m+ j- lhimr 0x80040005 0x551 w5 s1 N6 F) J- ~: v, ~# p
' C! I4 K9 P, j0 f
SN也是类似。% @7 k0 A# m1 d2 G+ w

/ x3 B2 D$ W% B* b; i现在主要是,谁告诉我们MAC和SN的地址?7 N7 R4 q! w. I  F( c2 Y0 n
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ n: P- l; \9 y一直想找到运程修改MAC和SN的办法,苦于无解啊

4 n- R# \# h* ]5 z2 h% n- H  G源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 W) \& @$ B$ w. g9 E' C

& m$ {0 ]0 e# s修改的代码早有了。到今天不会编译。
; c) K0 V  j5 N# J9 q+ l需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + R8 s6 m3 K& x8 h+ K6 s) u" C" E
  2. #include <malloc.h>. v) v" k5 A  |$ N! @
  3. #include <sys/types.h>" u* t$ B3 w5 ]" l" D& a
  4. #include <sys/stat.h>
    0 V/ C: t/ r/ {
  5. #include <sys/ioctl.h>6 [! s! H: ^  Z( K7 t1 k  p) V9 p
  6. #include <stdio.h>
    * l: x3 ^- u1 j. I# p3 W8 @
  7. #include <string.h>- q+ f" d3 l1 b' Z

  8. 4 t; E/ B0 W$ p
  9. typedef struct {9 |# `5 a3 b. x2 M8 q# H
  10.         unsigned int        e2prom_cmd_sub_addr;8 ]( C  p* n6 ~7 y4 u
  11.         unsigned int        sub_addr_count;
    . @$ q+ s# `0 D; C; v6 R
  12.         unsigned char*        e2prom_cmd_data;
    ; Z. S9 a% w0 o! c. t1 L
  13.         unsigned int        data_count;' t" O6 S. v9 P  G% x. G7 O% E
  14. } e2prom_s_cmd;
    # u  Q, _, k0 A" P* I' r1 P5 h

  15. ( U; D' ]; I1 K" U  M
  16. #define E2PROM_CMD_READ 1
    ! l6 l! g- S! G* J7 |+ p
  17. #define E2PROM_CMD_WRITE 2
    / q$ y. v. l& p3 a
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( f/ f& ~( A$ v% ~# d0 K

  19. 9 n4 Y; B8 m% C  k! d- ?2 M2 P' {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; y  j  O7 c  E, M, w4 j
  21. {5 y6 d" \) f, W1 R& a7 L! x3 ]
  22.         int fd, ret;) W) b- R9 N0 _5 e" n: B
  23.         e2prom_s_cmd arg;
    4 Y) o# n) c, Q* U$ f
  24.         unsigned char buf[0x18];
    - s" B; ?4 i, A% o' J, ?
  25. % u8 Z$ l. z: }9 ]8 y# D* \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 _' a8 J" e( J- F' H/ A, M
  27.         if (fd  < 0) {
    7 N- q6 v: H0 D2 D4 R) s0 }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% K# F0 |4 K" R8 \) o2 ^3 Z0 P0 [
  29.                 return -1;
    " F6 Z. j. V) ]( \1 y$ A5 @
  30.         }
    7 j  j- [$ M) ^! m. q7 l6 I  n
  31.         arg.sub_addr_count      = 2;* F3 @& a4 Q3 J+ A2 A- D7 T
  32.         arg.data_count          = 0x18;
    3 g7 W5 A7 i0 n5 x% x, {+ g) q
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 t4 T: q. O" R
  34.         arg.e2prom_cmd_data     = buf;
    # N+ J/ i  J0 @% `7 d4 w( I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # W( R9 \1 F/ H! ~* I* K
  36.         if (ret != 0) {
    2 d- v, F$ q4 Y8 T2 p. N* t
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " S' r6 W/ I3 |4 }" ?# W+ d8 C! T
  38.                 return -1;
    5 w) ^' B: L6 _6 X: X
  39.         }5 Y8 s6 Y, q; w- i- t+ }& s
  40.         memcpy(mac, buf, 6);  D2 S( X! b. w  Q* z
  41.         memcpy(stbid, &buf[6], 18);( s8 U1 z! T$ q9 ~
  42.         stbid[18] = '\0';
    : m" [7 q- z! [" F; }; K& M% ?
  43. 2 m! d- h2 q2 u& O
  44.         return 0;
    6 l4 e5 h* a$ w" l
  45. }  a1 T: Q9 E4 T6 ?) n  P

  46. / ~: d; [% y/ h6 ^6 u  h- |
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ ]0 r9 Z& Z) t: m
  48. {
    , ]- N, d- K7 b. _# c- K* E! l
  49.         int fd, ret;
    9 w2 m- R6 K5 F2 Z% K7 U+ V
  50.         e2prom_s_cmd arg;
      b/ k$ _; J) f" ^4 h4 e
  51.         unsigned char buf[0x18];% ?+ v0 f9 G5 B# [' c0 f
  52. 8 W( y# _; R" Y' o: I4 p1 ^' w, E
  53.         memcpy(buf, mac, 6);; V! B, E! N  ?9 f0 ~9 c) m
  54.         memcpy(&buf[6], stbid, 18);' s" z- C; u' i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 h" P: }) T5 p! h; m6 v, w
  56.         if (fd  < 0) {; v# A. B. N, |/ Q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 a+ j& X- U  n2 {+ d/ A0 @
  58.                 return -1;
    ! b& O# `" d/ e& X
  59.         }
    5 n; b1 ~0 ?. B) n
  60.         arg.sub_addr_count      = 2;
    , W/ u- @3 g3 u, R+ @2 H  _
  61.         arg.data_count          = 0x18;
    6 g3 v! O' w. }# Z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      o# h% X" M+ r5 \
  63.         arg.e2prom_cmd_data     = buf;
    7 f+ ^' a& y( b& b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    * v/ z" k6 M7 F. L; V
  65.         if (ret != 0) {" J7 U* J# k8 F$ ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. N$ f; K* a  p% m
  67.                 return -1;
    . I& h4 `* i! _! e3 c: ]+ _. I, u0 _4 E" r
  68.         }  A5 N  ^; B$ |; K; E! T2 J$ G4 c% R
  69. 2 b6 p3 u+ w& d4 B! e) e' c; L
  70.         return 0;" {: w/ l5 o0 C5 s5 x" M5 F
  71. }. V. Q3 c; e3 z9 c& r: E4 ?& Y

  72. 5 A5 H4 R4 N7 x; u' }
  73. int main()
    + M, Q8 ]! e+ S5 |0 u# X& i
  74. {
    9 a# q( l. Q; a. ^6 i
  75.         char c;' A: g$ m! W% y: a
  76.         int i, macs[6];2 _6 ~$ C$ f$ l& l$ [: b* ]
  77.         unsigned char mac[6];
    # z& |0 Z! h, c' q. R/ H
  78.         unsigned char stbid[256];: T* G2 B8 D! n) g7 Y3 c+ F8 o: o6 K

  79. 3 n6 Z, R" V4 U4 f5 i: C" m
  80.         if (readparam(mac, stbid) < 0)
    6 u2 [4 A- j# D& R
  81.                 return 1;
    3 l  ~2 U8 ~( K; Q
  82. # n9 f& X' s) Q
  83.         printf("Current parameters: \n");0 G  h" R* ~; ?" S, E; b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 |' Z$ q: W2 f) i0 O  K$ m; u
  85.         printf("  STBID: %s\n", stbid);! b6 E, ~4 o4 N# e2 u( k0 Y
  86.         $ C: n  ]3 Y: I5 _* l) A% f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * C! E- r7 k% J; k8 P2 M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 B6 f% p! \4 f! S  |
  89.                 printf("Input MAC error\n");& z* ]" c9 F2 o# t! U: T& V) F
  90.                 return 1;
    + t5 p4 W$ b  u1 s" k
  91.         }' g4 G1 W, G. l- @' p. d) S
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 o' H' h! J* }* I  j7 N
  93.         printf("\nPlease input new STBID: ");
    2 P1 d0 H8 u/ z( v, Q
  94.         scanf("%s", stbid);
    7 A& N9 B6 R0 E9 }0 ?
  95.         if (strlen(stbid) != 18) {' U8 G" ^$ P; j) L2 B
  96.                 printf("Invalid stbid\n");( |" @; r( {6 O, h( b5 K
  97.                 return 1;
    7 b1 [" C0 s: ^* d9 L
  98.         }
    8 Y8 }$ \( Z. p( ~
  99.         printf("\nNew parameters: \n");
    4 D' t& J9 H: f4 V. Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - [: C. q! m2 g1 B4 B# Y
  101.         printf("  STBID: %s\n", stbid);: D! }, }4 u! \3 P& f( c

  102. ( z, Y: E1 h4 _7 h
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    7 ]  z' Y8 C! d% p3 K
  104.         for (;;) {, O7 c# E" }1 y8 U. P( l
  105.                 c = getchar();/ l2 T- g: q6 _2 G% s% j* q' n0 P
  106.                 if (c == 'y' || c == 'Y')1 z/ H& D8 h$ A5 Q
  107.                         break;+ G5 m9 n4 H+ T
  108.                 if (c == 'n' || c == 'N') {  C2 s4 X$ |5 I: n
  109.                         printf("\nAborted.\n");  J6 |2 K' p1 F: s
  110.                         return 1;& C2 n& G) O& N- ]6 C: j% I+ l5 V% Y
  111.                 }* ~3 p8 b5 w8 h0 w2 S8 H7 v
  112.         }
    7 q0 w2 r5 |( O
  113.         if (writeparam(mac, stbid) == 0)
    6 H/ g8 T1 v) Z; D
  114.                 printf("Parameters changed.\n");, M; D/ m- M: d/ y6 a3 t  D

  115. 3 h8 q* h: C+ j* s: |; @0 N
  116.         return 0;
    , q2 {- _5 q7 ~' k' A& G; G
  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
$ S+ _3 Y& P8 P0 L: P; n- w在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 M/ y) w0 u9 \% V你用的编译命令行格式是什么?' x" x1 J0 Y% U6 k1 D9 ]- q. S7 P
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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