查看: 16288|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 z7 ~, {5 \& v/ q3 ]
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    + Z% W/ F' Y, ^9 O" O, Q3 s8 F2 W  V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:+ q' G; \! o& E# b! H" n$ B
usage: himr <address> <value>. sample: himr 0x80040000 0x0) E2 h- `2 M& D

. B* d+ R2 m0 i' R5 X9 t- J) l' L5 e! m6 ^+ H% U
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; c- H" p+ k# ?  w7 z
6 E9 D9 f8 q  F
补充内容 (2012-3-8 09:42):
- b; }4 z2 C% |% w4 N1 _7 ]http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, H1 U/ R) l- H, `+ u7 N5 h' S
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。% q- @) x5 G5 b% \/ q2 A6 N
& o) `+ B9 d- u- _3 ~
himr <address> <value>. sample: himr 0x80040000 0x0: O2 ^- A" h' E  t

$ a# r% ^( G- F7 U" x3 Y例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
1 o3 J: T$ M1 |0 n$ r: L: k3 ]himr 0x80040000 0x00/ r% R+ _  [; x" T8 z% |) p; f1 W# E
himr 0x80040001 0x11
) H# Q/ s" }1 u9 v% O# Jhimr 0x80040002 0x22. z. T# r- I9 t: V
himr 0x80040003 0x33; f0 s# I+ e; ~5 u/ W+ D9 m
himr 0x80040004 0x44
5 v+ ~7 H% c  E; @, vhimr 0x80040005 0x55
; w5 I6 w$ V7 z% `- S, G; Y1 w0 m4 ~; p5 }7 b1 z( ]* i
SN也是类似。! `/ d9 e. ]& \* H5 R

: P: P. I( w" W) I现在主要是,谁告诉我们MAC和SN的地址?7 _$ U3 I; n4 n0 r  [4 p2 U* }9 B
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % c' l' Q/ o0 V
一直想找到运程修改MAC和SN的办法,苦于无解啊
( [) s  T4 E5 ?" ?% b
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 2 p* k: M, A& T4 l% J* i
; {8 W, W6 O3 [  y  Q: |2 V
修改的代码早有了。到今天不会编译。
: o* J4 D; T: f  Z( n8 b8 J需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) Z2 }/ D- Y( X; K2 P/ r
  2. #include <malloc.h>
    8 r7 ?5 N3 w' d1 z( k' V. a
  3. #include <sys/types.h>
    - {; x; R8 {- ~! i: C2 M# C
  4. #include <sys/stat.h>
    - B& n  f- _7 U2 |/ S4 F8 X
  5. #include <sys/ioctl.h>0 E$ J8 c1 `2 J9 j/ Z! N
  6. #include <stdio.h>
    - ?" o! o- W* y: ]0 q. T; p( W
  7. #include <string.h>
    + _: p) u0 L% s/ D1 p& a* j/ ^" i2 _* U
  8. - ?2 F4 d0 y8 w! m' {4 X  _1 O
  9. typedef struct {
    4 U" d2 p* A' x" t5 j+ ]- {) R
  10.         unsigned int        e2prom_cmd_sub_addr;2 b1 H7 q. \! r" ~
  11.         unsigned int        sub_addr_count;
    6 R* X8 {( K2 C+ T
  12.         unsigned char*        e2prom_cmd_data;
    % ?6 r3 f: J2 i; j7 H7 G
  13.         unsigned int        data_count;
    4 B; i# z+ O7 ]" |  W0 ?% Q
  14. } e2prom_s_cmd;/ i; p- |1 h8 b6 J2 _( X% r
  15. 4 o; O3 O3 {, h) Y8 S& X( i- }
  16. #define E2PROM_CMD_READ 10 Q0 T. N/ G; s( f4 x* g. i; o
  17. #define E2PROM_CMD_WRITE 22 s$ z& a# X2 n) [( T: P' ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      V2 ]% l: q5 g/ x( W

  19. : P' ?5 u: k6 ]0 H8 B, D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    # Z: R( \5 ?& Y# T4 M8 m/ o4 ?# Y) G7 o
  21. {
    ! D: Y3 l, a* `% U- I2 b
  22.         int fd, ret;
    $ K2 S! r$ B+ c7 F
  23.         e2prom_s_cmd arg;; _! x3 R8 h; a$ k$ @0 e
  24.         unsigned char buf[0x18];
    3 N) s1 S4 Q1 P: l8 J! e( L/ t0 b

  25.   ^* x5 R( L3 |5 x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( F2 T" u5 R: E; _- ~- j0 p
  27.         if (fd  < 0) {
    7 c9 d  l/ C. e1 L! e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( l0 k3 _% N& j3 G
  29.                 return -1;
    : O. H$ D7 W. M6 p+ ~
  30.         }+ |5 c* V2 u9 O' S9 k
  31.         arg.sub_addr_count      = 2;# q3 y$ g. ]" J
  32.         arg.data_count          = 0x18;
    2 x# i$ P2 @% B& @0 V* a
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % f! _" b6 Q* T- v: W/ W
  34.         arg.e2prom_cmd_data     = buf;
    " b/ ~" V: _# ^* ]4 _. J! @
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' q1 z: h) Q) T
  36.         if (ret != 0) {2 `: H( B4 a; l! O- r4 ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( [, s5 ]$ h9 S
  38.                 return -1;
    8 ^! `) {* o* z" U! q8 {- K  I2 V
  39.         }
    1 Y/ N* z5 T3 n  a# p) `. N. k$ O
  40.         memcpy(mac, buf, 6);
    * F/ w  A! |" J8 I: F& ]' P
  41.         memcpy(stbid, &buf[6], 18);: U5 v* |; o' \7 Z3 x+ z
  42.         stbid[18] = '\0';8 Y) |4 d: G+ ?6 c/ B/ v
  43. 0 G  x1 `4 ^" g
  44.         return 0;+ p, z. z, @' e% |. p
  45. }3 U# V. L! c6 K7 P$ ]9 l$ d

  46. . m" F+ C) F2 `( x9 k- q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # A4 `6 [9 @' ~$ m  i
  48. {
    ' Q5 i/ U# W8 A# K
  49.         int fd, ret;% b, c6 C% f7 m; \' X: ]  b/ e3 i5 h
  50.         e2prom_s_cmd arg;8 g" V% g5 v% I! B1 y
  51.         unsigned char buf[0x18];" w) v& s* t0 ^  U
  52. ! M, f3 ^( X$ C9 X
  53.         memcpy(buf, mac, 6);. M/ Q' E% ^: W$ \2 }
  54.         memcpy(&buf[6], stbid, 18);
    ( w/ [; d, x  m2 m3 R" J7 }4 g
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 e! w, R% R! ~0 Y2 ^: y, u
  56.         if (fd  < 0) {+ w' y: @  r) ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% i- y8 i! Y2 _% S5 R2 `
  58.                 return -1;. v6 _1 w3 t: O" x# I; c9 S/ {
  59.         }4 F! x6 k8 d: o* P- B
  60.         arg.sub_addr_count      = 2;
    3 O% j0 g9 N0 h
  61.         arg.data_count          = 0x18;
    2 ]. m2 _! z+ M" k$ Q9 k; G
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! e8 J/ R  h: [
  63.         arg.e2prom_cmd_data     = buf;+ [' ~! P) [( U3 ^( D- U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  H0 e% i7 ?- J# L' P8 e$ @& U
  65.         if (ret != 0) {
    : Y+ @7 s' _- Y/ ~( D  o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & {' a( K  t  ~9 n& n9 i% P
  67.                 return -1;: O1 V" Y7 H& Z# C8 S
  68.         }
    ( h/ K; z( I5 U

  69. / H& N3 g4 h+ _1 b  O
  70.         return 0;
    ) `6 k( d( Y3 ^$ t% ]
  71. }
    , }6 d. w- A8 F, H+ {/ ?9 \3 o
  72. 3 F- T* u$ ]  X$ r+ B  _& E
  73. int main()4 X! I; L4 z* [
  74. {) l6 Y) p. L6 T& o1 |, X
  75.         char c;
    1 u4 \0 d" s0 L3 K& m( @: e
  76.         int i, macs[6];
    * x7 e) w1 H* ^" i9 l
  77.         unsigned char mac[6];
    * G+ G. F; \* E7 T
  78.         unsigned char stbid[256];
    & G5 Z1 H) S! x4 y2 t7 ^8 X* C
  79. 3 g' O3 G) d& F. A
  80.         if (readparam(mac, stbid) < 0)- H0 U; x, i+ C9 g/ K# r- ]! `. l. c
  81.                 return 1;: m5 p- @" x8 N/ d
  82. % m# Y7 u* T$ _  e, N# L
  83.         printf("Current parameters: \n");
    7 |# I6 V0 L% B( |9 b$ N1 w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ K# N1 o/ i! {
  85.         printf("  STBID: %s\n", stbid);
    4 Q/ |* q. u0 `& D
  86.        
    . f( p9 r+ \2 c6 s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    9 q8 v4 W0 U2 k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 G% ^! C6 M6 e
  89.                 printf("Input MAC error\n");) V/ u" N; v2 s) E8 {5 X
  90.                 return 1;: u' E% }2 l6 f# o; H- A# I
  91.         }/ _' Y5 M/ p* Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! T2 D7 X8 w/ W3 a4 `$ t9 U
  93.         printf("\nPlease input new STBID: ");
    - y9 c6 a$ r; g6 g: t7 l
  94.         scanf("%s", stbid);0 L( g% `$ w1 ]) F# F
  95.         if (strlen(stbid) != 18) {
    . \/ {( g) ?0 T7 d1 g. i
  96.                 printf("Invalid stbid\n");* ]$ A; \0 d8 s  X
  97.                 return 1;4 ?+ j- U  t/ v$ y
  98.         }
    4 ^$ C: n$ `: D  T# [4 Y- p' N
  99.         printf("\nNew parameters: \n");0 {0 K0 F& j% \4 `$ j7 L0 U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; z1 v* W+ h: h
  101.         printf("  STBID: %s\n", stbid);
    ) D9 a9 j* W9 x5 B- I$ @+ @
  102.   M  `6 h1 T* U8 }$ h  I: F
  103.         printf("\nDo you want to change paramemters? (y/N) ");! p, Z. t8 {4 Y0 F7 l
  104.         for (;;) {# u. P4 ?8 B# s
  105.                 c = getchar();
    ! ^; Q7 J( q1 q$ o. V- I& x
  106.                 if (c == 'y' || c == 'Y'): U+ a2 [$ d5 \" c( Z
  107.                         break;1 R* W- E3 T- {! d
  108.                 if (c == 'n' || c == 'N') {% v9 u7 u0 I' S) f
  109.                         printf("\nAborted.\n");
    , p0 Y& Q8 e# d
  110.                         return 1;/ V# v# E# Y3 e5 f. ^7 t* q
  111.                 }2 d, G# T* O) C+ J* N3 T4 v7 s
  112.         }
    + x* K, }3 t9 v/ P5 X
  113.         if (writeparam(mac, stbid) == 0) # S" E9 ^- a6 D0 I" O
  114.                 printf("Parameters changed.\n");5 [) r& S$ V* K, M& _

  115. 4 T8 \$ A- r/ x- E. A
  116.         return 0;
    5 {5 ~: U- 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 " a+ _4 J/ p: O0 a6 ]% @. B: w
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" c/ O. p& O/ w
你用的编译命令行格式是什么?
' X: j6 h+ M0 r: v8 i
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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