查看: 16885|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! }- F& s7 ~9 `6 [' ]% r
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 r$ Q! H+ C& x; Y' w5 K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) T& x: Q4 E: R* f$ `
usage: himr <address> <value>. sample: himr 0x80040000 0x0
0 m0 Y/ G9 N7 E, d% C9 s; u8 L. ]  k
$ J6 H4 ^; f' E+ w! Q; \
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( n4 l3 S1 C7 T% ~# u* g2 r4 _  d: h

1 Y9 J/ j$ P2 J) L; a2 O' k补充内容 (2012-3-8 09:42):
2 F/ J" ~. |2 `http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  r: E5 }' i9 p$ N  Q这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。% ~/ P- O$ c, w1 }3 P0 Q

2 [8 m' N/ I( v- V, x% k3 e  Bhimr <address> <value>. sample: himr 0x80040000 0x0
; D" W" n1 b: c% [8 J# Y% X0 J0 _, y+ t! \+ ~
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 q) u. m4 [; C
himr 0x80040000 0x00
; b- t% ]; v8 xhimr 0x80040001 0x11  \0 B8 G9 {5 G( h" a% N+ g/ J- `9 H
himr 0x80040002 0x229 k: c! X; B9 y! a/ ~) T
himr 0x80040003 0x33
  ^' W0 T0 F" A, _, R" Q8 ?himr 0x80040004 0x44
; S7 Z5 B2 j2 C8 Z* f) Ihimr 0x80040005 0x55
" F) t, B4 a1 q% g# x  Z7 E& ^, H2 e$ Y* a! r
SN也是类似。
4 @6 H( Q" m+ }9 B4 C! x* s0 n7 @# J  H: Q
现在主要是,谁告诉我们MAC和SN的地址?) ?9 w1 z2 N4 R  L3 W0 f( B6 J0 ]- C
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
6 E/ h  W# O0 T一直想找到运程修改MAC和SN的办法,苦于无解啊

; B' H0 l( w$ _/ Z: `源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' @! R' Y: o+ j& W$ b+ U0 k# Q! n. l, @  C; t4 a/ r
修改的代码早有了。到今天不会编译。. c0 O8 i/ b4 R* @- S/ w' R
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) s. s$ h$ }) ]# R$ T
  2. #include <malloc.h>2 ?/ y3 S2 H0 @) n# ?2 m
  3. #include <sys/types.h>
    1 }% d3 W7 V1 ]8 f2 L2 q% T
  4. #include <sys/stat.h>  u' M' i/ K; F; ?* C# j
  5. #include <sys/ioctl.h>& {( [  K, k# @
  6. #include <stdio.h>
      q/ u" |7 x5 d" b. n6 J; r( d
  7. #include <string.h>2 j; E) f' S( O/ z
  8. 8 g, j- x$ H1 Y' t( e; [
  9. typedef struct {
    ; n1 i' c8 h; ?8 a
  10.         unsigned int        e2prom_cmd_sub_addr;! v( f6 Z1 z( ~5 {  q( {  t% S
  11.         unsigned int        sub_addr_count;
    ) o* ?  O3 @( a9 {
  12.         unsigned char*        e2prom_cmd_data;4 H- c  q- {4 {, R; ?
  13.         unsigned int        data_count;
    ( F. Y5 U8 n( e6 F( b
  14. } e2prom_s_cmd;
    & A, h6 w& O4 x& z6 ~
  15. % a8 h8 C# D* _7 h
  16. #define E2PROM_CMD_READ 1
    / P9 K8 y* i/ @% R+ @6 d* q! p
  17. #define E2PROM_CMD_WRITE 2( s0 A' _. x3 X' h* b1 R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / X/ j0 p* G$ v8 n- ^: V1 }

  19. ! s' m/ g- I, J7 N4 K% F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 ~5 j8 n- C7 `$ l! f
  21. {
    & j$ `% O2 K6 B) N7 `2 W" ?  m
  22.         int fd, ret;
    7 a3 ]' v9 X- }6 d9 \! {5 |
  23.         e2prom_s_cmd arg;
    . i  O# `* p! s3 ]- D
  24.         unsigned char buf[0x18];
    + w! U; Z" K1 {& U0 i

  25. 5 E  h3 j- c- o! A
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' V+ d; {* o' ^: I& @8 S# K$ |
  27.         if (fd  < 0) {
    & p# l) |: J- f1 ?: n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# \+ M* t& e) x6 \: F" O8 ^3 h
  29.                 return -1;
    5 p$ y- k  Z9 l! Q
  30.         }4 n7 e. Y/ X. b: r/ p1 p2 F( U7 N
  31.         arg.sub_addr_count      = 2;
    # ?) C8 |7 V2 b7 ]" K: s! t
  32.         arg.data_count          = 0x18;) H, Z- o3 a5 b- i2 g
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 X* {6 }( r- U4 V& f" t9 D7 f+ X% {
  34.         arg.e2prom_cmd_data     = buf;$ p5 G$ T  k1 c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 [) p% D7 V/ G: Q
  36.         if (ret != 0) {  \2 m3 J, Y) h' t% B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 q9 [/ ^+ M' X; v2 |
  38.                 return -1;
    - K" q' ?; W* g* E8 c
  39.         }
    / s3 `0 @1 d4 i8 @
  40.         memcpy(mac, buf, 6);' R' x2 _! @1 V1 C
  41.         memcpy(stbid, &buf[6], 18);# C0 s7 A* S) @" G  U1 A& @; a' J
  42.         stbid[18] = '\0';: W2 ~  I2 R8 i
  43. % {' _% e8 l- q1 k
  44.         return 0;
    ' G& I( W/ D1 [4 G
  45. }5 B) q! \9 w1 X( W7 ]

  46. 4 d& }9 X) n0 X* [4 g1 H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 B" X) s4 o, O
  48. {0 M$ u/ Y$ b+ e, t/ R( g+ z7 s, e
  49.         int fd, ret;- s0 v" I/ X2 X; W
  50.         e2prom_s_cmd arg;$ |% @' o) x; o
  51.         unsigned char buf[0x18];
    / b5 g2 \% W0 L  d4 x/ E9 G

  52. - F& v! k* P- c" |7 Q5 }
  53.         memcpy(buf, mac, 6);% Y6 {8 f! w. N- S6 Y+ H2 U6 A
  54.         memcpy(&buf[6], stbid, 18);
    5 [' c4 l/ J/ w8 R4 E. _  [
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    * n# W# i) ~( E) {" d  }% r
  56.         if (fd  < 0) {
    & K) v, E& L9 F# I9 X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& n5 g/ K# X+ Y6 J) u: @: ~; V) s
  58.                 return -1;
    % o5 o/ k2 e) c5 V1 U, E
  59.         }6 i* _) d' @2 s3 J
  60.         arg.sub_addr_count      = 2;
    9 ]% F8 }% c2 `' W5 o/ J
  61.         arg.data_count          = 0x18;. g) T1 m2 J# E; S
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 z  g  f; Z( B2 \( u
  63.         arg.e2prom_cmd_data     = buf;/ X) h' r$ U' N5 M6 y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    * h8 i4 Y# A# m8 A. a
  65.         if (ret != 0) {# B2 X$ d! j$ e) W  E6 _/ |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 d3 f4 v* t, ~, W  N, T/ T# n
  67.                 return -1;% [: E6 Y3 U7 q5 e6 A( Q2 r* _* C
  68.         }
    6 m& I- z) F7 _3 O
  69. " c# O  L& U! ?, E5 W0 M" f
  70.         return 0;
    % L3 U8 ?: `" S( g
  71. }% v3 s: l; t5 R, x# `7 J$ x
  72. 2 q% e  d5 U& S: U9 j
  73. int main()
    , X/ o6 Y7 y! V( P
  74. {
    4 u, `1 H' H  O: I9 q8 f! m
  75.         char c;
    ' o$ L, ?/ q+ ~* w7 t: q
  76.         int i, macs[6];. m( g# X; v8 o1 |: }
  77.         unsigned char mac[6];  s! n, j  Z9 |& a: H$ D' B1 m
  78.         unsigned char stbid[256];
    - x& G: X9 m+ V# M+ \
  79. % P! O% p, Y" X4 S& _
  80.         if (readparam(mac, stbid) < 0)  }) V0 T8 ^! [" @. `
  81.                 return 1;; F% u! b/ |2 y5 \: N1 z* U8 a% N6 `
  82. & b3 p, o( g: a  k5 h$ s
  83.         printf("Current parameters: \n");0 h0 R3 e( V3 W6 R5 K( e, K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 k& E0 s; H' p: {; A* \
  85.         printf("  STBID: %s\n", stbid);$ c5 p  U: Y* x8 f! X, s
  86.         / O# X+ ~, A$ H5 V' b/ F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ d* y2 [0 |  B- g% }3 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 c7 e: w1 d- J7 @. w  b$ a1 j' p% X
  89.                 printf("Input MAC error\n");
    $ [) y, d; Z( F
  90.                 return 1;
    - ]" Y6 u& k7 l/ L% ^: N/ ^- x7 ^
  91.         }
    8 ~8 s3 l( v/ Q4 S$ M) }
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: f# k4 _( f/ Z: j2 z  r$ t9 T( W- x
  93.         printf("\nPlease input new STBID: ");# Z3 R3 u+ Q2 |- a$ X. p) |
  94.         scanf("%s", stbid);4 w+ y4 z- t! {4 }
  95.         if (strlen(stbid) != 18) {+ Y3 ^5 E5 I7 z
  96.                 printf("Invalid stbid\n");
    * ~; k9 S; d; Y/ G1 ?) E
  97.                 return 1;
    ; D- N$ K- l' @$ W* d7 v
  98.         }0 g6 \. O9 _% B$ [5 v2 v
  99.         printf("\nNew parameters: \n");
    , V6 I' n) ^! U0 S6 J, f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - X0 j& W! X# ?/ d+ o1 H
  101.         printf("  STBID: %s\n", stbid);' A+ ^! P$ K) \* ]" v9 A0 {. ^' w% ]

  102.   e! J2 E) \, H1 L
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 p3 F" q! e3 _: u9 t; j1 _/ `! M
  104.         for (;;) {
    : V% R( D! j9 d' q. ?. W; u: G# ]
  105.                 c = getchar();
      j# E/ g1 f+ [( k
  106.                 if (c == 'y' || c == 'Y')
    $ T* Z: q# ]0 I# X
  107.                         break;
    " A5 a: e' |4 [% C& T& K
  108.                 if (c == 'n' || c == 'N') {# K, R5 e( F5 h) ^5 d0 F$ G
  109.                         printf("\nAborted.\n");
    9 P3 U0 Y0 m4 \/ F  }3 ?6 s4 J
  110.                         return 1;
    ; b1 v0 |, |1 w
  111.                 }  I* K" c- k3 c  m  D( {9 [' j+ x
  112.         }# t" Q1 g& K6 J8 M
  113.         if (writeparam(mac, stbid) == 0) ; c8 X7 Z4 l/ l
  114.                 printf("Parameters changed.\n");
    / C" h4 i, P+ @7 A& {$ O' z

  115. * P0 y3 S& x* S( N% b0 z1 f3 k% ]
  116.         return 0;( ~1 }3 j! M9 u% _+ H" 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
& {4 y# z0 Y) ~+ H9 {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 W- j* ?- |  j+ q3 ~( G4 Z: j9 ~
你用的编译命令行格式是什么?
/ }+ n2 [- ^; k* Z6 z
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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