查看: 16084|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  w7 U' {+ e. W4 ~0 r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ @. v$ M& |. [) T7 Y" O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
6 K; g" ?$ y. Y, K4 X: d* pusage: himr <address> <value>. sample: himr 0x80040000 0x0
2 S& @4 k6 u# Y  U& Y5 u) v# K* Q" s! M+ t( F
" s% N& U% R$ @6 R; Q
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ r2 f' e7 N; e% T% c

6 C1 l$ _2 V# n补充内容 (2012-3-8 09:42):
: |* r  b( Z: G, v% ^/ {5 _2 Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数8 v% X$ L* m, k; v; ?0 k1 u7 k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。6 \* B$ m4 t' A- A! l6 S

1 Q( t$ m, F' _0 uhimr <address> <value>. sample: himr 0x80040000 0x0
- P7 ^) g2 d% _+ `) @
: S+ a- g0 V' v3 p9 }例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
1 x  l- G6 ?1 X# z' \himr 0x80040000 0x007 o0 t7 Y1 q1 k6 ?$ M/ {
himr 0x80040001 0x110 b% K) z; y/ M; v; |
himr 0x80040002 0x22+ y+ `% U8 |7 c: Z% ]
himr 0x80040003 0x331 b: h" u0 C1 E, [: E2 |; b' Q  y5 t
himr 0x80040004 0x446 q3 ?) ]+ F# I2 M, y: H' m/ q. d
himr 0x80040005 0x55
: U+ h. }* ?! T* O: [6 F; b; S2 E6 V7 }( \5 K+ U! a
SN也是类似。" ?% x: a4 @+ {, V; B3 p# ^
6 k- i& q* k& `0 q6 F2 n/ t( Q
现在主要是,谁告诉我们MAC和SN的地址?
& D8 R; r/ g- C, t; q" N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 + t/ V2 }' s' ]: p5 V" z
一直想找到运程修改MAC和SN的办法,苦于无解啊

4 |" V4 {1 ~% h. u4 A  Q0 w源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 ~" |: U/ b  y
/ \+ b( G$ B! z修改的代码早有了。到今天不会编译。
, w; K- z! p, q) v& |需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h># J; c) ~& a! i2 y) x9 e2 U
  2. #include <malloc.h>, G& \0 ^3 K& W4 t9 Z; m
  3. #include <sys/types.h># ]' O1 S/ d7 T7 b8 H  ^% P, K
  4. #include <sys/stat.h>
    7 w8 e; ~8 z  p+ @9 L9 _
  5. #include <sys/ioctl.h>
    ) V- r+ z) y) {  \0 }( w5 g; Z  K
  6. #include <stdio.h>7 T9 J) U1 o1 `4 h# [! @
  7. #include <string.h>4 o% @; \3 ~9 l2 X5 R7 \4 b

  8. 6 S3 p; u+ z7 D; y% c' L% t
  9. typedef struct {
    ' ~6 Z" [0 h. g7 I) B
  10.         unsigned int        e2prom_cmd_sub_addr;
    * l: {! E- @, Q+ o$ G
  11.         unsigned int        sub_addr_count;
    3 k: r. r4 ]. }9 n7 R
  12.         unsigned char*        e2prom_cmd_data;
    ' H& [" h' s0 y; u+ \" L2 F, i
  13.         unsigned int        data_count;
    % K& s9 h1 Q- F/ L
  14. } e2prom_s_cmd;9 I' c! ~8 F5 p
  15. ! |3 h1 _( R4 z) ?- V1 C$ B
  16. #define E2PROM_CMD_READ 1
    7 J+ @' {% Q9 `+ e' P
  17. #define E2PROM_CMD_WRITE 2
    ; p. a/ O' i) {) H' @8 A! R1 e+ G
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 k$ N/ I) u0 ?- f: c8 V% p

  19. 6 O  A3 `7 x6 l2 v0 ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; }, X3 l5 Y( y$ C- q# d1 d3 [
  21. {, A  P0 z/ D( O3 B8 p. @) I: x
  22.         int fd, ret;& B0 G4 X( L- I, H( I" y" [# i3 ~
  23.         e2prom_s_cmd arg;
    & ~) J6 d2 ~5 K* W( P/ b
  24.         unsigned char buf[0x18];1 S9 \' [$ ]8 p2 Y( o( l6 |

  25. - E' u; b5 r. m& N7 ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. O/ f* v1 Q3 v8 A# {, j
  27.         if (fd  < 0) {% O3 ~9 n; G. T6 {9 G4 q% z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! R& a4 x0 x+ ]8 E& L
  29.                 return -1;9 O& y& A- I2 R
  30.         }
    3 `9 R* D8 S( o) k: D4 J% t
  31.         arg.sub_addr_count      = 2;
    # e( N( f5 H+ C; J* S( L
  32.         arg.data_count          = 0x18;0 r0 ]3 {: X+ w( Z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 z4 ?2 l& G- R0 [! V- u
  34.         arg.e2prom_cmd_data     = buf;) f8 p6 d; \* d2 P  m- B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( U3 F, x0 O) m4 K4 _4 a
  36.         if (ret != 0) {( D$ L* f& ^% O6 Y' A
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 k1 B( @, m2 {/ V0 s9 l
  38.                 return -1;8 m& {1 P* a% V, w4 @( Z: C+ D
  39.         }
    3 e6 R8 _6 \3 ~/ D
  40.         memcpy(mac, buf, 6);; L) F. u- F; ^. E0 I
  41.         memcpy(stbid, &buf[6], 18);! D: d: I4 J  T8 k5 S. H4 R: j8 N
  42.         stbid[18] = '\0';
    $ I& U$ G# v+ z$ o# k" X) \  Z
  43. 6 f  J: m2 x; }. _2 d4 |
  44.         return 0;
    % c; k& M) a8 H  J( Q
  45. }
    % \* ~+ T) K: c' {) P) p9 D
  46. ) w# C8 y# y- S
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)* U' @# ?+ B6 G# Z
  48. {2 U5 h9 r$ Y1 v' t, `7 n5 A
  49.         int fd, ret;
    / P5 D8 p; e+ ]) G( l% }( r5 w
  50.         e2prom_s_cmd arg;
    & Y# I- n. K7 D9 F& V% x
  51.         unsigned char buf[0x18];
    2 t2 C2 z% K" f* C! u8 o
  52. 5 B! U$ h1 K: L* h3 m# h
  53.         memcpy(buf, mac, 6);
    # q) C* {$ B2 L1 k" q  |
  54.         memcpy(&buf[6], stbid, 18);
    , t( c+ k7 B  J, Y- t
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    , {) A+ ~6 b; ?* K3 }7 t- }0 X
  56.         if (fd  < 0) {
    + d0 Y4 H* u2 j6 K/ t4 x9 W. R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. N( W7 V8 u9 u# _
  58.                 return -1;4 s0 i7 e& Z/ D8 {. k1 s9 t
  59.         }* |7 L- y2 W4 F( ]: p
  60.         arg.sub_addr_count      = 2;/ J' u+ M3 U9 ]3 L: e9 u- Y& o9 C
  61.         arg.data_count          = 0x18;
    " F0 B: d. k4 h: N
  62.         arg.e2prom_cmd_sub_addr = 0x290;9 r' \% n2 [. P, |& ~( p* g
  63.         arg.e2prom_cmd_data     = buf;- w* J  e$ K& B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % Q) u/ `  Q/ v8 Q8 I- v8 [- e% g8 p
  65.         if (ret != 0) {6 W3 S* Q+ J; |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ R, f$ i/ \) v" R: L* m' O
  67.                 return -1;+ o& K- b7 O/ k! K) R
  68.         }- x/ q+ N  }% d' ~; \

  69. # K# m3 a( r( p1 K) E# [4 y8 J  q" i
  70.         return 0;' y  B3 F/ w* t4 B; [. F
  71. }( H3 N  m4 I" ~0 Y) y

  72. & K" D3 |( `4 v4 X  A8 |
  73. int main()# {5 R% C  J2 e1 W. n3 B
  74. {* ?9 V, @' M/ i6 f* J8 h
  75.         char c;
    ! Q( |) x7 N( b0 n% D- W
  76.         int i, macs[6];
    % s' y( E" }& ]  a% A- V0 O
  77.         unsigned char mac[6];6 l( p3 \( a: T  x, S
  78.         unsigned char stbid[256];$ j0 v; S$ i1 I* A

  79. . T- U5 S* l1 M# ]- H# w1 M
  80.         if (readparam(mac, stbid) < 0)
    % V" v1 K  ?8 c! O; K
  81.                 return 1;$ E5 B' E- N$ E5 ]

  82. & v  @# l# E' j6 ]$ t
  83.         printf("Current parameters: \n");
    # `0 t. |! `1 c1 [' o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " L; u& |. b2 O
  85.         printf("  STBID: %s\n", stbid);6 t9 N$ z. @! P) A. A: s  N
  86.         ( x* o9 T) b. ^* k
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");: T) ~8 T5 B  e) j9 g/ o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; ?$ R+ [9 V3 x$ U7 r
  89.                 printf("Input MAC error\n");
    , M! H/ }1 [( c+ |2 i% M
  90.                 return 1;
    + z" S3 k# V9 S% u1 {& P1 Y& \
  91.         }
    ) G* e& R7 U9 I8 k9 A5 u( n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, o/ c; Y; X# F% f- @0 g
  93.         printf("\nPlease input new STBID: ");: S$ I; a* y+ D/ T: Z' s
  94.         scanf("%s", stbid);
    ) f( a- Q5 f( Q/ ^* C7 M
  95.         if (strlen(stbid) != 18) {8 N6 U* F9 Z0 x
  96.                 printf("Invalid stbid\n");
    5 w/ g+ O. e) b8 N: x
  97.                 return 1;
    * O! j$ J' c) q$ N  ?5 z
  98.         }4 V6 h! H% ]/ c9 Q
  99.         printf("\nNew parameters: \n");( {3 k1 c- m+ h3 K2 a" c# G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " }+ D9 j( Y. q) L4 \) f" Q9 \
  101.         printf("  STBID: %s\n", stbid);
    % u4 \* D. e% P
  102. - a* t4 P  i% u; @' d8 ?4 k
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # o5 i2 z/ X0 j9 U( D+ F% e
  104.         for (;;) {$ W- v5 f9 h1 W3 S! b$ p4 ]
  105.                 c = getchar();
    & U2 B* ?- \( F" ?8 V5 e7 z
  106.                 if (c == 'y' || c == 'Y')
    + T, K, o2 H/ V
  107.                         break;- j& i  W3 W3 C6 d8 f& F" v7 F
  108.                 if (c == 'n' || c == 'N') {
      p! K3 T1 h" I2 ~( b2 @
  109.                         printf("\nAborted.\n");& ~/ T3 ^  G. {/ i
  110.                         return 1;8 n) m4 l  }; G- D6 `3 _0 h0 ]6 E
  111.                 }0 C6 K& R9 @% I% F5 _
  112.         }+ r8 m+ i# d+ b$ g8 d
  113.         if (writeparam(mac, stbid) == 0) 1 R, P1 K* c, s1 T3 u) n/ [, E+ I* }
  114.                 printf("Parameters changed.\n");
    1 r+ z6 N! U0 `% b; b2 T8 q

  115. 5 O3 R" F* o+ R+ {6 R
  116.         return 0;; l7 v& {7 Y1 i+ A
  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
" `, P! d$ o# F/ f& |% M在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ m! r0 L" f( F, S: A! j% K, X
你用的编译命令行格式是什么?
: N1 H8 M3 E* X) X# b8 m
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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