查看: 17710|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    1 o1 B4 v5 |1 D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 O  E! }# V8 s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' }7 R, H9 L7 x2 _6 K5 T0 w+ {3 Jusage: himr <address> <value>. sample: himr 0x80040000 0x0. W  l) e: c9 ]: O/ c4 ^

- B2 y5 Q% N1 P/ E" Z# t
1 K* P$ G4 H7 J' f. I不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, y" z6 o8 n1 G/ v
0 U$ z" n& V! m; h补充内容 (2012-3-8 09:42):+ f, @/ p1 X1 Z; n3 x2 v5 ^
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 t+ m; y0 Q3 l; y' F0 C2 N3 F这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。' v4 \' n# U% P9 W2 z& U- U, r8 p
5 d9 l, B9 _+ \+ A) i) Q
himr <address> <value>. sample: himr 0x80040000 0x0
$ d  I; h" m! L% f0 T, S! E7 C/ e$ x. Q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。4 D: J) m% G' Z" c/ Q% s
himr 0x80040000 0x00
$ L. |" a0 P6 X9 B' Q, ehimr 0x80040001 0x11
! @/ n- I, b# n# k. `  T9 Y2 uhimr 0x80040002 0x22# W" W( ^+ R4 x( S. C
himr 0x80040003 0x33  v) D: c2 V: l. Y
himr 0x80040004 0x44
# p" y# q8 b* d( Jhimr 0x80040005 0x559 \) i" L5 c+ w- g3 }$ V. z( J6 H

7 B' @& B9 Q+ g8 g4 ^" k; G3 aSN也是类似。
/ D5 n( {; |: d7 K# O4 g6 g; r+ g0 X" F, E
现在主要是,谁告诉我们MAC和SN的地址?" X, C: F( O  K( K- _' ]3 ^  ]
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ @' }2 q, B* Q0 M+ x3 p! E一直想找到运程修改MAC和SN的办法,苦于无解啊
% m3 o7 e1 i" {% D" d9 S! I
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   W+ H7 L& Z- j7 j4 B" `, @
- z8 d5 I, M! f
修改的代码早有了。到今天不会编译。
1 P6 @7 K& U% C5 V: O; y' M需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ c3 |* i$ O- \+ h2 h- v
  2. #include <malloc.h>% c. Q' \, j' ?- E# z) B
  3. #include <sys/types.h>
    + c4 t& H  h- O' R5 ^+ T2 a
  4. #include <sys/stat.h>. B- m' j, w- E# |2 U( x
  5. #include <sys/ioctl.h>
    + H0 O$ l2 j7 O3 A7 @: n5 e  Z
  6. #include <stdio.h>+ O  h( V& y. `. L6 a
  7. #include <string.h>
    4 u6 q7 I" T# }" s

  8. 3 k7 M. c- c2 \
  9. typedef struct {4 K# B* E* R# u; n5 }
  10.         unsigned int        e2prom_cmd_sub_addr;
    % f7 U5 W9 Z1 Q( D& C
  11.         unsigned int        sub_addr_count;
      C( _/ `! m& M5 X
  12.         unsigned char*        e2prom_cmd_data;) e! M% u: I1 q7 D- O
  13.         unsigned int        data_count;
    , U' P, G5 R3 l1 u1 ~6 |
  14. } e2prom_s_cmd;- r% j! q! g3 g  P% U
  15. ) F) W# o$ y& `6 H' B: q6 a! x
  16. #define E2PROM_CMD_READ 1+ a# A' M, Q% O% m* P
  17. #define E2PROM_CMD_WRITE 2  s  I( @3 v/ A# a* I- E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ j- |' K8 F" D( s+ v
  19.   U; B% f+ O; [1 e8 k5 `# r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 o( ]% _8 j, D  p: W! D% u
  21. {) a) B" f0 {% n4 _4 e# f
  22.         int fd, ret;
    3 x$ Y( F) e/ j; }- e
  23.         e2prom_s_cmd arg;
    % P# q: D  o8 P/ l
  24.         unsigned char buf[0x18];
    5 z2 w, k/ n# o! |

  25. & p5 ^- R6 Q2 V; m# [
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    # G' y4 z2 g' l/ \
  27.         if (fd  < 0) {0 w) `0 ~4 V+ O% W# W: e6 j
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + |! D& w/ D/ T7 h
  29.                 return -1;4 H0 z3 F/ ^  T) R2 j6 C5 i
  30.         }
    ( V$ m3 b' @9 l& n
  31.         arg.sub_addr_count      = 2;
    ' u9 ], M  j: N' ^4 ]
  32.         arg.data_count          = 0x18;9 o( ?% |( x/ ~* U3 q: ^) H
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; _, s. M/ ^: r- _' m8 ?2 N1 @
  34.         arg.e2prom_cmd_data     = buf;
    : N" M3 W/ `0 p* O5 s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 [) y$ P- P1 i5 K5 C' O9 f
  36.         if (ret != 0) {
    + r2 C( o- b: i# [4 [3 x3 Z* P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' f6 s& E% K$ b1 J) ]4 I2 M+ O- g1 }
  38.                 return -1;. c; Q) B" C# ?) Y
  39.         }; |5 F% j0 e) }, d
  40.         memcpy(mac, buf, 6);  O& D! T$ P- t1 }  `
  41.         memcpy(stbid, &buf[6], 18);
    $ i1 T# z' V$ f
  42.         stbid[18] = '\0';! }. Y% w' _4 V9 M. @) o
  43. # c7 K. H) ^4 _" f
  44.         return 0;0 e9 t0 G+ o' z" l1 D, {
  45. }
    0 B% C. X1 \& t/ J+ J
  46. 3 V. e( B6 l0 n9 R/ m9 f
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    2 J  n: v  l7 |7 p; v' t$ W
  48. {
    . I# M$ Q. z" l. A9 W
  49.         int fd, ret;
    0 I7 t* V5 O7 k- G
  50.         e2prom_s_cmd arg;
    & u8 g9 U( C/ \8 [
  51.         unsigned char buf[0x18];! v5 ?% A- l( ]2 v4 r9 X
  52. & g, \* f! ?6 Y: v
  53.         memcpy(buf, mac, 6);
    ; b0 ?- @& Z  h: d' v- t
  54.         memcpy(&buf[6], stbid, 18);& D- z) j. x/ x# m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: R9 R( M: e( R) r9 X$ ~( O
  56.         if (fd  < 0) {
    " m4 ?8 {) N; Y) q# Z" G/ D3 m1 d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* I0 e8 V- O8 h
  58.                 return -1;
    , C; P- {2 D, f4 y
  59.         }- [/ n) z5 \8 U6 D
  60.         arg.sub_addr_count      = 2;
    ) T: ^  n: c" p) l8 j
  61.         arg.data_count          = 0x18;9 Y# w* T7 Q0 e# E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' A/ r4 i% e( C9 c
  63.         arg.e2prom_cmd_data     = buf;
    , b. Y: k# a) e2 y/ V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' `/ \9 s# Q. U9 L( u6 i0 M6 S
  65.         if (ret != 0) {
    ' V4 G0 n9 {- s; c, G
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 }: L- [( ]+ a3 h
  67.                 return -1;
    , b& j6 c; i. n7 ^
  68.         }3 k/ X2 X  L7 e. Y: L
  69. 8 r0 t* j# [, G) R) E: Y
  70.         return 0;" t- Y( I+ [( {( \
  71. }; S& l7 O! d+ U- k* q

  72. + V' R# g5 j7 ?% N
  73. int main()
    + D5 f% B4 B& l6 O
  74. {8 n; F! F" Y( ?5 q- l# W
  75.         char c;8 A$ z; F! k8 t# R. D7 e
  76.         int i, macs[6];
    # B9 i: n9 V( _' c( J6 Z
  77.         unsigned char mac[6];
    ; r; T1 f" f& b% y0 }" z4 w
  78.         unsigned char stbid[256];
    5 Q* D4 S5 T5 l* U$ T' ]9 b

  79. + l7 q  T% T' o1 p' l% S& w
  80.         if (readparam(mac, stbid) < 0)# R5 }, m# V% p, Y& |
  81.                 return 1;
    . k. t8 P' v/ r

  82. 9 e. |6 I0 t0 S( d6 X2 r4 @3 s
  83.         printf("Current parameters: \n");$ h& [  I0 B* l7 q1 Q' w1 ?0 [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( f; A9 W/ I1 c: c
  85.         printf("  STBID: %s\n", stbid);6 t) ~4 y7 C$ J3 M) ?, E
  86.        
    / M. O% ?) _, N0 C1 ~5 X1 x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( W! h6 K+ D* e. Z! {8 S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 n) {8 J0 E+ a3 s
  89.                 printf("Input MAC error\n");( m  k7 ]- t  c3 y8 [! K5 L
  90.                 return 1;4 Z- ^# ^( K5 r' |/ }/ t
  91.         }8 S* l6 b7 |4 J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # f1 |! z* |/ r3 ~) G5 @0 K) _
  93.         printf("\nPlease input new STBID: ");
    5 B- R2 }2 ^% C' s$ m( Q; O& A
  94.         scanf("%s", stbid);( z1 E- T" b) Y
  95.         if (strlen(stbid) != 18) {
    6 P6 [, F: |$ I2 ?0 q" a
  96.                 printf("Invalid stbid\n");: }7 [- b) v6 k4 P
  97.                 return 1;
    0 S- t! ]; x( _! M9 `
  98.         }
    2 d: E2 K5 u, v& Y2 }7 s3 {3 e9 P
  99.         printf("\nNew parameters: \n");1 p& t( }! ^: a5 K* N# q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( e' x- b+ @7 Q- ^" O
  101.         printf("  STBID: %s\n", stbid);
    % z. @. p6 p5 ?9 Q2 h

  102. " ?6 R  f% q) _
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 w/ H* h) F: z6 E
  104.         for (;;) {1 N4 c0 q6 Y+ O) c, U4 h; j
  105.                 c = getchar();4 J1 d( H$ c6 N* u
  106.                 if (c == 'y' || c == 'Y')1 ]% @) S4 C/ Q' S# Z
  107.                         break;( {, R+ B: _3 M. o+ L  R) Q
  108.                 if (c == 'n' || c == 'N') {
    ! f: b, C1 v' e
  109.                         printf("\nAborted.\n");+ J. W' O0 G) [/ t. }( s  D6 `
  110.                         return 1;( O' u5 q( c* ~6 G1 X( e6 ?/ H
  111.                 }
    9 ^# z( ?7 w9 C  R& q/ s* L4 L( Z
  112.         }
    # Y- a$ a! }1 \! ^, _* y9 Q  v7 A
  113.         if (writeparam(mac, stbid) == 0)
    : P0 z& Y( m2 o, L
  114.                 printf("Parameters changed.\n");
    ! W& s, l) l. U  B% [7 I

  115. 3 A+ C1 C: k: l, W1 ~( h3 i
  116.         return 0;
    ' c4 n1 c+ e) K$ p4 p. H8 U
  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
. k5 Q3 I5 D4 W: V- B: g& A* J在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. c: }& N, X( e# `你用的编译命令行格式是什么?: B$ c' E( M" H" T2 X
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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