查看: 16622|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 l5 e( t7 Z3 U0 C! h$ V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 ^: B4 G* V- y- i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% v( p4 D, E# Q# b' x0 {0 dusage: himr <address> <value>. sample: himr 0x80040000 0x0
( k1 b7 M7 W- {5 {' N( \: U) Y  E& z+ \, d% f$ X
! F7 |7 J5 G# @4 F
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?0 c( E7 F1 N' A0 d/ {" L
+ N; K2 Q9 ]& W0 U: Z
补充内容 (2012-3-8 09:42):& _* S: X2 E- u. y& J& X3 S
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 r, {0 }7 A4 G9 F这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
2 q- q/ ^/ J4 t/ i
4 _. e: c) t0 _  {3 |, nhimr <address> <value>. sample: himr 0x80040000 0x0" D  |% F/ ?1 ^2 r

. W  O+ B6 A3 k! D2 ]- M例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 a0 p. u8 i$ U/ {3 ahimr 0x80040000 0x006 [( \) l/ [. M0 A: [( t! w
himr 0x80040001 0x11
- H8 f" q2 X9 q$ _4 jhimr 0x80040002 0x22
; _, C+ ~# g: m' |' M5 ohimr 0x80040003 0x33
- Y7 M/ y% X5 p9 ahimr 0x80040004 0x44
9 t6 C* Q- z# J$ ghimr 0x80040005 0x55
1 t1 W. y  s. g+ s) x9 F1 t0 Q' s% R1 x
SN也是类似。
+ d6 w! @' i$ x+ e# N: |6 M7 |: H, R0 U  P* k* s7 n% z( Q3 o- C
现在主要是,谁告诉我们MAC和SN的地址?! k5 i7 N1 R6 V3 L7 s5 P0 b: o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 q" i% n6 [! k. m# V
一直想找到运程修改MAC和SN的办法,苦于无解啊

! E+ a, Q) `/ U+ }2 v源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% m/ m) p3 p) _, O: t: Y
" \6 U) A! }& C6 L2 O  }修改的代码早有了。到今天不会编译。
$ [* w% o( l$ X" P6 F1 s需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% A* V, y! m) `& h
  2. #include <malloc.h>
    " ]) }/ {& ?6 s" }+ W; s
  3. #include <sys/types.h>
    " B4 c4 X( M* u# `  K  k" g, i4 x
  4. #include <sys/stat.h>
    ! J) N# t# W8 v+ c; r, ~
  5. #include <sys/ioctl.h>6 L% w" W1 c0 K6 b  D& v4 Q
  6. #include <stdio.h>
    5 I5 \/ u. J4 `- |: Q; _
  7. #include <string.h>
    9 J" @8 W( K/ s" o- D
  8. % u5 Z/ Y6 Y9 k! D
  9. typedef struct {2 S6 S6 \' H" s1 X( c
  10.         unsigned int        e2prom_cmd_sub_addr;
    # C& \7 {0 `1 t( n
  11.         unsigned int        sub_addr_count;5 g9 x4 q2 P$ |
  12.         unsigned char*        e2prom_cmd_data;
    & f. u/ s) Q7 c5 N; x1 z
  13.         unsigned int        data_count;
    0 Y+ r& j9 F) m0 N. L" p  g
  14. } e2prom_s_cmd;
    9 L+ b- K6 F. ?4 o3 k7 ^
  15. 1 n; q4 J9 i& \; }3 [5 O8 c' \% `
  16. #define E2PROM_CMD_READ 1
    " r; R/ q' ?9 U/ B! }5 F- v
  17. #define E2PROM_CMD_WRITE 24 `' ^* {& V; D4 @2 C6 Z: B1 J3 \0 B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; L. \# _; q! j

  19. ' E' p& v. o0 g# K
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 Z! p9 P3 O* M5 R/ K
  21. {
    ; R0 u. S0 U! `0 W
  22.         int fd, ret;: T* _( \( ~  S$ t
  23.         e2prom_s_cmd arg;
    9 t5 C6 p% q) E, N/ b! t
  24.         unsigned char buf[0x18];. f9 P$ S% k5 c1 j# [  X) m. W

  25. # M6 r! P. }1 d% T5 {8 w7 h. A+ s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 A, x! Q$ V6 `/ u: Y3 a  I
  27.         if (fd  < 0) {
    $ k& P3 ~: W- c3 ^% t; t$ }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' N* ~" Z3 u& P' \
  29.                 return -1;& S) Y& N9 r4 Z5 ]/ l8 ^. l. r
  30.         }9 x1 o9 H5 P1 K! ]: ]
  31.         arg.sub_addr_count      = 2;
    + w- p' y8 m, J
  32.         arg.data_count          = 0x18;" n' J1 f; i3 n5 B
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % h9 Y& {7 J/ l3 t  R) J3 F1 O; t
  34.         arg.e2prom_cmd_data     = buf;5 U7 v! y5 V% d* O
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % @; @9 K2 Z. k6 b
  36.         if (ret != 0) {! z2 M4 v$ z' Y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 f7 ^. \: K% Z1 ~; X
  38.                 return -1;! ^# @2 u+ t+ [( e8 m; d( X
  39.         }
    0 t1 |+ v) p3 q; M
  40.         memcpy(mac, buf, 6);
    ) [3 K, L/ x# c; I) e
  41.         memcpy(stbid, &buf[6], 18);& }$ M8 N+ \& i5 R! W5 \) o
  42.         stbid[18] = '\0';
    8 C  d: b& w5 M1 V; q8 _: R
  43.   T- @0 I# i& I* n/ X% A/ h* M
  44.         return 0;
    . n8 `3 D+ G9 z% J
  45. }
    4 j. L5 D5 e. C- `4 ]: p

  46. $ g6 ~+ L& r+ ]. W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' l; S  W) Y# w8 T& `
  48. {
    # q/ r" F) h( ]4 V9 P5 q* b
  49.         int fd, ret;
    , T7 ^. X) `3 ?* d
  50.         e2prom_s_cmd arg;
    9 i5 T* r4 K4 v+ t
  51.         unsigned char buf[0x18];
    8 \4 P7 t2 D& B( p
  52. 6 A4 G: @* M$ D
  53.         memcpy(buf, mac, 6);5 F( r4 [+ M$ [. l! V+ T2 ]
  54.         memcpy(&buf[6], stbid, 18);
    , a2 t8 [5 i) _+ p/ C% u2 [
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    & O2 n( x/ k- b" }
  56.         if (fd  < 0) {
    / }$ m2 S9 \4 _2 X# d% J  R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & P# A6 @, Q$ u  L2 }8 {' z
  58.                 return -1;9 j1 N# H1 m$ J4 G
  59.         }6 J! g$ W* W7 s* R# u$ K
  60.         arg.sub_addr_count      = 2;
    ! o# K# H: E6 U2 f5 f# O, k
  61.         arg.data_count          = 0x18;
    3 N0 ]- F8 H2 [" n: g. B0 b, Q0 S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % \% r, D; p3 g5 e# w& y9 i
  63.         arg.e2prom_cmd_data     = buf;
    * Y4 @5 x- q6 J! c$ j5 Y$ p* ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ Y7 _& n4 b* N0 m1 F- q
  65.         if (ret != 0) {
    6 y2 Z( W8 S7 [/ Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : ]( A/ h9 `! f2 i$ ?3 I! u
  67.                 return -1;' |  N# C) ?/ ~8 O5 I
  68.         }
    & }  k  L) `( z1 a# q# L/ D

  69. 3 K! X8 z* _4 G3 V" |, @
  70.         return 0;- J) c, t/ v7 b. r7 \
  71. }/ w9 z4 V5 ?; i; n) Z- F$ u
  72. ; i4 s* |. J' a) g# q
  73. int main()
    8 q! b( J& f/ K' `+ [
  74. {
    - c8 z2 h! e* d+ r$ c. V
  75.         char c;
    - W/ ?6 N8 K" m  k3 r
  76.         int i, macs[6];
    0 s  o3 c) ]3 x$ X' X
  77.         unsigned char mac[6];, a6 g  `) `  U! l4 q. P) d
  78.         unsigned char stbid[256];  k7 z; b* B8 Y% O* H' I- v* H

  79. * \1 |' o; v( z) V6 Y0 E
  80.         if (readparam(mac, stbid) < 0)
    4 f7 [0 ]: V2 n$ c$ A% E: m! W
  81.                 return 1;
    0 h& x. h! X" _1 ]; {

  82. * l# L8 C2 O5 y: m8 U( X8 l2 I5 X
  83.         printf("Current parameters: \n");
    / Y) t) G2 a4 ?! f+ E$ x, H
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' V/ Q. T* z3 o: f
  85.         printf("  STBID: %s\n", stbid);
    & G- R& F% ^# W3 K7 a! ~
  86.         . v! S0 H/ `5 i" _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 @: [* Q9 {* Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 _8 b# h- P2 j0 \" g7 P
  89.                 printf("Input MAC error\n");
    1 e9 ]' Q9 X* }$ N/ s( V3 u0 o3 {
  90.                 return 1;" [  m0 d' v4 O5 K& W& B
  91.         }8 j) _" ?* A4 Z, c% o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 f4 [2 n" W* n9 D8 D6 W- n
  93.         printf("\nPlease input new STBID: ");
    4 Z) N" r  r; m/ b& V$ s
  94.         scanf("%s", stbid);
    % u! y& |1 `4 h4 l0 j" L
  95.         if (strlen(stbid) != 18) {
    6 [( H6 e9 W& A7 _# R; F) T2 }5 }
  96.                 printf("Invalid stbid\n");6 E: L  D) C! z4 e& p( M3 e
  97.                 return 1;
    " E4 t  n! f, |1 v, `! y
  98.         }
    / U8 v8 d9 k& z6 G8 S" s' Y) Q! }
  99.         printf("\nNew parameters: \n");
    1 d' d2 h) ^5 r4 J6 r# B  X' w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* v1 z" a7 _3 @' x# M
  101.         printf("  STBID: %s\n", stbid);
    3 V/ J* v' `; B$ }/ b3 k

  102. ! ]5 e8 S5 |6 o2 W9 q0 H  v
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . Z2 y$ W& T" Y( l: ~5 `3 ~
  104.         for (;;) {
    . i6 x4 C' H: H4 D5 e* [
  105.                 c = getchar();7 z8 |( l$ k% ^7 Y0 j+ w. Z$ C
  106.                 if (c == 'y' || c == 'Y'). H4 q  J# G1 g; t
  107.                         break;
    * K' c- N* ]/ w& T6 W
  108.                 if (c == 'n' || c == 'N') {5 r8 w& a2 }( \4 I) l
  109.                         printf("\nAborted.\n");' x# @* R. Y% ]  L/ G1 Y
  110.                         return 1;
    : h& @7 @4 W4 _% f' P# r, ~8 a
  111.                 }' P7 D" P, Z6 B1 n
  112.         }
    0 I* Y: N2 ]+ o; S3 ^' M, \
  113.         if (writeparam(mac, stbid) == 0)
    * ^9 p. ]: p! I* ]- F4 Y  D) a, p
  114.                 printf("Parameters changed.\n");$ |9 ?1 c. T8 q' i' ~" e
  115. % N8 G/ @: j4 F2 V( y0 R9 O1 v! O3 C# X( m, e
  116.         return 0;; m) l3 _0 c. P9 ?5 Y6 s
  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
) l: r7 d3 }) L2 F4 e" J7 a* d. i, C在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ v( ^! j- V1 }你用的编译命令行格式是什么?4 L0 h/ L& `% P' ]; a
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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