查看: 17437|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 z* j& c; [. Q- c" o! \8 C( Z  u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & b' V* h" z- c$ A% ?& J) m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ ?, ^, r0 h* E5 L5 zusage: himr <address> <value>. sample: himr 0x80040000 0x03 G5 N" s# I3 d, T, }4 c

4 G. N) ~5 |# r! w9 l8 m' x; S2 _5 H8 E& v
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 D  v% t3 Q5 k
: ^) L$ L9 j7 P7 B. i4 }6 t补充内容 (2012-3-8 09:42):
5 H; g/ N3 e" R% c  }http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ J+ V+ _9 z0 @; S9 z; D4 d这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。6 r1 \) [  [$ {* i1 F
3 m) U/ f6 L/ S1 N3 v
himr <address> <value>. sample: himr 0x80040000 0x0
/ P$ {6 ^5 P- c& _
; x, E9 r8 s7 [9 m- O3 y! b, ^3 I例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* V* v- l2 v- _3 t
himr 0x80040000 0x00
! Y% O% Q8 r8 mhimr 0x80040001 0x11
5 H& |* z0 m9 h0 C# |! ]. shimr 0x80040002 0x22* K( }1 g: J3 h8 h
himr 0x80040003 0x333 [, f5 i! i% V% P. D! F- k" A1 ?
himr 0x80040004 0x44
2 U& B  U8 x8 k/ T& s' W9 E- Fhimr 0x80040005 0x55- v4 \) d, s4 F9 F6 ^# v+ \" F
; K0 _2 j0 ~8 e
SN也是类似。6 }9 g, k, [8 l: A) G5 M6 S
/ U- a; Y; v/ G: D" m& p
现在主要是,谁告诉我们MAC和SN的地址?1 h4 @' y# h" G$ R9 L% k8 v6 L6 w/ e
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 L1 D2 Y* C- W  I6 g
一直想找到运程修改MAC和SN的办法,苦于无解啊
$ p- B& g" Z! x2 t# M
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 F) t5 G9 \* J# \
3 e' V; m$ {# p修改的代码早有了。到今天不会编译。
( Z8 |" ?& z/ m& ?* p$ t: ?  ?( _需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 `5 ~! s! I7 ^6 j, R
  2. #include <malloc.h>( H3 a4 P" N0 F$ s
  3. #include <sys/types.h>
    2 F* `4 w! P3 X* j/ @" s0 o
  4. #include <sys/stat.h>
    0 _: H6 {& P* p; Q
  5. #include <sys/ioctl.h>" E* E5 C8 o: G  a1 `
  6. #include <stdio.h>
    6 S, |" r$ D2 l7 \( Q( [
  7. #include <string.h>+ ?% ^& r1 ?. u5 z

  8. ' C5 p$ M: q! o9 f& ?) r/ F2 |0 z
  9. typedef struct {1 \- [' i/ _  B3 q, c3 ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 v$ `* I2 z3 O: c6 h+ U( A9 g
  11.         unsigned int        sub_addr_count;2 w2 ?% N1 D7 Z& s
  12.         unsigned char*        e2prom_cmd_data;0 I! U0 Y9 x. \1 W% {
  13.         unsigned int        data_count;4 a& @& U9 G0 v
  14. } e2prom_s_cmd;: J* z: f; P* `
  15. 9 l6 J' s. Y! v0 l& K, L8 ]
  16. #define E2PROM_CMD_READ 1
      J  X+ Y, ~; F& ]0 q3 X
  17. #define E2PROM_CMD_WRITE 2
    8 t* W- O7 }8 W' q/ M
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ v# n" }- @/ z0 ~+ n9 y+ u
  19. 7 }- E' h/ |6 f; o$ B8 ^; O' G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 f" n$ Z) I+ q! e& r
  21. {
    - v1 S1 \* L) I3 ?3 i6 W2 I" {9 o
  22.         int fd, ret;3 Z$ e* A9 P$ Y1 u* i& _# j
  23.         e2prom_s_cmd arg;" P( W  ^9 R. C/ e' T
  24.         unsigned char buf[0x18];
    ( `& ^. w0 g% [2 N
  25. # m! [/ x6 C4 P7 w; h, a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + l3 k% o+ v) h2 B* ~
  27.         if (fd  < 0) {# A; j4 c2 e3 c8 |! k1 S5 c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. U5 J0 M' S# N& v
  29.                 return -1;8 C: K/ i4 L7 O( z9 P1 e: c, [4 p
  30.         }$ p, {6 I$ G% D0 B2 g9 G9 Z
  31.         arg.sub_addr_count      = 2;
    0 ~2 D  v9 `9 y  L- t$ O
  32.         arg.data_count          = 0x18;
    6 y6 o4 W+ n5 Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
      x$ }2 c, R! [
  34.         arg.e2prom_cmd_data     = buf;- M' o  Z" B; k& T- I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & F, I  M& l0 {% ]* V1 W
  36.         if (ret != 0) {' w! U7 P# R: L# o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + @" I- d0 b7 @, q
  38.                 return -1;) @! _+ x- O* i* D
  39.         }' P- z+ O( e4 g6 b
  40.         memcpy(mac, buf, 6);
    ) }2 d/ e3 V& ~9 E- w
  41.         memcpy(stbid, &buf[6], 18);7 Q7 S3 d, q3 a9 y* j( v
  42.         stbid[18] = '\0';
    , G- @0 f; n1 ^0 c& ^

  43. 8 r7 y, W2 W, L1 M8 s+ p- X
  44.         return 0;1 O& v' X3 }5 u" ]
  45. }' r7 Q% T' B5 S' \( t; s$ Q  i) `
  46. 8 ^0 h- w1 Y/ m4 E; t2 k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- J9 X  \4 x* ~$ i0 H$ T3 n# a9 k
  48. {. ]2 A- ]9 M5 h- p; E2 ?1 y: B% v
  49.         int fd, ret;9 }, [* X  R9 m2 ~/ O1 s
  50.         e2prom_s_cmd arg;3 Y' ]! d( H) ~
  51.         unsigned char buf[0x18];0 y1 G4 R! H/ `8 X7 F1 @

  52. ! d% K% O2 x, P% n0 J% R2 J! U+ b6 G
  53.         memcpy(buf, mac, 6);: ]+ p( J4 f. A3 o
  54.         memcpy(&buf[6], stbid, 18);
    6 k8 p& f- M* S, \0 D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 `, Q' Y+ j2 j
  56.         if (fd  < 0) {
    ) \: m  \+ a& W* A6 W" q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: G/ r/ D8 ]& P7 V' T
  58.                 return -1;
    : H( ^2 I% z% ~  H* r) B
  59.         }) [  C1 Y& }) `2 W# _1 S: H
  60.         arg.sub_addr_count      = 2;
    ! m9 }2 h) V1 I
  61.         arg.data_count          = 0x18;
    1 s* p* m: h# a$ v' G
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 K# a, ]0 ^7 Z9 V+ g
  63.         arg.e2prom_cmd_data     = buf;1 T+ l7 k+ J- s1 r0 L) s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + _( C0 x: R. \  f2 D
  65.         if (ret != 0) {) Y; r4 c8 E) C9 `" M( N) r: |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; \6 c3 Q" U5 p6 M
  67.                 return -1;
    9 W, L! c5 L# }4 O. O' V9 u4 H
  68.         }
    - P* y& ~( o/ R' s
  69. 2 L+ _  U- ?: |1 |6 n. |
  70.         return 0;
    6 s8 S3 z9 k) j; b! U0 a* ~
  71. }
    # c0 }6 P  x) |7 U  I

  72. ) S' ?9 E0 c  a6 V+ E/ f
  73. int main()
    8 N! ~( z4 u+ M& J4 Z+ v* ~
  74. {- C2 p, S7 W2 m( ?% ~  B5 U
  75.         char c;% \- Q+ M' p) T, \8 r
  76.         int i, macs[6];
    0 E3 c. g0 ]2 z+ z& H( {$ s; @! _1 T" O
  77.         unsigned char mac[6];, q# i9 w! f) Z& t
  78.         unsigned char stbid[256];' s4 r9 T! T2 b
  79. * B/ j( w- \+ i, M  p
  80.         if (readparam(mac, stbid) < 0)' [; E% H* {5 F5 T6 Z& x
  81.                 return 1;
    ( I) G6 @, G1 o1 P

  82. # K9 O5 \' G) s# ]/ U
  83.         printf("Current parameters: \n");
    , K( x3 L7 A! R) r$ ^4 S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 L( T; n7 b) k0 v/ f
  85.         printf("  STBID: %s\n", stbid);
    . f3 P& H" H; E  R
  86.         : {! p+ H. P8 t0 S* Q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 T7 g: m. f. G4 m9 J2 ?# D/ L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: N/ f8 s. j% u1 O  T
  89.                 printf("Input MAC error\n");1 t& Q+ S3 h$ C
  90.                 return 1;
    ! v+ F4 M# |. U8 T
  91.         }
    ' ]% g' a# l6 `; {4 E. a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( U( k$ U4 D' N0 J0 o- V9 s1 Z7 i
  93.         printf("\nPlease input new STBID: ");) ?9 d, e  g: z% U0 W2 Q5 N
  94.         scanf("%s", stbid);
    ) T" b( _' O3 m5 e2 h
  95.         if (strlen(stbid) != 18) {9 ^2 f# f. C+ u: ~& G& e
  96.                 printf("Invalid stbid\n");
    9 n2 Z7 j! d0 @9 W1 @0 I6 O8 _+ G
  97.                 return 1;5 w+ M3 u. c- c3 G+ n) j) l
  98.         }; F0 h) ~1 l+ g: R8 l
  99.         printf("\nNew parameters: \n");
    4 R- F" h( r. |% ?: q! t! f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 F" ?$ j4 P5 H( k
  101.         printf("  STBID: %s\n", stbid);7 p- S! _0 O; d: D$ D3 \* _

  102. ' Q5 }2 A) z3 {
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 e- z! s1 ^# N/ l
  104.         for (;;) {
    " M7 s) a1 e8 j0 l" N& Q/ C
  105.                 c = getchar();
    8 m6 \4 V1 L8 f% R% m0 F+ F( ^7 h4 w
  106.                 if (c == 'y' || c == 'Y')
    ( p6 K( j( d. u0 I& o/ G0 F5 G* |
  107.                         break;2 h# _/ W6 I- [3 y5 x. R
  108.                 if (c == 'n' || c == 'N') {
    1 {1 ]9 ~* V6 V- J3 k; p
  109.                         printf("\nAborted.\n");' y) Q+ h4 t+ c( V! o/ l: n3 ?4 j$ m
  110.                         return 1;/ a7 X9 r# Z, g! n4 y
  111.                 }7 J- x' c0 ]: R& R0 ~; j7 g6 _
  112.         }
    8 W9 L$ |* U" O0 N7 H# @
  113.         if (writeparam(mac, stbid) == 0)
    ) {) H$ I- {' t
  114.                 printf("Parameters changed.\n");
    ( ^+ Y+ q3 Y: D" t" S! X# D% [
  115. 6 n! |" ^9 R2 x6 |- k
  116.         return 0;
    2 f% |- q# A+ c# M
  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
# f+ [( `+ C  z% X1 y, `, T/ z" H! X" I在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* g; f0 q5 `8 f+ x; t/ \你用的编译命令行格式是什么?
  h/ g5 v/ Y- L# M8 [2 l0 ?
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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