找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15488|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr7 l# v2 \8 X1 }2 s2 ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - t8 A) X* f& V$ G' S
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* ]7 c7 d# o. q1 t
usage: himr <address> <value>. sample: himr 0x80040000 0x0
& ?1 ^. \4 D0 |8 s
& h; g2 u8 s$ P2 v$ u; v
. A$ U0 G9 `0 u6 Z4 S不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" P; P' y) \& }# p5 F, g
9 J# D. i/ S, X4 t9 Z( G4 w3 M
补充内容 (2012-3-8 09:42):
" }5 y$ }0 l- _7 u0 hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 s; i2 P# z! B8 Q: u2 N
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& B' T# ^& Y' R( v
' ]. v4 h3 d8 ~
himr <address> <value>. sample: himr 0x80040000 0x0
, ~/ P( k: H( ^# l' S: B* q) r0 }; ~# l! J0 p: ^$ y1 ~
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 v4 m: b' D5 {1 k( o1 S
himr 0x80040000 0x00
, z' e8 u/ Z9 ?1 N& z! ?himr 0x80040001 0x11
! c" H4 `' _" Qhimr 0x80040002 0x22
' m4 X* s% s4 x5 Zhimr 0x80040003 0x338 M( P- r/ {; ^& C1 g. q
himr 0x80040004 0x44
4 m" n- i% p- g+ i* k7 jhimr 0x80040005 0x550 u! h: T0 l0 R6 m# Z% }- D0 d

; M; b' ^8 i% e8 J  USN也是类似。
; u( B- b- E3 [9 }+ y  G7 W& o
5 U* @& w0 ]3 c# b# J2 [: m现在主要是,谁告诉我们MAC和SN的地址?  _4 O1 S( C4 I8 n- F5 O
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 F7 |1 Q* O/ [' z
一直想找到运程修改MAC和SN的办法,苦于无解啊

) t: J, T' R  j* v源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 8 i% j, e- n. {5 S9 G  \& _

+ J$ z( L, m' P修改的代码早有了。到今天不会编译。
0 Y8 M6 f% ?1 X* U9 P0 v需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 V) E/ d8 _, G# m- Z
  2. #include <malloc.h>
    1 E. z; r+ U" j/ n4 f
  3. #include <sys/types.h>5 a' n6 x% L/ y' a& W+ I4 t! f
  4. #include <sys/stat.h>! _, W/ t8 m$ G; B/ F' G3 ]6 t# R
  5. #include <sys/ioctl.h># n5 O  d  [2 X$ Z, n! j+ m* n% x6 i
  6. #include <stdio.h>- p5 k! H5 G: j/ _& q* ]
  7. #include <string.h>
    2 s! n1 J$ {" ]# v

  8. % E6 o1 P/ v+ E5 Y! f, L
  9. typedef struct {. P7 m) F" y* g: H0 c
  10.         unsigned int        e2prom_cmd_sub_addr;5 B- i- s+ t% r. T. B$ H
  11.         unsigned int        sub_addr_count;
    + e. V# G' A2 q1 h% [% v+ C; |
  12.         unsigned char*        e2prom_cmd_data;
    7 x( S6 i& ?0 @/ q0 O9 f
  13.         unsigned int        data_count;) J4 {1 t  B5 ?7 w- l3 e, V
  14. } e2prom_s_cmd;, l1 P) v  w3 j. m5 t
  15. 1 K# J5 J6 \8 t! r. |: q
  16. #define E2PROM_CMD_READ 1
    ! K: q6 q6 d$ `; k# A
  17. #define E2PROM_CMD_WRITE 27 G% }" r! g  ~; f( E; x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 g+ |" w4 L+ O
  19. 4 h& \: P. |; z! D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 @" Y4 o5 n- `9 y' |
  21. {
    * g1 |. T3 ?/ E( I- B2 Z
  22.         int fd, ret;
    % C& z7 n3 ^1 J9 t: [! Q$ Y* `9 s
  23.         e2prom_s_cmd arg;. B& E" N3 K1 Q! c9 `( y
  24.         unsigned char buf[0x18];2 |1 r! ?# a$ K: S0 i+ t
  25. 0 A; a9 S+ S# h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 S, X+ M6 ~2 l, m
  27.         if (fd  < 0) {
      R1 P6 `8 j5 U; Z6 o  k0 a! K% H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ i, d4 X% s2 V6 j1 L% `. O& I
  29.                 return -1;
      @/ H" q% y; \) N9 @
  30.         }
    % o3 w8 R* R" D# Q5 R( U) m
  31.         arg.sub_addr_count      = 2;
    % O+ M+ W3 Q& E: y: f4 `
  32.         arg.data_count          = 0x18;, i3 P+ m( d0 c% f$ _& P6 s
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 L% S; `* u8 \4 o3 M- P; M
  34.         arg.e2prom_cmd_data     = buf;
    0 Z$ o8 B' c$ t/ D! e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# p8 _+ V5 H, c# H8 L
  36.         if (ret != 0) {9 |% I7 E, G  o& v% `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- q. x  D9 B# F, m2 j
  38.                 return -1;$ y- `1 @$ [# i) ?6 o  f7 \' t$ s
  39.         }
    ) x. v! l1 g" X8 u
  40.         memcpy(mac, buf, 6);
    * ^  z& d" Z& ?0 @. S" m) V9 m1 B/ o4 a
  41.         memcpy(stbid, &buf[6], 18);
    0 k* ~6 z0 N0 o! o+ n" m
  42.         stbid[18] = '\0';
    * W; g; D0 Q2 c; u  Z; W' o
  43. 6 n1 W0 a+ d  |
  44.         return 0;, |7 Q& _1 o. b" H2 H. o
  45. }
    * h" ^6 Z; U5 c8 E: M& E

  46. 0 m# G  @+ t/ q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % z0 @; a. A6 E/ i3 `$ R
  48. {, Q7 l( W, n; ~) W7 F( J
  49.         int fd, ret;
    ( \* s  x8 p- d
  50.         e2prom_s_cmd arg;) p! j/ E0 L! }2 y3 f3 @
  51.         unsigned char buf[0x18];
    $ |1 p6 K( v$ B& u8 k, X  h
  52. 4 c6 [/ g9 ^- `% Y- J" l
  53.         memcpy(buf, mac, 6);" J: p1 @* u, J, ^9 P4 g8 Z6 D+ z8 R3 A
  54.         memcpy(&buf[6], stbid, 18);
    - v0 R! }3 J/ X; g0 T0 h+ f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ X3 M, q: c! T  e7 q$ K9 L# |: |
  56.         if (fd  < 0) {, a) V8 M, z% Q% U/ k+ m" W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 z3 U& {* X+ Q* d
  58.                 return -1;
    + s# \- v+ C7 y9 b; J* F2 z7 L
  59.         }6 o* J; k; S; r) s; \
  60.         arg.sub_addr_count      = 2;
    7 y& `- @( s  r1 K: a! \9 F
  61.         arg.data_count          = 0x18;! l% _( f8 L7 o8 w3 M/ r$ B
  62.         arg.e2prom_cmd_sub_addr = 0x290;- j! j7 B* q& `5 `3 E
  63.         arg.e2prom_cmd_data     = buf;
    # K! p: v/ ^1 h& Z6 P6 n0 J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 v; O9 }* I9 z  H
  65.         if (ret != 0) {
    4 Q! ^" S! y- A/ P- O% n0 F- f/ Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & k4 q! s4 ]) F, m; _' G
  67.                 return -1;1 s- J* f7 b1 [
  68.         }" N4 _2 ]9 t6 m* k- `

  69. 4 O1 u) S5 d. I2 n2 |0 E% l" {/ ?
  70.         return 0;- c6 F4 g8 l! g' m" t) P
  71. }. R1 H" ~* y" |. s8 {3 y( w
  72. ( f* d6 O4 [, M( M+ w8 o& c+ |
  73. int main()
      u5 U% s% g4 y5 W! l3 k) J
  74. {2 ^+ D) k! D+ I) d. h( w; _( Q% E
  75.         char c;
    5 p7 J+ y* A* v
  76.         int i, macs[6];
    4 x# c9 ]0 o( ]/ o5 r( C$ q8 k
  77.         unsigned char mac[6];
    $ @* u' B  ~; x$ r
  78.         unsigned char stbid[256];
    1 U% V5 |8 n, B* d5 [

  79.   O. y+ O" v# A/ l- d4 M+ C' Z
  80.         if (readparam(mac, stbid) < 0)! p6 ~+ R& _7 O' a
  81.                 return 1;
    / Y, s4 c3 R  G  C0 k
  82. ' u# x! z6 X9 Q( }& |9 ]: E
  83.         printf("Current parameters: \n");* k1 }3 y+ i" U, N# j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ y9 B6 A& I4 I9 B( a
  85.         printf("  STBID: %s\n", stbid);
    $ Y1 n1 V$ g( S+ Z3 I) x
  86.         # q4 Q* E* g  g3 F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 ?' w0 T, t6 K( @+ E: Y. e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 I6 v0 M% `- z: @0 j
  89.                 printf("Input MAC error\n");
    ) Z0 C" ?1 D; B. W% ]' p
  90.                 return 1;
    5 g- k$ H5 r6 {( e' B  w8 E8 D
  91.         }
    ' G4 ^0 |; h7 H# ]
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & h8 _* w4 L* P0 w9 ?0 r# W
  93.         printf("\nPlease input new STBID: ");
    ' C% p2 {( A/ R7 W! M  y2 {+ ]
  94.         scanf("%s", stbid);/ s6 V6 w4 J: J2 q$ s  h$ W" l
  95.         if (strlen(stbid) != 18) {
    - Z/ M- p' d1 O* d6 O- ]
  96.                 printf("Invalid stbid\n");" \& z# t' |' O5 [: l# g' D( y+ I' @
  97.                 return 1;
    2 Q+ y; A+ _# p7 ~; x; O. N  Q
  98.         }7 |! }. J. n, |7 Z
  99.         printf("\nNew parameters: \n");
    0 B5 ^6 ?& ]1 V0 x: V: S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! u  [9 W/ `6 ?0 f
  101.         printf("  STBID: %s\n", stbid);
    " Z' k5 d8 m' d4 l5 J% g& R3 ?# L& ~9 k/ Q

  102. & \& w. a1 U% r
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # s+ R$ ~0 c' o/ o  j* o; b9 G2 m
  104.         for (;;) {
    , G6 z* g: E9 x% [2 ]  Q9 }
  105.                 c = getchar();- i* f2 v  X1 s- b' o) [
  106.                 if (c == 'y' || c == 'Y')
    & W6 _. O0 h8 k, B
  107.                         break;
    + f7 |* m" q" Z/ P
  108.                 if (c == 'n' || c == 'N') {4 b* A5 D& }: W' Q$ [8 Z
  109.                         printf("\nAborted.\n");/ ]& o. x% k* q& U( B) o
  110.                         return 1;  W% V, R  {$ h3 U+ w- b/ G
  111.                 }
    - L' m+ v' X6 y. G( S# y0 V9 r
  112.         }; ]6 J9 {* N  v1 M5 h
  113.         if (writeparam(mac, stbid) == 0) 3 S; ?2 Z+ |) r- A% g/ ^
  114.                 printf("Parameters changed.\n");
      s, e4 y6 c, K2 S

  115. 4 l! d! ~, ^( o: o3 v; w! v
  116.         return 0;
    4 p$ o: d5 }0 c2 I. n, r+ ]
  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 3 S0 K# a# i  F6 }, m9 z
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

9 |5 _: J( i1 E6 u你用的编译命令行格式是什么?0 s$ E7 z5 I7 ^2 W2 y# `
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-11 00:51 , Processed in 0.028471 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表