查看: 17331|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" Z6 T" d9 V! }/ R4 R1 D; W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 O1 ~5 l  _! i# x& p& o% T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% J& B6 _  S. v5 a/ M0 \  G3 B' m
usage: himr <address> <value>. sample: himr 0x80040000 0x03 }9 k4 n2 ^' i2 F. p8 v4 ~

6 e4 u! g  M; v2 j1 p- b. v
( E* Q0 D6 W, _7 Q0 J" s8 _不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& r' S9 `6 {+ x$ _: }. B# U; |% {+ H2 |2 v
补充内容 (2012-3-8 09:42):3 q/ [3 n- b- T7 a. ^( V) L
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
+ {3 P5 }( M& L4 M0 Q% v3 i这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。$ }0 X/ U1 {0 k  T

$ S; t& d, Q1 I( S: t1 O% {himr <address> <value>. sample: himr 0x80040000 0x0/ E- Z8 q; u8 T( D
/ u2 M# [8 S+ [: {+ H; {
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) |1 m; ^& k3 l
himr 0x80040000 0x003 S" {& A0 I6 x
himr 0x80040001 0x112 b8 S) d4 Z/ I, H" {5 i# u" P' c9 |
himr 0x80040002 0x22
- `& V/ I) ^9 v' ~  K  h3 X+ chimr 0x80040003 0x33, Z9 m: }. e2 ?9 \, U& Q/ G& C0 ~
himr 0x80040004 0x44
/ m( V& R+ M- [2 Y0 ?( i" j3 e* N# L2 ehimr 0x80040005 0x55
' S! P* p4 }) E4 H' O/ v
) Z4 ?% e3 ?: X& bSN也是类似。
3 y$ W$ Z) z9 E& ^. E3 J
; g) @1 v7 N, p  Q3 J, {现在主要是,谁告诉我们MAC和SN的地址?  H% z8 P6 J+ _' J: x
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 P7 Z2 T2 [2 M一直想找到运程修改MAC和SN的办法,苦于无解啊

( D0 {* l  H9 H9 Z% Z- O1 J6 d3 w源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 R  T! [% a& S9 F2 l
3 e5 F3 `1 ~" ~: c. U3 K# A2 r% f# j
修改的代码早有了。到今天不会编译。* H. h+ H; d* \2 j3 ~9 u" d
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, \6 q0 I1 R  m: C+ ^
  2. #include <malloc.h>$ l! _, x# `5 i! V% E7 S: `! z" l
  3. #include <sys/types.h>* t8 ^( a, Y1 u' T" G5 n& G
  4. #include <sys/stat.h>
    & _/ q1 R7 e) U7 u( b3 v2 V
  5. #include <sys/ioctl.h>
    6 t2 k7 ?! `! Q$ E5 u  k
  6. #include <stdio.h>
    * o5 ~2 s' W) S& L5 S. u# p# n
  7. #include <string.h>! j/ @1 E8 g* d) L3 ?7 U

  8. / ]( w9 m1 Y% B
  9. typedef struct {
    / J$ z) _6 X9 Y5 k3 f8 d, x( ]
  10.         unsigned int        e2prom_cmd_sub_addr;
      D! l9 i* d* w9 t8 C
  11.         unsigned int        sub_addr_count;7 L' w, E3 I' K& {  o
  12.         unsigned char*        e2prom_cmd_data;/ Y% i: Q% k- G* d
  13.         unsigned int        data_count;
    ! ]1 I. V# k' ~' f
  14. } e2prom_s_cmd;. S9 N7 A1 u. \/ G

  15. * `+ M/ f' U4 t7 s( W* Q' z
  16. #define E2PROM_CMD_READ 1, C! |# Z* I0 o& g" A
  17. #define E2PROM_CMD_WRITE 2) a/ d% I4 k" W% V8 V$ \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 X" L2 p) Z, u, _
  19. " v% ?( D0 R2 j$ D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' U! _( N  A' L: Q* i8 j
  21. {( ?# L5 |2 v5 ?: p# l
  22.         int fd, ret;  Z) o1 m& w7 E; _1 ~, J
  23.         e2prom_s_cmd arg;
    9 r6 E/ Y9 f" G9 j# l. J
  24.         unsigned char buf[0x18];
    5 M+ M% ~- a& w3 f# d" J4 l

  25. * V2 d# V* \! U
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: w5 U+ y, p2 c& f+ G
  27.         if (fd  < 0) {
    # Y+ J: x6 e) c! |
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 @8 }- g9 S* \" B) a6 W. U
  29.                 return -1;
    & V1 Q3 r) B6 h0 h5 G7 E
  30.         }' B$ Z# W9 d3 W0 I: @
  31.         arg.sub_addr_count      = 2;; v$ W  J- V7 c
  32.         arg.data_count          = 0x18;
    # e, C. \: B3 W6 X6 {
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) Q' L9 N  y0 V
  34.         arg.e2prom_cmd_data     = buf;
    1 d$ n, d$ L7 ?) T6 Y$ P; O' t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 P5 T/ L8 e& F1 u* o) S8 S+ r
  36.         if (ret != 0) {7 J* U( n! X# E' |! M$ M
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 @$ Y4 J6 @8 k, y- K& m: n( l
  38.                 return -1;' r( l  J9 ?  z2 A9 }0 V4 x
  39.         }! I+ i: Y0 h( v, R; n+ @
  40.         memcpy(mac, buf, 6);" W2 B, [* p. N2 O6 `
  41.         memcpy(stbid, &buf[6], 18);
    / c1 t3 _$ _7 `% K6 S  p5 X4 P3 [
  42.         stbid[18] = '\0';
    ! @) O  Q# N& ]: s  P
  43. 4 Y: m, |. x6 G+ B6 z" k
  44.         return 0;8 }) e" k: z$ T: }3 u
  45. }5 A/ C" ?% k8 A& k+ t( A) M

  46. * k4 U( N" G8 d; s/ {6 p4 @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' e' z1 k+ e# ^& q" _1 B8 ?
  48. {
    ; m" B+ S7 x: S  Y, e7 c8 u
  49.         int fd, ret;: D+ w% r# @' U
  50.         e2prom_s_cmd arg;
    6 ]: ~, @' u7 a+ c* `4 J9 s% N5 n
  51.         unsigned char buf[0x18];0 o: I  J% {0 I& e& {1 Q; ?! T' x
  52. 7 q7 B4 N. G7 ?8 f: k& z: a0 `
  53.         memcpy(buf, mac, 6);
    5 X7 C  q0 J+ K4 A3 \5 x( ]
  54.         memcpy(&buf[6], stbid, 18);5 x; D2 J' y9 I) G, z2 e- K: o* s% H% K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 r  z8 i! n1 ]% O/ y, b5 Z
  56.         if (fd  < 0) {! X, w$ l+ i- A# b7 B9 J, b
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 A5 P/ t1 M3 j+ C
  58.                 return -1;" O0 P1 I* R2 _  r' u2 ^
  59.         }
    + v4 S) r/ c1 ?, q. r
  60.         arg.sub_addr_count      = 2;
    ( d8 \& V7 K3 L, o
  61.         arg.data_count          = 0x18;
    & K$ \0 E/ B0 v( e& E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' n/ R1 l* L- i$ I" {% \  b2 i
  63.         arg.e2prom_cmd_data     = buf;
    ; W$ S! x1 O7 {! X, W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 `1 B7 ]2 H6 x7 J& D4 T" }
  65.         if (ret != 0) {6 j6 K4 n( g0 I1 N* I$ t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 g! ]" h3 q. l
  67.                 return -1;
    # [' P) t* V6 q' Z4 S7 _
  68.         }
    ; V9 T) l" a8 t; j" q' f6 A9 b. b
  69. ; T. a( F4 {7 Z" ?
  70.         return 0;5 y2 w# E4 {0 F# _8 U8 Q& p& T
  71. }
      e6 u1 @  N8 }3 S" Z) M

  72. 2 n* ~5 K, `' b$ c6 c- T
  73. int main()8 g6 {+ C+ w# Q* D2 T0 Q9 R
  74. {0 v: w) X* i7 M% F6 }2 L$ Q' q
  75.         char c;
    & ?  p3 e7 |: z; {
  76.         int i, macs[6];. W' ~! G, i3 E! I1 X* g
  77.         unsigned char mac[6];
    : ~+ O/ u; T* t, }9 M1 ?6 I; @
  78.         unsigned char stbid[256];
    ! L9 G5 ]3 q3 y! D+ N
  79. ) U  w( T' ~% ^' z
  80.         if (readparam(mac, stbid) < 0)
    9 K9 C% _& c9 L. J
  81.                 return 1;( A" g8 x1 R; B  m" @9 e3 m: w5 ^
  82. & x- P+ e5 v: k
  83.         printf("Current parameters: \n");
    ! O0 }& s" r! N; I3 G4 ]) }
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 Q5 W! [" v! m+ T8 I$ H
  85.         printf("  STBID: %s\n", stbid);
    + j2 E" g9 L0 j- i# a3 W5 t
  86.        
    6 t  b( e# Y' }; t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + O8 y7 I5 \  i' s5 L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; }2 L- k7 a" ?$ ^. R
  89.                 printf("Input MAC error\n");) o" c6 ~/ K) B; X% Q
  90.                 return 1;
    2 k) ]/ x4 L. ?* b7 u2 d* d. x
  91.         }
    & r* d4 u* v* l, Z' U5 N+ E/ i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 N+ i& ]) p8 {( w/ X  d
  93.         printf("\nPlease input new STBID: ");
    5 w6 G* }! ~* b7 I5 A
  94.         scanf("%s", stbid);2 p$ F2 f" j# ~; R0 F
  95.         if (strlen(stbid) != 18) {- }2 X% U5 e2 h# \9 k9 J1 x* y
  96.                 printf("Invalid stbid\n");
    5 i% e3 }& \4 b' j. I
  97.                 return 1;7 V9 H0 h) F% u$ ^3 N6 M
  98.         }$ h2 v5 J! I- c9 [7 Y
  99.         printf("\nNew parameters: \n");
    8 e- B0 V3 m0 d) r2 k
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' Y- d1 n/ F. s9 \" M& }$ q/ T
  101.         printf("  STBID: %s\n", stbid);
    : N4 Q! }. J" {

  102. / }7 F2 k+ l( x. n2 [, B" ~( Z
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + f5 b& N. ?+ [2 a# I: b) j% L7 F) {
  104.         for (;;) {
    9 d/ V  X* R. M' G# b. L
  105.                 c = getchar();
    6 ]3 r* a; F' a  [
  106.                 if (c == 'y' || c == 'Y'), R6 L3 x6 G( }7 o3 s; M. ]5 E
  107.                         break;( s' n! I) I8 W! P  ]
  108.                 if (c == 'n' || c == 'N') {& }0 q6 y) g6 D( m  m- q
  109.                         printf("\nAborted.\n");9 ^1 z) G5 K/ _' ~
  110.                         return 1;! h. R+ z' M, g& c: H
  111.                 }
    ) a8 `9 Y% X) @9 b- K: v
  112.         }' K: W) C0 Q3 p. H
  113.         if (writeparam(mac, stbid) == 0) 8 N2 C( h+ ^0 E
  114.                 printf("Parameters changed.\n");
    5 u, R- E* ?8 {% Y* r9 g
  115. ( n$ z8 M3 [& \6 v
  116.         return 0;- O- C8 y' o0 _) }/ @: C& E
  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   s' [; z' q. j0 K; _+ t
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
, c6 m1 b% l& T. W: P/ p
你用的编译命令行格式是什么?
2 Z( f9 N! o$ H' f
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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