查看: 16654|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 }7 @, J; Z9 B5 g! A' S
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 ^2 Q! ?; c% K* k9 G% I0 V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. x8 D5 e6 i( B7 J8 E) G
usage: himr <address> <value>. sample: himr 0x80040000 0x09 s/ O: c. r# V; i5 T; m
/ j( i, U6 G4 T% M* R' V- t3 d

7 i  ~+ _% G+ A  _; M不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
2 O! Y9 T7 F9 j  C6 f' [; K
/ B; b$ U( F& A补充内容 (2012-3-8 09:42):
- F# E, s+ U  z, x6 a% M1 i( ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  Z9 P' O6 K" O0 W
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。2 |7 J5 G' v# a/ R6 j4 S4 Z, a5 e4 U1 H

0 p) Q$ a0 X7 Q3 lhimr <address> <value>. sample: himr 0x80040000 0x0
' h" K4 a  U6 N; i8 E. {! y+ h, m# {& E. G9 X" h
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# i7 P$ ~8 M6 G8 a$ O: ?+ _6 N
himr 0x80040000 0x00' g& \0 v, d! l
himr 0x80040001 0x11- R* x  `7 f( m3 w7 q! s
himr 0x80040002 0x22
+ v8 R+ J$ ?( e$ j% D3 yhimr 0x80040003 0x33
6 Y. w$ q. O" Hhimr 0x80040004 0x44
- b1 o" G% Q# k8 e: I" m5 b' g; ?himr 0x80040005 0x55
6 n2 {, A1 U( V, K% I( R
) i( v# ?9 b2 l6 I2 n% S+ y1 K/ u: cSN也是类似。
$ S1 H8 j  K3 s8 }0 @* z6 m& A7 K5 p; r* Z" O
现在主要是,谁告诉我们MAC和SN的地址?" d' {( c9 u! T- z5 j
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 [$ T9 V) y. N* }+ k4 O7 k9 o' H9 o/ v
一直想找到运程修改MAC和SN的办法,苦于无解啊

" Y/ C9 P3 j8 z7 ^源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ e3 i2 ~4 \& P7 A
* l" ?, G+ z. B6 L- @8 C. \9 J修改的代码早有了。到今天不会编译。7 l1 M; j3 m1 a. ~
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) R* s. u, k8 S3 t( S
  2. #include <malloc.h>& k6 ^0 X$ L' Y0 }& \8 v7 |# G5 e
  3. #include <sys/types.h>
      I& j) W2 F/ f. }
  4. #include <sys/stat.h>
    6 Z- R( \: Q+ Q+ x  b% _5 L4 |/ U
  5. #include <sys/ioctl.h>
    % @2 B! H( T1 G+ @5 t9 e+ P
  6. #include <stdio.h>' k# V: p3 y4 G/ k, d) _/ Z, O
  7. #include <string.h>
    - x( A+ H* R# f

  8. & `3 H4 C/ e4 Z1 A; d0 |
  9. typedef struct {
    ; [+ ^! c2 Y6 W7 p/ b
  10.         unsigned int        e2prom_cmd_sub_addr;, t8 u! ?+ u3 \! ~; K4 G
  11.         unsigned int        sub_addr_count;
    + Y& ^$ p" ?2 G' u* d
  12.         unsigned char*        e2prom_cmd_data;
    - P. E- n( f4 S" _, c; j1 H
  13.         unsigned int        data_count;
    1 c' ?# h  q/ |
  14. } e2prom_s_cmd;
    2 ]  @% Q3 Z% a. J1 P( B

  15. 2 O% D. u8 z. Q; P" C8 n
  16. #define E2PROM_CMD_READ 1+ j- H/ B; B4 N7 v+ C9 J
  17. #define E2PROM_CMD_WRITE 2
    ! C* |. L" D: }* }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", q; Q4 C+ i) g8 ]
  19. ; p3 }1 c: g6 i' H6 o' }# F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 n: y, C" J: C# p0 K# t
  21. {7 @/ g% q" s3 [/ E/ d
  22.         int fd, ret;
    " H3 Y3 S9 T# x/ V: m' ~
  23.         e2prom_s_cmd arg;  `4 G" K! z, T
  24.         unsigned char buf[0x18];) `+ Q. o# ~! W, v& @- I, n

  25. ; R! d. @( Z0 ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % W' t6 f/ ?2 P( G7 s& j9 L8 ^
  27.         if (fd  < 0) {
    ! w3 [! ~8 q' i+ ^$ a" W
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 T: R9 x" b- b9 Y: J* P
  29.                 return -1;
    + D5 w4 F7 G9 ~' F1 E
  30.         }
    . M/ ?* f: l( C9 D5 D; W
  31.         arg.sub_addr_count      = 2;
    % b5 R/ M6 `2 x
  32.         arg.data_count          = 0x18;
    1 e. n1 b: R% t6 @/ O+ y
  33.         arg.e2prom_cmd_sub_addr = 0x290;: k3 M, Q6 n. d( \3 P" B& e3 i; j" Q
  34.         arg.e2prom_cmd_data     = buf;
    ) O, @4 N  O, i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 X3 t0 g: U% Y9 N
  36.         if (ret != 0) {
    4 [1 T# n8 f4 I: {* Q% |0 r. p. O- o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- E0 F7 o0 ]3 U6 ?* n
  38.                 return -1;
    ; p0 S1 [1 `- d3 F( L7 i
  39.         }
      N* h5 Y% w' N4 ^# z
  40.         memcpy(mac, buf, 6);: a+ p! e3 m! L8 S! ]! l4 Q+ \
  41.         memcpy(stbid, &buf[6], 18);$ H) `6 t- A9 V2 M$ Y
  42.         stbid[18] = '\0';& Y- \  p5 b' Y0 ^

  43. # L" u( `0 B- b4 K# P! r9 C9 M
  44.         return 0;3 n6 U  N/ f3 d; D" L8 n
  45. }/ K$ x4 w  k4 W3 e! i) H2 L" P

  46. ' `' W& c. W9 }- U& z4 G# h$ q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). V7 _- ]8 R; d. F3 O+ ~5 U
  48. {
    6 U% Z/ o2 ?' Y! W$ |
  49.         int fd, ret;
    3 o# d% X, t, y1 t
  50.         e2prom_s_cmd arg;
    0 I. l+ O; I& h
  51.         unsigned char buf[0x18];
    * z, A2 l. A2 T
  52. - W  {8 g7 Y7 r' b( f+ z
  53.         memcpy(buf, mac, 6);/ R2 f; A* I. S6 c* [! E1 {
  54.         memcpy(&buf[6], stbid, 18);3 ~- R# g' Q9 |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; R; c/ L% @* {7 l
  56.         if (fd  < 0) {8 X# ]! t0 O# a; ~$ R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 l8 M) _* M/ z
  58.                 return -1;3 q. j$ b6 I) s6 K+ W
  59.         }
    4 W$ \3 H6 D5 X1 H3 A
  60.         arg.sub_addr_count      = 2;2 ~  q8 x9 Q* T9 B
  61.         arg.data_count          = 0x18;
    2 Q1 P1 |2 [7 x0 ~- }% \! x/ |0 @
  62.         arg.e2prom_cmd_sub_addr = 0x290;  e# S8 Y7 J- C5 j1 n
  63.         arg.e2prom_cmd_data     = buf;2 L0 b3 p% C* f0 x" J8 `- o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 e1 L6 |9 B$ b7 P
  65.         if (ret != 0) {: N' j; u7 S8 _& j* \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 P4 u! o( }) P4 |
  67.                 return -1;
    ; f1 {, X, Q, q  [
  68.         }4 R; R% u8 ^: X

  69. 0 K4 q8 L% Q( _3 U! L
  70.         return 0;& e  P2 v* {3 l+ ?% f( |4 x
  71. }
    : p: H% F9 g3 \) E  |

  72. 5 s. Z! w6 N* [
  73. int main(), K, g4 h& {* u
  74. {
    1 F0 \0 R, L  i) Y& v/ w/ \$ H
  75.         char c;
    " g' p+ d+ b, a$ ~2 W
  76.         int i, macs[6];
      D* f" x6 i" q5 U# g, \4 T
  77.         unsigned char mac[6];
    5 f) Q; P2 a  ~# D- G1 T9 v
  78.         unsigned char stbid[256];, \: C; w# x: |& a
  79. - h: R: D) ]$ W
  80.         if (readparam(mac, stbid) < 0)
    8 F7 A9 \8 Y/ A  R! E6 s' V7 R
  81.                 return 1;
    2 S& h! i" T# [
  82. 6 ~' \7 Z) K/ u, y" |% ]; _7 Q. }+ w1 t
  83.         printf("Current parameters: \n");
    ; X! D) A* U; Z" y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 V( R0 O: Y0 b6 c2 \# {
  85.         printf("  STBID: %s\n", stbid);  e1 F" w4 y. c
  86.        
    5 O( ]6 a3 q2 x2 J- \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. q; g8 S5 n; V( t5 F* b+ K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
      E3 C2 s' `1 I$ a+ O0 a7 I1 X
  89.                 printf("Input MAC error\n");4 t' Q% |, ~$ t6 ?4 h4 j
  90.                 return 1;
    & F- l: ]3 d( o$ `1 `; T
  91.         }
    & e* U  u; U( E; }1 o% |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      ]$ n4 m! n# y2 {/ G; }
  93.         printf("\nPlease input new STBID: ");8 ^: ^) S0 H4 f2 D. B
  94.         scanf("%s", stbid);
    : S$ q' @" C. b) ?" Z0 I3 M  }; @9 Y
  95.         if (strlen(stbid) != 18) {
    ; d5 o& u2 N+ Z& [8 ]
  96.                 printf("Invalid stbid\n");% }3 z$ H2 E3 s
  97.                 return 1;
    + Z; }; D! I( ?* U  g9 k: R
  98.         }& _/ A8 P# c( w  d7 I4 j7 m
  99.         printf("\nNew parameters: \n");! `. l- y, Y  _! J& ?% e- B/ G$ c
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' G  \4 g! c4 ~% g/ u
  101.         printf("  STBID: %s\n", stbid);% `6 m/ c; j4 b3 [0 ]+ E3 ^

  102. ) i/ h. f/ R% A5 l; p9 o9 m
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - T/ B: }: [' b$ E
  104.         for (;;) {
    ( Y/ y& e6 w1 s4 {- D
  105.                 c = getchar();
    : `, @3 H+ T" w, o2 c
  106.                 if (c == 'y' || c == 'Y')7 M0 G. U; y8 R: i2 J% l
  107.                         break;
    6 ]7 `6 a" x8 R3 N9 o2 p* w, [1 U
  108.                 if (c == 'n' || c == 'N') {& b- b/ }. C1 Q2 a3 U6 k
  109.                         printf("\nAborted.\n");4 ~/ i/ R4 h" I' n5 t
  110.                         return 1;
    & ~( |7 I# d1 p9 L
  111.                 }. X" ?$ @+ Q# a7 D
  112.         }- C9 X& y, j( k3 Q$ D4 a
  113.         if (writeparam(mac, stbid) == 0)
    2 [) @$ }) n% G
  114.                 printf("Parameters changed.\n");9 d" @- U) x: g& Z

  115. 0 c0 e( o- X$ V7 |- ~0 j2 @
  116.         return 0;
    3 s* ]. q' @) E6 _3 J
  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
; t! w- B+ g+ q在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 l9 D9 l2 z4 K0 G1 C# K
你用的编译命令行格式是什么?: E2 g0 V. T1 n- U: ^# h0 w
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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