查看: 16802|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 u; U5 @8 Z9 {0 M3 U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* }) C: d& A, C& j, Z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ g- U4 a2 b9 S, ~
usage: himr <address> <value>. sample: himr 0x80040000 0x06 F; Y2 M  X7 y( e6 ^, }

9 h7 k+ I- Z7 E* H) n+ u8 z( u
  }+ ?& @/ ~" Q4 d: I( _不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& ^* o& z! R' m3 @+ P
5 m5 v: [8 `: _  F7 e" `补充内容 (2012-3-8 09:42):! k3 M" p* n' v7 H- D4 H' Y6 t7 P
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 T8 {4 f$ [+ Y0 v% q, J9 O
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。: _8 ]$ B9 w5 G: m! r" X8 O! K5 Q

' o, H; n2 u8 y& h, b" z1 Whimr <address> <value>. sample: himr 0x80040000 0x02 v7 O# l( Y5 _# ^

" `0 Y- s7 a- Q% ^5 l5 w例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* s& x  _% t! `" Ihimr 0x80040000 0x00
. c/ H) b- ?+ r; C1 n( w; Xhimr 0x80040001 0x11
6 K" p" i- V6 c. l/ t$ ihimr 0x80040002 0x22
& ~  v8 f2 A: G# i" U  r, Hhimr 0x80040003 0x338 n# _5 _- D+ X  X
himr 0x80040004 0x44
: P7 B, f* F. j0 {- s  ?9 }% Ihimr 0x80040005 0x55
6 _  f: q4 X" Q. b" o
3 ?, c/ p1 c6 E: x4 U4 @SN也是类似。7 a/ N# W. K1 Z8 Q% J# m, r- K

# |: q" `, s& G' t& @) `+ J现在主要是,谁告诉我们MAC和SN的地址?
" p1 o/ |2 t9 O& C9 q3 ^9 ^' \
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 e* _" s7 b3 E0 H7 K
一直想找到运程修改MAC和SN的办法,苦于无解啊

4 J5 h8 v/ P0 j源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
. x  S# l/ g7 s: ]
) E) V, c  X; m8 M1 i9 Y- V* B修改的代码早有了。到今天不会编译。
# t. g5 W! ?* f+ n; j" R需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 ^0 R. R8 A) @: x* ^# @* _( ?
  2. #include <malloc.h>% V; K- _9 c3 a( l- P
  3. #include <sys/types.h># `$ s) u- I# `+ R, ^2 `' v
  4. #include <sys/stat.h>6 F& P. I/ M% Z
  5. #include <sys/ioctl.h>
    0 J& b2 w* s5 j- R
  6. #include <stdio.h>$ b6 h6 K6 Y5 S- N
  7. #include <string.h>
    + g1 \  X7 X& r4 C1 D5 O- I/ \; i
  8. 8 N* w# R% t. D" f5 r$ {
  9. typedef struct {
    8 ?$ ]9 i* h1 r5 W' y4 T# Q
  10.         unsigned int        e2prom_cmd_sub_addr;4 o' T! t7 H/ ]3 G. {
  11.         unsigned int        sub_addr_count;& D' ^$ S" R% Z1 q0 {8 E: y2 d- r) Y
  12.         unsigned char*        e2prom_cmd_data;" E0 T6 p0 x5 y+ H0 y* A: h
  13.         unsigned int        data_count;$ s: `  n7 _4 a; ?9 b) D. X
  14. } e2prom_s_cmd;
    - S) c. a  H! J6 F2 g* r+ b

  15. 6 R) ^- e# s7 l0 }' K5 {8 l( ]
  16. #define E2PROM_CMD_READ 1
    + J& K# j& ?: I; S8 f
  17. #define E2PROM_CMD_WRITE 2! I4 ]1 y- S$ r2 ?5 R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & U# ~* d6 D) ^* }% C

  19. 4 V9 H( ]# q- C; P
  20. static int readparam(unsigned char *mac, unsigned char *stbid). i$ W$ i4 j) z* p+ d& Q3 C3 ^
  21. {* L' D7 x* @3 m) r) w$ x8 e
  22.         int fd, ret;
    ) @+ W1 W  K: X5 V; y( J/ R
  23.         e2prom_s_cmd arg;1 E& u* W$ y6 m3 A+ E3 m) u6 Y
  24.         unsigned char buf[0x18];
    3 G/ }5 N, a  x  U6 a

  25. . j4 H/ {% X" [5 |; m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);1 E1 a4 M9 L! T, x( Z' P
  27.         if (fd  < 0) {
    & l' V' |# @; b0 L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ n/ ]6 L  U$ t6 |; u
  29.                 return -1;
    ; _% \1 \9 D# I9 d9 F  N
  30.         }
    ! L# y. r, z( u0 z# P
  31.         arg.sub_addr_count      = 2;
    3 x/ {8 B- Y" t1 h& z
  32.         arg.data_count          = 0x18;% `# `* }9 h/ u/ K8 o) D8 d
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 m( ~& |+ ?9 q) u2 X/ i4 Y* D
  34.         arg.e2prom_cmd_data     = buf;2 m$ j" o7 @3 ^  a- I4 s! G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* |! X! w4 f* f) |
  36.         if (ret != 0) {
    " r4 K- d6 C8 v5 ]9 ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; D+ ]5 o3 D4 [4 u, s
  38.                 return -1;* j$ s- w: b' a1 T9 y! f1 \  h
  39.         }
    * j  ^. q* L% q# n$ k" {
  40.         memcpy(mac, buf, 6);
    7 ~0 \7 Y5 z" `9 F
  41.         memcpy(stbid, &buf[6], 18);+ q2 D' D" ]: q) j, k7 l" L
  42.         stbid[18] = '\0';
    : b$ G2 z' L# G6 J& a

  43. : {1 h) n) @) P, m# \$ J
  44.         return 0;
    4 Y, ~" p$ Y( q" x
  45. }
    - |! O5 ~' p+ E0 ^9 p

  46. # p0 [1 v* ]. a; o7 c$ {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % B. L1 W+ _: y$ J: v
  48. {
    , K' e7 [) w" A% y( j
  49.         int fd, ret;
    # e8 ^4 n4 X6 E6 V: L0 ~
  50.         e2prom_s_cmd arg;- l* {1 V5 P7 p* o
  51.         unsigned char buf[0x18];
    7 L  X5 a" j' H
  52. 8 s4 C: z/ w% v. r( t" R, K, J
  53.         memcpy(buf, mac, 6);2 }6 s! Z6 K2 u9 r+ \8 X: |
  54.         memcpy(&buf[6], stbid, 18);
    ' K$ ~( Q. I) K) I" w. V3 c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' B! @: k2 ~" ]! D0 ?+ O; N
  56.         if (fd  < 0) {, u. t8 G1 c+ V# F* y5 _3 l$ R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 l2 c# F- @: ^  [. j7 C* Z
  58.                 return -1;. W0 |3 ]$ k; j8 N( T
  59.         }
    . X" ^8 M9 S0 ]5 |
  60.         arg.sub_addr_count      = 2;
    $ Q' a' G+ h) T4 u8 w5 t& K4 e! b
  61.         arg.data_count          = 0x18;' I# \" V% C7 u( t
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' }8 f6 @/ y; c  o% [7 I* k0 G
  63.         arg.e2prom_cmd_data     = buf;' t, x. Q9 J: B& y  s: G" ?3 l, }
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + |1 l- n1 {1 z: L+ M+ w% s
  65.         if (ret != 0) {
    . Y) v% e2 W3 I: N1 E: b& S) ^
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # J" P. Z$ d! m7 a7 `" E; B. a6 E
  67.                 return -1;  K# l) Q  M' a9 \3 F( R9 {
  68.         }- A$ U; E! x% ~+ n9 H0 R

  69. / t6 ?: Y1 y- n) n% B, i) ^
  70.         return 0;
    ' f( N  u* v, r# R) S
  71. }& H8 y' S3 t, J. ?$ v

  72. + a3 Z! E9 s% t" d5 _' ^
  73. int main()8 O1 @5 ~% o& y: X  A2 z# E# q
  74. {* i8 b# P/ ?' C( A
  75.         char c;3 {3 q9 F- u2 n# e6 ^3 K) F
  76.         int i, macs[6];; J* j9 c* W5 h! K5 S. }6 ~9 q5 N
  77.         unsigned char mac[6];7 r0 M4 S! |9 L
  78.         unsigned char stbid[256];
    " X0 R8 Q, V5 b% E

  79. % `$ B$ R& ?3 A- }# c% b% @5 D: g
  80.         if (readparam(mac, stbid) < 0)* L2 M. l2 W& e
  81.                 return 1;6 _8 C; M7 p+ \1 b) d& B- L2 B

  82. ( a+ x% V4 U% a. ~; d1 `
  83.         printf("Current parameters: \n");8 F, X$ P3 f4 e- ~$ `8 c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% Z" g# g6 p7 D% B; B  x. V
  85.         printf("  STBID: %s\n", stbid);; V4 U9 ~6 V) k8 M, A! e
  86.         1 D1 G- F' y+ m4 L2 f, P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - H8 G* v: z& Z/ i" ?# P4 v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& U: E. h/ Y) w1 u& w! m* H- H: \
  89.                 printf("Input MAC error\n");
    ' H& d9 c3 e, {/ K
  90.                 return 1;
    1 r/ a- ~( `+ h6 i: _5 T7 \7 m5 j
  91.         }
    ( ]9 i, r2 \* @: q) N* b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 t2 O0 q$ k1 N1 S
  93.         printf("\nPlease input new STBID: ");
      k: w, Y, W8 J+ {4 _9 Q
  94.         scanf("%s", stbid);( k" {0 M5 a+ u* G* \- q
  95.         if (strlen(stbid) != 18) {( L8 K( m1 S* F7 X4 B% S
  96.                 printf("Invalid stbid\n");
    # }' v, ~4 r, H
  97.                 return 1;
    ; C6 G) t/ C; L. ?% {$ M
  98.         }/ E7 b% d3 z7 d
  99.         printf("\nNew parameters: \n");
    " ^8 E$ K7 Z9 K6 w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' B9 I. }9 L+ X& N
  101.         printf("  STBID: %s\n", stbid);
    6 A5 u7 h. m- q# K+ W" z
  102. 8 g( J3 U6 {5 L2 C& N7 c6 G
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    * C4 S/ i; _9 X. \' A$ s! o
  104.         for (;;) {
    8 e4 H, E  i8 o% ~+ e8 G
  105.                 c = getchar();
    , G/ @5 H7 P. m3 k/ ~. z6 M
  106.                 if (c == 'y' || c == 'Y')3 f1 }# i$ b' M* k; y8 N) K, w
  107.                         break;: I; a9 }: @, c9 B$ G$ O
  108.                 if (c == 'n' || c == 'N') {
    + M- z1 ^2 L0 p! l% g
  109.                         printf("\nAborted.\n");
    , [$ V3 s& \% [
  110.                         return 1;
    0 p4 C/ I! L, b. l- v( ?4 i
  111.                 }
    : x' W- t$ {& V9 m
  112.         }- o. P" I$ x5 W1 o# u9 J, E4 P
  113.         if (writeparam(mac, stbid) == 0) " r' D& I# _+ \6 i
  114.                 printf("Parameters changed.\n");2 {+ p; b; i# l, P. R$ J

  115. ' g0 a1 y, {* ?3 K$ e
  116.         return 0;0 E/ j. }: s9 n# T' y7 M
  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- y5 Y8 m8 |% L& l, z' L在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. l$ b9 ~' H) v0 z6 b# ~- l
你用的编译命令行格式是什么?
0 U" P; |8 \, W, m+ D* b1 e) S* a5 l; K
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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