查看: 16585|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* z" d+ P; K( G$ H* ~6 K0 s" m) U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 o% I* \# I9 u, l% p! c* ~
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 t: f. z5 c' u9 |, Kusage: himr <address> <value>. sample: himr 0x80040000 0x0
' C6 ?, L1 L: l/ z* j/ o% @. U  U- D4 I7 q! J

8 y9 T# K" `5 x6 X  `不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& v' w, q$ W5 R+ H8 z7 u1 t1 q

- _1 {, `3 F+ u补充内容 (2012-3-8 09:42):+ O) z; ?( c1 H- i# Z9 y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 T6 ?& E% Z1 S( R& b6 L7 ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。4 x8 O8 h$ _3 c$ K# e% k

' B4 g: |" o: @# g9 }* C) Zhimr <address> <value>. sample: himr 0x80040000 0x0
' j0 l0 G. W* V8 @
$ x/ Y8 R# U$ X7 D4 _7 w例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。: F+ T1 ?3 B" {5 l$ f2 K! s
himr 0x80040000 0x001 f" x7 S: k  g& Y9 q. _
himr 0x80040001 0x117 a/ c4 d, R1 ^6 k
himr 0x80040002 0x22) u  E3 {2 o0 J& D  }' W8 @7 P
himr 0x80040003 0x33
9 |3 t0 B' X1 M, m, ghimr 0x80040004 0x44
& |7 C! ?5 m0 G; ?9 _, Q1 r$ ihimr 0x80040005 0x55
( d/ q8 r8 N* L+ h% V0 D
8 _" ~& M  \8 v- {# V! Q/ x" ZSN也是类似。
* Q# `+ Y9 Z: [& Y9 T' |! N0 w
5 L2 w. Q  H! o( F8 [* v" D现在主要是,谁告诉我们MAC和SN的地址?* F8 W: O# D1 G
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) ~& u4 H! T1 r1 ~9 V- G  L
一直想找到运程修改MAC和SN的办法,苦于无解啊
: j8 J0 z: m# V' l2 r& z2 \
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# b1 a- g) }# o6 w# G0 r, H0 f( Y' J- i  \' z  T; z
修改的代码早有了。到今天不会编译。
0 I- l" P) e% O0 z! Y需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " N2 t! \. f8 P) p! O6 E& n
  2. #include <malloc.h>
    # [! E6 I  w6 x: i2 Q7 s2 R* K- y
  3. #include <sys/types.h>
      J" ?' S1 X% Z1 A' Z. ]
  4. #include <sys/stat.h>: q9 O) u% x$ ]3 c& e
  5. #include <sys/ioctl.h>/ i! S% h8 y$ _, Z: n+ O# A
  6. #include <stdio.h>! r) V$ c6 K; E9 \  m- ]7 i
  7. #include <string.h>
    4 q8 g, B4 ~' d2 j8 x5 R* R, g

  8. & n( N4 g* _, F
  9. typedef struct {
    ( O6 Z1 h) P8 ^- b
  10.         unsigned int        e2prom_cmd_sub_addr;( G* D( I: |# q7 i: V: [2 w
  11.         unsigned int        sub_addr_count;; J& b# M1 R  X+ \# L/ v  p& Y5 K
  12.         unsigned char*        e2prom_cmd_data;0 n) J7 b5 S2 H- K' |% l1 q
  13.         unsigned int        data_count;9 i. t; S- {" `6 C0 @- q
  14. } e2prom_s_cmd;
    0 J/ a0 ~4 Y; g) ?/ ~% F
  15. 5 S: X; B! G  x/ d& T; Q" ?
  16. #define E2PROM_CMD_READ 1: @8 j. z, I* D! T3 @4 Z" g
  17. #define E2PROM_CMD_WRITE 2, ?' N# d4 h1 |' g( \6 s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ V0 ?" M3 v+ ~' T% S* o! @: `
  19. : `4 `$ ~. l) w) P+ R. _1 H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" {  v' i) |$ h1 w! ^
  21. {
    4 v' F+ _, G3 y& U5 m* U0 m
  22.         int fd, ret;
    - L0 e& z& s# S! I0 D' M
  23.         e2prom_s_cmd arg;; V) y8 C! d4 `% s
  24.         unsigned char buf[0x18];! L$ t2 c$ {, D9 _( i
  25. " E8 e  d' X* i8 h  @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# g2 a# K4 P, c* T
  27.         if (fd  < 0) {3 j8 N% B: _; q3 |' p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - h/ T' H, D$ f/ I4 ~: g8 {& ~
  29.                 return -1;
    + K' ^2 N- A3 @; K3 a
  30.         }, m' ^% R/ ^- P# l$ `
  31.         arg.sub_addr_count      = 2;
    0 J' |' ~! i8 A( z% \1 T
  32.         arg.data_count          = 0x18;
    % K: G! s% ]; e% T' ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 S" Q7 i) b% w- u: _  F
  34.         arg.e2prom_cmd_data     = buf;
    " b1 ^! \8 q" O. \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    4 V/ w  s* M6 A" |3 y
  36.         if (ret != 0) {. a. ?# s% o# l# z- R" q+ X9 N- J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);6 H  P' y5 `$ V# }
  38.                 return -1;
    $ A+ q5 R) Z1 ^! `1 Q' q3 n
  39.         }' G  W! _* N. G! P  S6 ]
  40.         memcpy(mac, buf, 6);
    3 A6 ^4 k1 w! Q& T' H4 b
  41.         memcpy(stbid, &buf[6], 18);( M& r* ^) Q2 I" _( t+ A, T
  42.         stbid[18] = '\0';
    # g6 @; ~8 N) l) d7 z- P8 F

  43. 8 z1 w2 R6 \% p: K( U
  44.         return 0;
    ! @) b: M: X$ Z
  45. }
    + G9 W6 A8 j" q. Z& k( x

  46. / y6 K4 Z4 H/ q) N0 |5 _0 q' e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 l8 Q4 q1 h" O, j! Y7 K
  48. {
    $ ~% R; ~  x  `3 S* B
  49.         int fd, ret;) Y: }8 U' M4 g) |9 r
  50.         e2prom_s_cmd arg;/ o) h1 J- V- Y) k4 i: a
  51.         unsigned char buf[0x18];) b* r2 K  V( e& y" m4 C! y

  52. 4 `3 m$ \) B. i* g
  53.         memcpy(buf, mac, 6);0 }1 T2 w7 U  L) a
  54.         memcpy(&buf[6], stbid, 18);, J" C; A" q, z' h! @: u( p- Y7 e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 @8 m9 g% `0 G; x3 F
  56.         if (fd  < 0) {
    : E* y" ]. b1 _/ p) K+ T- k8 n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) n, M5 n4 b8 j, X! A) k
  58.                 return -1;
    . K- a' c6 m) E! _
  59.         }
    1 L, c6 }$ P8 M5 t  O. y0 I; s& V  Y
  60.         arg.sub_addr_count      = 2;! Z* V; y4 `% H- R& F1 P! Q
  61.         arg.data_count          = 0x18;6 R  A7 s% o& K. b1 B
  62.         arg.e2prom_cmd_sub_addr = 0x290;& H+ ]4 F& ?" [( y! q$ q# i# P
  63.         arg.e2prom_cmd_data     = buf;
    ' a$ h; t  U& l6 N
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);6 E% a6 M6 |) n  I' ^1 J& p- D
  65.         if (ret != 0) {
    6 `( Z! Y$ N1 R. ?3 O% f5 X, W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    / V* W4 t) M& J$ Y" W' H7 Y: ~; p
  67.                 return -1;
    8 B; `, S, `, E1 {# Q  e
  68.         }# @  T: g5 l9 R; i! s( i

  69. 6 l+ T' g/ @$ Z' C6 ^/ K
  70.         return 0;  `8 j. B/ D4 Z9 }- I
  71. }
    0 n$ \6 _6 D+ S
  72. 5 q; O  j) N# D$ E. m& B
  73. int main()
    ( ?. [5 r8 U, ^2 f' w3 v; }) K0 a
  74. {
    9 J/ W, ^1 V( T) g7 D' L
  75.         char c;
    1 I: S0 i# E! M) `/ ?8 e2 P
  76.         int i, macs[6];
    9 P0 ~1 p* o; `5 V
  77.         unsigned char mac[6];" M& I9 v* ]" S# p! T
  78.         unsigned char stbid[256];
    3 ^% n  y5 [  O$ B* T9 L5 w
  79. # `" j3 C  m. W0 W( S- I' N  r
  80.         if (readparam(mac, stbid) < 0)! Q& P8 E) U1 X& J, f6 U
  81.                 return 1;6 R2 E& A3 a0 I
  82. 1 @2 D4 U$ r6 I
  83.         printf("Current parameters: \n");
    , e, O! L: }9 d0 h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" ?" ?0 G# `4 d
  85.         printf("  STBID: %s\n", stbid);5 h8 p" ^, H" }
  86.         + s# k5 _: n( Z0 N+ H
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + S4 k( S6 w. Y3 R2 T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 T4 n2 D8 M% ?) |6 Z# |* @
  89.                 printf("Input MAC error\n");/ b* h# ~& f: g! n. ?% D* a
  90.                 return 1;, C6 p+ S7 L. v' s( ~
  91.         }
    ; |4 g1 J+ N$ F" E. \$ }) V* j8 i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 f) ^# _0 x# Y# |
  93.         printf("\nPlease input new STBID: ");
    % P# `. u+ L0 I; {
  94.         scanf("%s", stbid);
    6 ]3 H' y" f+ x% @; V
  95.         if (strlen(stbid) != 18) {6 h/ `( r5 H7 z2 Z
  96.                 printf("Invalid stbid\n");* K9 n5 m  w) b. r8 @
  97.                 return 1;
    / l' j* H. m+ y* @9 y* n5 [- z9 K
  98.         }
    $ X* Q6 J- U3 y
  99.         printf("\nNew parameters: \n");
    8 _9 J5 P2 I9 p  P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: n5 A2 ?. Z2 y' o: I$ S9 ]
  101.         printf("  STBID: %s\n", stbid);
    0 o( l( A7 T# ^2 O: W+ u

  102.   F2 b6 h3 H8 y. E6 U/ p; R
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 P) D2 I( i+ [0 @$ V3 M
  104.         for (;;) {' Y+ ]4 w. x& J; x
  105.                 c = getchar();! S* o4 Y. X! E9 f& i* S0 Z, {
  106.                 if (c == 'y' || c == 'Y')
    6 \% f! {0 E- D( F! e0 c- `
  107.                         break;
    4 q1 r: r0 z' q- c* I5 N# t! m9 r
  108.                 if (c == 'n' || c == 'N') {* \, G# ?# ^- R  n% ]: f
  109.                         printf("\nAborted.\n");
    7 e+ Q& R- G: p
  110.                         return 1;
    5 P, d" o6 G" I! x: c7 \- T
  111.                 }
    , q2 g) u& U! K0 r. {  F
  112.         }
      y6 Q) z! G/ h' U" h/ z
  113.         if (writeparam(mac, stbid) == 0)
    3 f, E3 p: X* T$ B
  114.                 printf("Parameters changed.\n");
    + ~5 I7 ]/ ?$ D* [7 C

  115. ; k  z) |" D/ j: M
  116.         return 0;
      Z, Y4 h3 E& p  u$ H. u5 v; K
  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 ! x' Q8 N# s8 M" ~3 G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ |- _6 R! L/ H7 I
你用的编译命令行格式是什么?" V: A! I& I$ b
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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