查看: 17528|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ }$ \" g; [9 p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . V, x5 t- e; z% l( s1 z* q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:4 P9 r* A5 P8 p1 A, z2 ]+ L
usage: himr <address> <value>. sample: himr 0x80040000 0x0/ {7 f+ U* T# \

: O7 r* Q2 v" X( A, ]
: O  E+ T% Q- @$ ^0 s2 Q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) b9 c. N" Y! p* R7 \3 I2 ~% u  a  s7 P
补充内容 (2012-3-8 09:42):7 `) x4 U* _- c( ?- S1 _
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 y/ t+ f* @! a6 |% Z3 u6 }) P
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。% B# V$ x* h, {
$ D6 l0 n& @$ U/ w
himr <address> <value>. sample: himr 0x80040000 0x0
+ [- i  F' y4 K! \5 u2 o
3 H8 X8 S- z# t: b& y; n例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' a3 [2 Z1 j3 m# ]. @himr 0x80040000 0x00
' m. _' h( R9 E# s" khimr 0x80040001 0x11
& X! s& Z& T0 F) F2 J/ ^himr 0x80040002 0x22. t+ j- I! Q) H9 Z
himr 0x80040003 0x33
/ M% X6 `* b, _% Q6 ?himr 0x80040004 0x44; D! c' j. W% G* r  i5 f8 l
himr 0x80040005 0x55
' S2 n" H" B. V: L$ x
& |! K! L* }( u  Y" nSN也是类似。3 G1 n5 L3 E) ^& u" F( r
5 y! `4 T; y) [! q
现在主要是,谁告诉我们MAC和SN的地址?/ l- F; s  ]5 D5 @$ N4 x
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : `8 z0 }2 E& v/ |
一直想找到运程修改MAC和SN的办法,苦于无解啊

0 u- J# Y4 u8 B源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; _" t( g* B9 x: N( Y! w

; t6 W- o5 [$ G$ j修改的代码早有了。到今天不会编译。
' t  `* J# L5 B  b  @' W  |7 i5 w9 K. v8 R需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / J3 B5 G+ ^! v4 h
  2. #include <malloc.h>
    1 u% \. `8 v0 y4 v
  3. #include <sys/types.h>1 q, T8 ~; i- J* N0 o6 X. u  x9 P
  4. #include <sys/stat.h>
    - q' ~5 ]' u: E" e) R7 s. ]) u
  5. #include <sys/ioctl.h>3 w! E6 c2 s; r* U5 S0 e
  6. #include <stdio.h>
    ; y1 `/ S- C* O- E: A4 p  K- ~
  7. #include <string.h>2 V+ d% R' a+ S$ g% @. o

  8. : }5 y6 r/ a& p: X/ c
  9. typedef struct {% f# D. A/ b, ?7 d* E. C
  10.         unsigned int        e2prom_cmd_sub_addr;
    : s& Y% c% z! t$ r
  11.         unsigned int        sub_addr_count;
      Q% S% y) D3 z1 ?. X% A
  12.         unsigned char*        e2prom_cmd_data;$ x: B: f4 Y, D# Q
  13.         unsigned int        data_count;6 i5 G1 |# p) Y) K0 K/ {4 D! {' C8 Z
  14. } e2prom_s_cmd;# ]% T- K! G5 k, v0 o1 g1 s$ A8 D

  15. : g) k. g; ]) Z1 t. r4 {
  16. #define E2PROM_CMD_READ 1
    8 k  q( j/ m+ Z. Y3 i
  17. #define E2PROM_CMD_WRITE 25 I9 M. S# k. x' ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' O8 V+ u" |9 F
  19. & v, [8 ^4 G1 n% V0 b2 R3 F4 v
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , g9 s( I: s' o# W. \' `, t7 F
  21. {
    # |" U) l# j$ G7 S6 f* w- X. n$ L6 V
  22.         int fd, ret;2 a0 P$ k8 D' b+ D) O, Y6 s
  23.         e2prom_s_cmd arg;- t( N1 c& X9 l/ E$ C& k
  24.         unsigned char buf[0x18];
    2 R- w5 p3 H' J) Z

  25. : P- {/ Z  S; e. u. a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 p. w% U* Y6 e# c0 O
  27.         if (fd  < 0) {+ y. _$ J- ^' P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + x8 `& m1 X* C4 S& ?
  29.                 return -1;5 i& ^: O9 D# k) W# \: @
  30.         }
      l, d2 s% I7 n; _: O
  31.         arg.sub_addr_count      = 2;; L" B+ ]; Q3 F' V0 C' j
  32.         arg.data_count          = 0x18;
    6 C! [3 M2 {/ G6 p/ ~! L
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 {* k5 L: o; u" U: S* e
  34.         arg.e2prom_cmd_data     = buf;
    $ q* n! j: `& A0 c9 X
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + N3 D7 B1 R* K4 x! @! T5 C
  36.         if (ret != 0) {  q6 ?8 d% Q8 I; N1 d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    1 u5 e3 W7 a) w
  38.                 return -1;
    ) m& ^: Z: e" l- _; s' J6 {. r
  39.         }
      Z  Q3 r4 y0 u; A& r
  40.         memcpy(mac, buf, 6);
    8 ?  t9 I# B0 B9 O- P# S7 G
  41.         memcpy(stbid, &buf[6], 18);
    4 T+ z/ m% G$ X) _3 ~
  42.         stbid[18] = '\0';$ L+ x) L% e  Z# Z7 C/ m( P& [( ?) p

  43. + {; M8 @6 j% L( W- k% {+ {
  44.         return 0;
    ( u4 Z/ \8 {' w% e9 p9 Q
  45. }# D. A( u( H& Z# h
  46.   A+ y+ \8 c4 z8 R7 x  V! b$ z* m, {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  E! I4 f+ g7 E% `7 x4 l+ ~8 E
  48. {
    8 g  G+ M: {; Q/ U  B( w1 I3 ~
  49.         int fd, ret;3 ~& r8 F9 b9 h
  50.         e2prom_s_cmd arg;3 _  y) E  \  s, l
  51.         unsigned char buf[0x18];9 j0 b/ C4 u" H3 D: ?& t, ], h

  52. . W& g& n# ~8 n0 X
  53.         memcpy(buf, mac, 6);
    0 j7 D- [! T6 \; P5 C% y* |: L% \
  54.         memcpy(&buf[6], stbid, 18);
      Z6 `! b/ {+ {, _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! v+ N) d! l  x$ w: g1 ~
  56.         if (fd  < 0) {2 c6 M5 O! ?* w$ k
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; l& \' l) A3 I# ?) m9 o# p5 h
  58.                 return -1;
    / b: t6 c% k8 ~+ d
  59.         }) i  o2 u7 G3 @; t& n+ p, y
  60.         arg.sub_addr_count      = 2;
    6 J" t4 G3 R5 d
  61.         arg.data_count          = 0x18;/ w- Y' h2 K. ^5 x9 F5 c
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! R! k% I/ Z+ C
  63.         arg.e2prom_cmd_data     = buf;
    ( V( X# A& b2 h3 s" f5 H# s$ R, U8 ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 I4 C; u+ p) H* X' F& z$ j& Z
  65.         if (ret != 0) {, A- }3 S) v% ]  D/ `8 J
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);7 c+ m9 ~( Z. ?
  67.                 return -1;
    8 H  V$ y4 s6 [3 C3 Q2 A
  68.         }
    6 Y) ^3 }5 w+ B+ e$ [2 t1 r

  69. # ?' ]; Q$ `. x: {1 f! Z# s
  70.         return 0;
    ; I5 d' I% [, q3 S# q
  71. }6 `6 O, i, G6 k2 p% w

  72. 0 ^# j# y( T' W
  73. int main()
    9 V- U% `- ?& y" w" C
  74. {
    2 y$ v( u% z% y% o% a) B$ W
  75.         char c;
    : H) ]! |0 v: r4 I/ ]0 i
  76.         int i, macs[6];. n2 \/ F/ M7 e# z- v! e
  77.         unsigned char mac[6];. f& c7 c' i+ q  B
  78.         unsigned char stbid[256];
      ~" H6 G3 }8 k: h/ a
  79. . b/ J" q3 K+ ], _6 o
  80.         if (readparam(mac, stbid) < 0)6 p5 m1 `; _. U4 U* {
  81.                 return 1;
      X  z4 N& `  a9 m( M. l" Y
  82. . K$ b: c7 h: w9 O& G8 z4 C# }9 s9 |
  83.         printf("Current parameters: \n");" U- ]1 Z1 ?  h5 t* ^0 G1 ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. |. {8 d' p6 e+ d, _# A9 p% H
  85.         printf("  STBID: %s\n", stbid);
    3 t8 n9 s2 |8 Y0 S3 }( n9 J
  86.        
    4 i0 m/ q0 L& Q1 d6 {% ~+ G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    # ^! M) j: {1 `9 P% _
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( m* l+ @1 m9 i# z& s2 |) @# ?- Y
  89.                 printf("Input MAC error\n");
    2 n& o6 l9 C, H& R$ N! }' \/ }) ?
  90.                 return 1;% ?( e' Z; p! M  _6 s3 Y
  91.         }
    1 K  m9 \* b! R0 R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ N. j. e9 ]& V4 {! y
  93.         printf("\nPlease input new STBID: ");
    - t! G, W/ O+ J4 C4 l
  94.         scanf("%s", stbid);
    , K- O( ?1 ?6 w) ]6 O5 K
  95.         if (strlen(stbid) != 18) {
    1 N8 Q7 s* }6 p1 Z7 G
  96.                 printf("Invalid stbid\n");; Q1 ^$ _* d- j' u+ w9 h7 t
  97.                 return 1;0 I% r: R# o- p' u9 v- e3 O
  98.         }& _& q4 Z: W. e) q
  99.         printf("\nNew parameters: \n");
    5 ~7 K+ P* l: V7 m' q) \6 {  H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 p0 R' }& [% l8 W
  101.         printf("  STBID: %s\n", stbid);
    - C7 \+ l9 X" e6 y4 v! U, M/ T

  102. # r6 g' c2 f4 G" _, T, g! |% W
  103.         printf("\nDo you want to change paramemters? (y/N) ");* i; j0 s6 ]3 L
  104.         for (;;) {8 _( `; G/ L& n3 ^9 [0 {9 \/ a
  105.                 c = getchar();
    6 @1 J; {3 @' v1 D- O
  106.                 if (c == 'y' || c == 'Y')( a% z/ m: M' O) L0 w
  107.                         break;
    1 O  {, x6 E% f0 n0 w
  108.                 if (c == 'n' || c == 'N') {  W/ z9 F- ^; ]* g& s; ^
  109.                         printf("\nAborted.\n");
    6 x7 D; n0 c. Z& ^) U, j6 Q
  110.                         return 1;
      K2 p3 V7 \" z( V5 w, U. M
  111.                 }9 Y, j: b. [( Q) |
  112.         }
    7 c' b! O3 R* V+ r/ g1 b
  113.         if (writeparam(mac, stbid) == 0) 8 Q2 ?3 r5 }3 o. |, B2 B
  114.                 printf("Parameters changed.\n");8 r" A9 p' I( j% J" T$ f4 H- w+ E3 \

  115. * P' A4 d0 I  ?2 [8 \7 r1 ~
  116.         return 0;
    , x  W" C1 X6 t4 e
  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
7 V( y0 q0 d6 g3 j4 t* s5 s- j在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& j! A# `! L! V. ^# o: `你用的编译命令行格式是什么?
$ [* S1 p. ]3 a( R: j" _! `  h
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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