查看: 16977|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* X6 s* E6 K/ p" D6 _# l, K, ~8 a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; ~: P0 K- {4 y( `2 s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ L" l, a: _, i- ^1 V0 o
usage: himr <address> <value>. sample: himr 0x80040000 0x0' L$ ]$ J6 W' p& X* X& `3 X& `

( D- a& ?& r0 ^3 x8 ]
" C0 _2 n: l! g8 ^不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 U( X% u8 V& o1 Q& q% {; b

8 U5 }, q. a1 a补充内容 (2012-3-8 09:42):
- Y. C6 s8 t8 M$ p! Z6 ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  r/ |2 J/ T: b* t  A5 x8 }
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。+ ]4 C# R. r) {1 ?8 b& X' U" @
& n/ h' O, f4 x+ n+ t- [2 M( x2 @
himr <address> <value>. sample: himr 0x80040000 0x0
2 f0 \, r- D8 d2 h; f# |: G7 S- ?) z' n6 H. V0 b4 u" N
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* M! w# _* h# @himr 0x80040000 0x00
+ j( n5 a. h1 w) `" d+ Fhimr 0x80040001 0x11
: o% Y7 f* ?; |/ ?himr 0x80040002 0x22
* H2 `/ x2 ^0 k1 C6 M! W% _himr 0x80040003 0x333 S* T7 J3 b; R7 Y; n& v' V: j8 q
himr 0x80040004 0x44
( I9 A7 u. G) R7 \. q4 l& l  }+ ghimr 0x80040005 0x554 h5 P8 ~+ ]& W6 |1 \2 o

" q0 \  x- `% \, N2 q  i( q. ySN也是类似。9 L# F) A+ e$ x
: A8 W0 J2 ]- Z4 A
现在主要是,谁告诉我们MAC和SN的地址?
: x6 i/ G5 B( `$ ?0 t
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( f6 Q/ w5 F3 r
一直想找到运程修改MAC和SN的办法,苦于无解啊
4 S! b  l, S8 F9 c5 x
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 k. N/ i7 X  K, [0 a# `. a9 k# E$ v# `! h
修改的代码早有了。到今天不会编译。1 z7 s5 m$ E0 \, ?
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ K6 f' j0 U) j* b- y( a
  2. #include <malloc.h>& H* h# w+ V6 _' s2 i9 d2 p6 d% R5 }
  3. #include <sys/types.h>
    - t4 ^. _7 ^0 m- [1 d* p' b1 W
  4. #include <sys/stat.h>
    6 ]9 q% x  L, E1 M' ]
  5. #include <sys/ioctl.h>' u$ n6 q1 V6 Q% X4 o+ N
  6. #include <stdio.h>
    - A2 I+ T8 b- u2 [' U; o
  7. #include <string.h>7 f9 w) {2 @8 ^3 C* V& X; w
  8. 9 V- I9 |2 I  J9 x! M# T. s' j+ z
  9. typedef struct {
    & c. N3 _/ @3 y- Y" e
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 h' M4 j( P. ?) p
  11.         unsigned int        sub_addr_count;, X1 O5 p* S9 }4 h3 G) J
  12.         unsigned char*        e2prom_cmd_data;
    ! e( g- R# S7 S4 _' b* V! Z
  13.         unsigned int        data_count;) g1 f. H5 h$ N7 i( d3 R& i! e8 D; G) Q
  14. } e2prom_s_cmd;: ]$ r8 \1 x  e- K9 s% ^" c# _

  15. 5 \, c  o# W! J' h; D
  16. #define E2PROM_CMD_READ 1
    - x% d' A+ u' v+ m" m4 u
  17. #define E2PROM_CMD_WRITE 2
    $ d5 X0 v8 g( E5 v: u% \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' d) b$ o: f5 w) M' [; o

  19. ) O( w0 |+ E  m
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ t# R2 E+ ^3 I3 ~# S8 B
  21. {
    / _0 v2 O9 X9 o- w. J% Q" P
  22.         int fd, ret;
    ; W! ~# }7 ~% @0 R. V" ?1 S. n9 U
  23.         e2prom_s_cmd arg;+ u7 h5 {" n$ w6 a% s! n
  24.         unsigned char buf[0x18];/ Z; D$ n% q4 H0 q1 \
  25.   e8 @4 T, v* x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" r1 O! n( Y% U) _7 g3 A2 A: H
  27.         if (fd  < 0) {
    ( }1 L6 N/ S- {7 ?6 s# r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* L+ e5 t6 @# P1 ]
  29.                 return -1;; m  U% f& O7 O
  30.         }
    + o% {' V" G, o$ c; O
  31.         arg.sub_addr_count      = 2;9 j7 U, f; E1 i7 X9 Z0 L4 v  L7 D
  32.         arg.data_count          = 0x18;1 G3 X! D  g1 U( S
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 _6 Q6 U& v( \% y! [
  34.         arg.e2prom_cmd_data     = buf;% Z2 K+ z9 ^8 u3 K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 S8 E; R- {1 n) ~3 P+ J+ b
  36.         if (ret != 0) {
    2 m' j: e9 M( I  c% `. E6 q# T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; t5 t) C- @2 v+ L
  38.                 return -1;
      `  |! q7 B0 J! U. L- H% S
  39.         }0 C3 S5 U& a+ Z/ m' M1 U$ v
  40.         memcpy(mac, buf, 6);7 F. h7 H! a$ }- m
  41.         memcpy(stbid, &buf[6], 18);2 \3 a, L6 w% N9 a# X
  42.         stbid[18] = '\0';
    : D0 A0 T0 F2 o; O  h6 e
  43. : p% o# f5 h! L& h8 C" z6 k
  44.         return 0;
    + C/ u1 ^. A. g& \7 G
  45. }) t& m! v  v, p3 H) A5 o

  46. 7 U, q, C4 J0 k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 z' E  Y9 p, C" Z3 D5 ^
  48. {7 c) A# T+ A+ B! y1 \8 X- C
  49.         int fd, ret;2 d( J) ^: K8 s1 c( B
  50.         e2prom_s_cmd arg;  b% d8 K2 M( k) d7 F
  51.         unsigned char buf[0x18];6 t4 W# g& g8 j! S6 ]

  52. 0 D2 p, B9 ~: k$ O
  53.         memcpy(buf, mac, 6);# o* l$ M9 G" r$ S2 d7 X# z" s
  54.         memcpy(&buf[6], stbid, 18);) M* p1 L# v) R3 z1 ]/ X$ y$ P7 Y1 l
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: u: F, `5 T. h6 J7 |7 |
  56.         if (fd  < 0) {( \- X! L) h8 R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' p& j: x8 l8 E  O9 V+ R5 \- ~
  58.                 return -1;" M( q$ o% Z. r' \. ^
  59.         }
    ! Y2 N$ D5 B& ]1 G
  60.         arg.sub_addr_count      = 2;
    ! d& H4 J* y0 J- n0 q
  61.         arg.data_count          = 0x18;
    ( s. Y0 M$ q5 K
  62.         arg.e2prom_cmd_sub_addr = 0x290;' {9 e. o! K) x
  63.         arg.e2prom_cmd_data     = buf;
    3 L" G) V; l2 F; f- H& n, Q# Z& Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ C: H; r( |% J2 r+ _$ X
  65.         if (ret != 0) {7 X; q' [: ?1 Z1 B: ^
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& u  i' ?% l) C7 h6 D9 }4 A0 M3 ~
  67.                 return -1;: O) T% [3 A0 i5 ^
  68.         }
    " O5 N6 I" h+ k. k  s
  69. , l" b+ R" ^( G$ L$ ^
  70.         return 0;, l: i% }- k8 ?6 [9 g' k
  71. }
    2 U: c) [5 U  X7 F# [& V) v6 Y) I

  72. 1 u* J- \# ^; E8 r
  73. int main()' Z8 R( Z( h9 p5 u6 q& W- t7 x
  74. {, H( B: c! D/ p0 m
  75.         char c;
    ! X, B5 K: q; c3 o
  76.         int i, macs[6];
    5 T. R! D$ g+ l. m* {" \
  77.         unsigned char mac[6];" D* }  Z0 B* @3 w7 F: A
  78.         unsigned char stbid[256];
    + I! }- J* `3 `9 {
  79. $ x" S4 H, K6 d+ |) O
  80.         if (readparam(mac, stbid) < 0), z- C/ c( d. [5 G8 \' }
  81.                 return 1;
    ) a& W# }' n7 d: q) `

  82. 2 T3 I* f; w2 X+ o( d  O% c  _0 d
  83.         printf("Current parameters: \n");  g6 Z  Q1 V0 [8 r0 e1 e; D; M$ K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 p0 U- R& d' u! f! `' e0 C$ o! R
  85.         printf("  STBID: %s\n", stbid);
    , G2 B8 k+ v- _# G' `8 ]
  86.        
    ) m% c; i- u- c8 k* k& I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 |$ w7 _+ x; x  o6 I# N' Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 X3 F' V0 I- x4 f
  89.                 printf("Input MAC error\n");6 J3 k2 j) c) s
  90.                 return 1;
    ) {& x3 `/ I; O4 V
  91.         }( K) \/ p, ]/ Q0 z4 E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) O) Y3 A0 Q4 f6 Q/ N5 k
  93.         printf("\nPlease input new STBID: ");
    , {# M7 R; _2 H5 Q
  94.         scanf("%s", stbid);2 r; ~+ M/ J1 o
  95.         if (strlen(stbid) != 18) {4 e' @- T* C+ I
  96.                 printf("Invalid stbid\n");
    % y; x5 f' E, E# t
  97.                 return 1;9 X; o$ w, |9 I, r* ^% z) z5 l! v  \
  98.         }* g- S1 q$ N, ~
  99.         printf("\nNew parameters: \n");
    ! C# M; f; h5 I& X' F5 H' ?/ Z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% ]" w+ c6 |" e' {& t
  101.         printf("  STBID: %s\n", stbid);
    ! p+ w8 j) ]# P- _/ A! @6 B
  102. 7 B$ s# o2 d5 G
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 _5 J% ^4 N/ J8 y! h  D; r, W$ i
  104.         for (;;) {
    ! d) r/ C% v+ T, l
  105.                 c = getchar();7 _$ I0 f% W) f. m. s! q
  106.                 if (c == 'y' || c == 'Y'), O4 Y& O/ E' D: f+ D; v$ }* y
  107.                         break;$ t  F* |1 h4 Q$ J8 X4 t
  108.                 if (c == 'n' || c == 'N') {
    5 h7 W9 \3 O  J6 s5 C3 [0 _
  109.                         printf("\nAborted.\n");
    ! [) w* W# B1 z) L2 m
  110.                         return 1;
    6 U- Y& Z' M6 b1 ?8 l/ c) x  o
  111.                 }1 z: A8 [  H/ @2 P
  112.         }
    # P' L) j, W4 n& `  b" _! ?* [2 H
  113.         if (writeparam(mac, stbid) == 0) " X3 H2 p+ v$ M( ?) A8 ?
  114.                 printf("Parameters changed.\n");' I9 E* U; S/ i: @. h! l8 H9 L
  115. 1 R0 O, R- d2 d5 ?7 \9 a4 I
  116.         return 0;8 ^0 p* a( c* f: V) T" b
  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 9 {) C6 |+ d. r4 ~( O; M
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 ?# F# ?$ \" w9 i9 i1 [* J你用的编译命令行格式是什么?& g6 u( y. B! H! r" s& g
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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