查看: 17966|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 f+ g+ Y# `( M3 n% s
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ Y' ?9 h3 Z9 Q5 U, {/ L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. ~2 A$ R) t0 t% b- G) w* Kusage: himr <address> <value>. sample: himr 0x80040000 0x0
% s5 [6 r; |* B( X/ y
5 y7 F2 [7 t/ H8 L% ~5 U) d
' Q; |, I  P% @4 Q* p# W: O不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 O5 c3 n1 i' i' G: n# w
- g6 g0 A$ ?+ r& X/ G. V补充内容 (2012-3-8 09:42):0 v4 ^) O% O( S8 }8 O5 G; M7 ~  w
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
. G) L4 A+ f5 J, D+ W, a! G! B这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。" C( y- C1 H+ b5 t

$ W* ]( |: E+ X; f+ Z. ?! e; a- M$ shimr <address> <value>. sample: himr 0x80040000 0x0
$ \! \+ E0 W1 a/ Q
1 k' R* \7 n, G1 ?例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ h; _( A  W& K( N1 q, z2 p
himr 0x80040000 0x006 _. C+ y" j+ L0 e: @$ J
himr 0x80040001 0x11
( l$ v* j2 J. E4 _( p# f# Vhimr 0x80040002 0x22" B. N9 k# q1 e0 Y2 P6 Z5 O$ X
himr 0x80040003 0x338 x" u0 j% A" d: H6 G( v' w
himr 0x80040004 0x44" Z+ u6 p- l; S2 M4 o, {
himr 0x80040005 0x55
* w5 F4 J# ?4 N, p/ D' Q; t
# n9 O0 \' m+ n. l  J: w4 pSN也是类似。
. |7 n7 D" A" i) v! `+ |( S( G9 r( f) p: x
现在主要是,谁告诉我们MAC和SN的地址?% b/ H* M2 M' i% S+ W
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 }! F0 q/ G$ g- S- R8 i
一直想找到运程修改MAC和SN的办法,苦于无解啊
# Z1 q/ A, c: s4 Y$ s. d
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ p5 g& T$ g. ?5 w. }5 f% K) P' }) H8 x
修改的代码早有了。到今天不会编译。
5 Q6 G5 ]8 f7 @需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( Z8 H; [; E. T/ Y7 F
  2. #include <malloc.h>$ P$ S7 s: E% [0 Z  d- m6 k
  3. #include <sys/types.h>
    9 M5 k: q! V" V: t2 k2 S
  4. #include <sys/stat.h>) U9 h+ Y; W2 G/ G. B) x
  5. #include <sys/ioctl.h>
    / d6 ?! u  U$ P( `' x
  6. #include <stdio.h>% N/ W0 V' R3 z2 r6 b- |
  7. #include <string.h>
    3 h! {& i( s! e  ^2 m" F" d

  8. ; z, e5 V0 m# W( O( l2 ^
  9. typedef struct {
    0 R; G$ [* W' R, W
  10.         unsigned int        e2prom_cmd_sub_addr;* T3 X/ x- `% T& C7 p3 Z2 b
  11.         unsigned int        sub_addr_count;8 \& K. g! p7 g5 T& Z4 e
  12.         unsigned char*        e2prom_cmd_data;! k1 B  _0 n' Q8 S7 p5 a7 f+ I* z
  13.         unsigned int        data_count;
    * H2 Q4 O3 f6 Y+ r0 y
  14. } e2prom_s_cmd;
    & F( W6 Z3 Z2 }/ G! x! A( C# e

  15. + _6 Y- O% I8 s& `1 b  a1 k! O5 U
  16. #define E2PROM_CMD_READ 1
    5 s" C. e) k9 z" I1 `
  17. #define E2PROM_CMD_WRITE 2" V7 P' B& z! h$ ]( I" L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- N! v7 S% v! e

  19.   f. e+ H2 Y' G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 k* w9 F0 d; ?6 |
  21. {
    1 i/ ?7 j( a" E8 |2 A
  22.         int fd, ret;% w7 n+ Q, x# t: Q/ ~" J8 w
  23.         e2prom_s_cmd arg;
    5 t/ y. Q1 ^: x
  24.         unsigned char buf[0x18];2 i; G, O1 i- f8 y9 w! p

  25. / i# m- [1 b. ^3 \& z" ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( q: k7 P. i  k
  27.         if (fd  < 0) {
    ! ?9 n9 l+ T8 U  D+ R
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 n' ]; {) w: m6 `% K
  29.                 return -1;
    ! b3 K' z( M/ ]
  30.         }
    4 r" R+ ~: o2 [5 M
  31.         arg.sub_addr_count      = 2;
    . D: b( |9 |' I- V5 m
  32.         arg.data_count          = 0x18;
    - a! M# L# q4 ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 h7 N$ k1 |5 N, U; B
  34.         arg.e2prom_cmd_data     = buf;
    4 w+ _% T) F: X0 j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( R8 U6 C' K- \7 u
  36.         if (ret != 0) {
    3 s  i8 O" Z) W, A. p' F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 b1 N3 n5 q, Z7 n
  38.                 return -1;
    ! s0 ~' Q/ R9 }# D* A
  39.         }0 |2 B  i0 K/ X/ F
  40.         memcpy(mac, buf, 6);
    3 D" B6 A; [& y5 A' _2 s
  41.         memcpy(stbid, &buf[6], 18);& n6 D; c7 P- y; b* A: H& X
  42.         stbid[18] = '\0';& o0 E* u9 [5 ]5 m0 e
  43. * G3 t: |" Q, v5 X
  44.         return 0;
    2 H) ^" F5 b% y5 X1 D; |
  45. }7 w7 Q0 J8 \/ b/ k, f; E+ k  C* p
  46. & g$ L' R2 P1 r9 \0 O# Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 H9 d6 ^+ |6 D% s& C
  48. {
    5 Z. X* |' X. S
  49.         int fd, ret;5 c! T3 p$ |) H7 H8 p" D0 R+ r
  50.         e2prom_s_cmd arg;9 `/ Z1 W3 ?  `0 O5 Q& c
  51.         unsigned char buf[0x18];
    & c6 ~9 F6 ^% B8 X- f: I2 v$ T

  52. % D' N5 n0 Q$ f1 n. V7 A
  53.         memcpy(buf, mac, 6);
    8 ~$ Z2 G2 N  v) y" {: _9 X
  54.         memcpy(&buf[6], stbid, 18);% U/ u* }7 O$ I! s( h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" A+ m/ i5 ?* D9 s% G
  56.         if (fd  < 0) {
    ! ]* M! Y; K; l' N; j' K, R  F9 o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 m4 S" E, M( h- y1 A. Z
  58.                 return -1;
    : }6 A- D  S' O; Z# f/ \2 E
  59.         }8 d, @& n( B# o8 P" P
  60.         arg.sub_addr_count      = 2;& t7 k' g+ G5 W0 ~% V
  61.         arg.data_count          = 0x18;
    - h, n# E- m/ N" l+ x% }8 ~+ E" w
  62.         arg.e2prom_cmd_sub_addr = 0x290;; |! C9 \( f: W; c1 B, k4 b9 \$ y
  63.         arg.e2prom_cmd_data     = buf;5 A2 A: X3 B) T) X
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 l2 [: \* W  D* x! N
  65.         if (ret != 0) {
      ^, F! L9 U$ a3 y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 z, R9 B" M5 K
  67.                 return -1;
    % J8 W; D# L! n9 A
  68.         }' d. q; h5 [7 _: @! |

  69. . k5 k2 Y- x5 O
  70.         return 0;
    * W0 }& N. D. `, U
  71. }
    # l* N5 O0 Z7 k; N/ k  A: |

  72. & a" B# [& f8 ]* }* h
  73. int main()
    " Y% g- w. `! E9 J! J$ T% b3 b
  74. {
    $ V" C" Z! j. Y9 [  ^) X* ]
  75.         char c;! `/ y( I+ ]: @: ~5 x
  76.         int i, macs[6];/ n$ A3 v0 b( I) r: r7 |! j" g, ]( _
  77.         unsigned char mac[6];* Q# N/ w* L) F
  78.         unsigned char stbid[256];8 p1 S) b* W* _) X& d

  79. $ |5 n- L+ \5 B* V" K
  80.         if (readparam(mac, stbid) < 0)& S. X( i: U+ J" a: [" h
  81.                 return 1;0 D! G! k" n  h! P* C

  82. " u3 k4 E) C% X( b
  83.         printf("Current parameters: \n");8 b% ^. [) D* M- c. r/ n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 I% p5 Q6 w# j0 [; V
  85.         printf("  STBID: %s\n", stbid);4 ?' Y8 `* |$ M0 s3 @) x# K0 {2 v
  86.         8 w; o( s& Y2 I1 o" r% f, Z  a* A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ H4 c+ w; C) Z4 x! w. q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! `3 N" O/ t$ |- y) i
  89.                 printf("Input MAC error\n");
    8 C7 d. A; a( Q" f- R) V
  90.                 return 1;
    : U) ]  S) i! L6 k1 o% p2 r1 q
  91.         }
    . w- s( c) `6 y! S, @
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 \9 e$ _, C6 g2 }. J, T5 S, Y
  93.         printf("\nPlease input new STBID: ");* t# F/ i8 f( j4 T
  94.         scanf("%s", stbid);
    6 Z7 G/ I: J% r! B+ \5 L, N
  95.         if (strlen(stbid) != 18) {
    * w4 k! h/ G* n  r
  96.                 printf("Invalid stbid\n");
    # y/ |0 l, g4 ~: _9 E5 Q
  97.                 return 1;5 i8 p  P- }: ^: M# ^& M- N+ o" \
  98.         }
    ) o7 _. m! A& D% @  t+ C
  99.         printf("\nNew parameters: \n");
    8 U; M8 E4 s" B8 ], y4 k$ m: E: `/ ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + D4 }9 P' V1 V
  101.         printf("  STBID: %s\n", stbid);
    3 A6 q! c1 b. I1 y: N

  102. 9 w" }) I: O$ z9 l' M$ q9 Z
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 i. ~5 B* {; H* b( x# Y8 E
  104.         for (;;) {
    1 O0 Q/ d/ g' P# i% [
  105.                 c = getchar();9 q' R" c+ D* d2 N2 {# r- q
  106.                 if (c == 'y' || c == 'Y')) ]7 k$ b( O1 M0 O! p
  107.                         break;( T  X% f. R' ^6 S9 J1 \
  108.                 if (c == 'n' || c == 'N') {
    ) _5 `5 W7 v9 G/ Q5 D
  109.                         printf("\nAborted.\n");7 w6 n/ \' i3 \4 e9 U% y7 c) q5 p
  110.                         return 1;. G6 H( B' c. g, f
  111.                 }
    ) ]( @5 n( M+ n& J+ p
  112.         }7 h, A8 O* H+ }
  113.         if (writeparam(mac, stbid) == 0)
    6 W+ I: A" x. `8 G
  114.                 printf("Parameters changed.\n");
    / _+ q& w; R) E- @" m

  115. : |9 u9 O+ B9 Z4 g+ X
  116.         return 0;& h) q, K- R4 k0 P. ~6 `! C, d2 }
  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 : x5 j) ]3 H1 b% S
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
) c0 u! E. I  E0 H. g7 _" X+ B
你用的编译命令行格式是什么?9 Z, d# W7 s+ I3 D* g- w( p5 g
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部