查看: 16245|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 g* c* h) D: W# u8 ?) |, T- I1 K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / |8 I( G0 }: B$ }: r! |
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, W; ]$ ?8 \2 H: U/ b0 ?
usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 x8 q; h: m9 b: d$ P1 O1 y
% \2 h) l% B5 e
$ i0 c2 d! ]/ m: c/ H不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ O! I8 V+ C+ [: V
  [6 E  k% b6 t补充内容 (2012-3-8 09:42):+ @6 Y3 A: G3 B- n, c# C8 m# ~
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! `2 r0 H- X% B. L" M3 ^- f- w这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
  z- x0 \& M' \6 K8 y/ Y; _: h. s4 U! H- U
himr <address> <value>. sample: himr 0x80040000 0x0
! U" M& `, f% @
2 a& u  @1 \. E, o4 Y5 Z6 r例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) S. t: ]5 g  x6 Y& p: T! Hhimr 0x80040000 0x00
0 }: q4 z( ]$ Rhimr 0x80040001 0x11. m; w* Q8 u# ]$ j$ [. F; G' {
himr 0x80040002 0x22# a' H1 L5 ^$ l4 b6 |9 x
himr 0x80040003 0x33
; t* {, c0 j# t! Ihimr 0x80040004 0x44! s9 K" S% j! T4 s4 v4 H5 L7 k
himr 0x80040005 0x55% j% e. g( \, q# l, ~+ P5 j7 n! [3 g( Q

1 \6 W# ]) q' d& n; o" G$ x) FSN也是类似。
6 U: j7 Z5 x5 v; v
1 @. p+ F# V! u  H1 l现在主要是,谁告诉我们MAC和SN的地址?1 M5 \0 x3 k) A8 s6 J( d7 o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 q% D) M# ^/ V
一直想找到运程修改MAC和SN的办法,苦于无解啊

$ ~6 y. o( N( T* l0 i# a源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 M% _1 Y" t6 \* Q0 s: k: G  A9 I( i
修改的代码早有了。到今天不会编译。
( _/ E9 O6 `6 Z7 Z9 k需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    & h( ?# F1 K8 G# i+ W7 I2 Z4 Q' `
  2. #include <malloc.h>
    4 z" V) w+ w# C( W8 s' v# p& `
  3. #include <sys/types.h># H3 Q  c4 S; p) }
  4. #include <sys/stat.h>
    5 k% _1 q: N4 c) S
  5. #include <sys/ioctl.h>
    , ^! y8 S: ~% ]! M  i' ^2 J; y
  6. #include <stdio.h>
    # x  Q, [8 h/ p6 x6 n/ _( @* A, N* u
  7. #include <string.h>" i6 Q2 S, t1 s' Y0 g
  8. + ^2 n1 G# j2 w" ?" N9 [
  9. typedef struct {
    1 I, w0 w( Z$ \1 p% \$ Y
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 m8 ]2 `# H) O& Z( ^
  11.         unsigned int        sub_addr_count;7 k1 ^* S  s9 G1 P7 y! |
  12.         unsigned char*        e2prom_cmd_data;
      Z2 [9 a* Y  ]' W3 J5 Z1 g
  13.         unsigned int        data_count;6 n9 E" p3 U' O( A2 A4 {  x9 v
  14. } e2prom_s_cmd;: l9 j# N! r0 V( V$ u3 F5 ~
  15. 6 T' \: t* u" Y( c" h  }+ {
  16. #define E2PROM_CMD_READ 1
    / j' U$ B2 s$ u9 l2 U7 c
  17. #define E2PROM_CMD_WRITE 21 ], v# v9 `" [: m2 X1 b% u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # F9 _* v+ m4 h0 o9 p0 a
  19. $ F) I1 D* [" ]: Y7 x7 S
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! b6 W, [6 H4 G/ K+ k" ^
  21. {9 t1 t) b/ ?: r* G- q+ g9 h
  22.         int fd, ret;. G% A" I. ~; ?+ V  N- c8 @
  23.         e2prom_s_cmd arg;* G/ F+ V0 L+ C$ N3 N/ b7 [
  24.         unsigned char buf[0x18];
    , y+ n; N% x5 g1 V, s5 o

  25. 8 ]6 R, S6 \4 [
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 @# q0 p" u  I
  27.         if (fd  < 0) {
    5 Z: G& q' [: J% U: L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * K# K, D0 O: K  g  V* N! x  X5 y
  29.                 return -1;
    $ ?1 Z8 [% \# i6 {- ^
  30.         }
    . S1 p8 C- s, H  D2 C/ {, k
  31.         arg.sub_addr_count      = 2;/ g, }3 \" O3 E1 @$ K! u. [0 L  o
  32.         arg.data_count          = 0x18;
      A' r- p) r" M' f% G# a
  33.         arg.e2prom_cmd_sub_addr = 0x290;' s, `* m* m6 S
  34.         arg.e2prom_cmd_data     = buf;) x- d# R# G+ q' i3 O$ }' d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - F; U0 E6 Z7 K
  36.         if (ret != 0) {6 q& F' \% B; D/ }! r- o( f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ i) a' B; G, |" C& b
  38.                 return -1;
    3 q6 E; l4 R1 }" ?+ e2 ]
  39.         }
    ; x7 x9 D0 F6 c/ e! f+ ?1 w
  40.         memcpy(mac, buf, 6);
    ! ~" q4 T7 a8 `9 i4 G2 O* R& z$ A, M
  41.         memcpy(stbid, &buf[6], 18);
      b# B+ h5 T: J' k- M
  42.         stbid[18] = '\0';
    2 D0 C- x! g. t+ ?3 q

  43. 2 b9 h. x( s: m
  44.         return 0;9 [- ^( b5 j+ M# y; ~  Q/ }- U
  45. }! h  ~- T6 B* E" J: w
  46. - X0 J: S; R- Z3 u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ G+ X& P& D: Y4 J- T
  48. {
    . b/ L) [  U9 j) l
  49.         int fd, ret;7 A# M9 r( n4 i: O% u) q% L: [. o4 p8 `
  50.         e2prom_s_cmd arg;0 ^! ?& p3 K# B- Q& S
  51.         unsigned char buf[0x18];
    " P4 E* J6 _6 u- O4 v+ y) u: t- B

  52. 9 }7 S/ S& l( E9 ?9 G# U
  53.         memcpy(buf, mac, 6);- u8 K5 K2 `- T+ B# n0 H0 f
  54.         memcpy(&buf[6], stbid, 18);
    % ^$ ~( V/ s- E& R' [# |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 m9 V! ^3 V# Q% X, V( C
  56.         if (fd  < 0) {( W0 D$ l, l. W7 y# A/ A8 s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ E# C- p+ _' T9 N. }$ i
  58.                 return -1;- L, K& |- _/ _7 m+ l$ a- L! H, S* a
  59.         }
    - F* X2 O0 M1 i* P1 B
  60.         arg.sub_addr_count      = 2;' P4 W( R( u* C7 h. @5 ]/ _9 V
  61.         arg.data_count          = 0x18;
      c3 t. k" C" P( i" @  z
  62.         arg.e2prom_cmd_sub_addr = 0x290;2 g- G# _. G' _; |; w
  63.         arg.e2prom_cmd_data     = buf;% s0 M! w, F- K- S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  t6 D4 W1 p+ r3 V. P+ v
  65.         if (ret != 0) {
    ! N; h/ K; A" D7 R% i7 P, h- _) N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) f4 b. @5 a* o6 ^: _' f
  67.                 return -1;
    / `1 K+ g: G# ?3 K
  68.         }' @! R4 ^$ x4 s0 V
  69. ( I& P9 y' _& `; Z9 c( R# z
  70.         return 0;
    ( ~" X7 r. ^/ d$ G
  71. }9 N1 k* z/ X) V3 ~0 d! B
  72.   F+ {. {: M/ E4 U8 i) T, q
  73. int main()
    ; y# o8 r1 w* N& p
  74. {* ]8 G: _2 L* s8 P% T; y  x. }3 A
  75.         char c;/ w& {# ]' D8 x# S, G9 j# q) j* b
  76.         int i, macs[6];/ F1 m, T$ p$ u# q& D( Z8 @* B
  77.         unsigned char mac[6];
    6 u; {5 O1 T; w+ v+ x7 y) J( `, n1 T
  78.         unsigned char stbid[256];
    ! a9 s' I+ A4 B8 g4 h8 m1 y
  79. $ a. ]: v1 W- ]/ c& U$ P
  80.         if (readparam(mac, stbid) < 0)
    # ~/ U# x6 a' U2 Z& n  Y( |
  81.                 return 1;
      O: Y  X9 c# F  m
  82. : [. ?1 d  f3 g: a/ k
  83.         printf("Current parameters: \n");
    ( I% U. S) \- M+ b% y7 [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* {8 p6 y  }  d
  85.         printf("  STBID: %s\n", stbid);% c- N. N. h3 }" K% S! G
  86.        
    , J4 @7 O+ K* G; ~3 Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! ~4 Z4 J1 f  U* z: W) o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
      `( x6 ?) `) R/ |1 B6 V: V
  89.                 printf("Input MAC error\n");
    $ _, Q% R; H5 y
  90.                 return 1;
    $ ?7 H8 w! a1 }. u1 i% T
  91.         }( v2 v0 R  j! {& Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & Z. Q) v  C, Y5 M  b# p
  93.         printf("\nPlease input new STBID: ");7 s7 `& o4 [6 M0 I" I0 p( n, I
  94.         scanf("%s", stbid);
    2 s' {' \$ `, {1 i$ m
  95.         if (strlen(stbid) != 18) {
    7 ^2 D" Q5 t  W( Q9 a
  96.                 printf("Invalid stbid\n");
    , Z# Y6 ]4 o/ }6 C- u
  97.                 return 1;9 q1 S, j5 r+ }7 Q/ ^" d
  98.         }( S3 r6 w# X+ N- D
  99.         printf("\nNew parameters: \n");* C  s: y6 [* j6 |& K, K
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 g0 [, e7 N3 q1 j4 p4 h( D
  101.         printf("  STBID: %s\n", stbid);  h2 E3 H  X) ~4 j0 F7 t

  102. ! S* U- M- j3 c5 u% z% {
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ! Y: C, A8 j1 b" b- g
  104.         for (;;) {& A  M$ W" T; M0 g
  105.                 c = getchar();
    # N. ?# g3 V: _* f
  106.                 if (c == 'y' || c == 'Y')
    9 O5 P4 `8 s, V  s& Y% V: a$ L" [
  107.                         break;6 Y, @9 t5 A: f+ X  [
  108.                 if (c == 'n' || c == 'N') {
    # y$ G6 i% N( v, A
  109.                         printf("\nAborted.\n");* T- Z0 l( f4 ~" G9 T& j+ v5 ]# [
  110.                         return 1;4 A3 V# `; ?4 ?1 C
  111.                 }2 W4 ?# f) L( Q) _8 P9 q
  112.         }
    4 Q- O2 z1 ^8 l5 a+ L
  113.         if (writeparam(mac, stbid) == 0)
    ' l# p; C7 B9 l% f3 R/ W1 P
  114.                 printf("Parameters changed.\n");
    & N) p  s9 R' i) ?8 Q# y2 k  X

  115. & B# j  W. m* v- B6 G$ a0 v/ c) z
  116.         return 0;# U* {/ w9 u+ ^$ W/ Y, r) T$ f
  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 & D3 \6 I; p" A$ w1 Z% c' \
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
2 j- _% O$ K8 `, d5 H; D7 Y, T
你用的编译命令行格式是什么?2 ~7 k1 |) b! y, L* M4 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客服返回顶部