查看: 16325|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 g# h7 S" w; O/ Y! z. K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 z8 ]% U  w/ s, Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; ^0 P" ?  ?+ Busage: himr <address> <value>. sample: himr 0x80040000 0x0
; A8 ]2 |* Y& e, k
5 J' q/ t  _/ W, o" ~! y0 z' c
- W4 r/ z: K: O. v: J+ C4 E不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. v1 V- J8 n7 M$ _8 k& ?6 T  C! z$ @/ O* d) _% ?3 D
补充内容 (2012-3-8 09:42):
. D$ t& o, t* ^http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 Q8 t* W1 k+ N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。7 O8 u7 x! H5 {& _# ?! {& K

0 j8 q3 J/ i0 T' Z- [' v! Ihimr <address> <value>. sample: himr 0x80040000 0x0* a! {& A6 n3 z3 N1 @& m* ?

6 k8 I4 w( w9 ]) u  C; F例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 R7 F0 \7 f8 qhimr 0x80040000 0x00$ L& H; \# X- V$ Y& P
himr 0x80040001 0x11
7 u4 e  K! b9 A  g" O. ihimr 0x80040002 0x22
1 i4 h. `8 n$ @himr 0x80040003 0x33
2 e2 v  I4 N4 \; }; ?himr 0x80040004 0x44
* W5 |2 U+ }, hhimr 0x80040005 0x55
& K+ Y1 b1 b7 C0 n; Z
9 Q+ Z8 a7 R2 j: ~SN也是类似。
/ t7 ~& @% P; @3 L" V. w% t
# j# p; F( Q& [  \: o2 p) q现在主要是,谁告诉我们MAC和SN的地址?( Y8 K8 d- P% Q" Y: k: E: @* M
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 U. K4 H! F% k6 J' ^0 a+ [一直想找到运程修改MAC和SN的办法,苦于无解啊
3 ?+ P) p% }& {; F% _- o
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & D& p+ \0 }. u7 n
0 V& k6 W8 C! F7 s
修改的代码早有了。到今天不会编译。
- `5 n1 J  U/ s! ~需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ G2 D/ k. B6 K
  2. #include <malloc.h>
    0 b) c3 R8 t+ b; B
  3. #include <sys/types.h>
    , ]+ }$ n7 i" M4 N+ h
  4. #include <sys/stat.h>
    4 o- t+ r8 f  M5 Y- O4 k: h. I
  5. #include <sys/ioctl.h>9 Y6 f8 \4 v( u& u
  6. #include <stdio.h>+ @8 l7 E& ~' c
  7. #include <string.h>1 \  r5 w% f3 O. T* C
  8. 6 Z+ `" V/ n$ h5 Z  w3 z
  9. typedef struct {) A" I/ A: l+ c* K! y' b
  10.         unsigned int        e2prom_cmd_sub_addr;, Y4 ^5 j: n* q$ k2 `4 I- W" o
  11.         unsigned int        sub_addr_count;  \; Z/ [% D; k/ x
  12.         unsigned char*        e2prom_cmd_data;
    6 Q* W% a, J" c4 p+ e' d  f2 {0 ?
  13.         unsigned int        data_count;
    " k7 W/ u( l7 w$ D' L0 ?
  14. } e2prom_s_cmd;) l( \5 s' Y0 r, Q/ D/ _" N

  15. & S, }3 W4 Q+ W1 G- l* B
  16. #define E2PROM_CMD_READ 1
    : W9 `. f- U4 A( `
  17. #define E2PROM_CMD_WRITE 2. e- s, D. r- T' |2 i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 ^! }. _7 x! m1 w. ?

  19. ( A, S  Q7 d6 s7 c2 R- K$ s0 d$ A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 r) g8 n7 r; h* H( E- _  D- @3 o8 s
  21. {. a! S; D( r& I( i$ A! S
  22.         int fd, ret;
    $ t9 e. `  }# J  _! j7 [
  23.         e2prom_s_cmd arg;1 b1 D" N3 S, m/ B) X
  24.         unsigned char buf[0x18];/ Y4 T3 H3 Z0 f- s* x% l0 ]

  25. ! ~- e' y5 C- M) }: V  ^& U
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 R3 t4 l& n, H. z4 e6 [
  27.         if (fd  < 0) {4 c( Z7 d1 W  k4 g4 d
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% m2 \( X7 o5 O# U
  29.                 return -1;
    6 B* c2 Y5 M. S$ H* X+ p
  30.         }( Y' A& i1 O0 n% k
  31.         arg.sub_addr_count      = 2;
    3 u; w, g9 i; x$ p* }
  32.         arg.data_count          = 0x18;% u6 @' e  c! `
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 W6 ~  }, X- n, @$ a7 h
  34.         arg.e2prom_cmd_data     = buf;9 e" j2 M+ @4 R$ s: G. n# e  u. a
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 P( P  V- G. L9 ?5 S" u: n
  36.         if (ret != 0) {
    / N6 X4 `- O# Z! r% m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 \" D, D$ w! Q( O# k& Z  x7 }
  38.                 return -1;
    / W/ Q; i& j  p. p9 v, r
  39.         }
    - S7 |/ j  Y9 s" A9 ^
  40.         memcpy(mac, buf, 6);
    6 H- z; p0 o1 e* }8 _
  41.         memcpy(stbid, &buf[6], 18);- ~. W, C7 G0 e6 s; @
  42.         stbid[18] = '\0';! Y( R3 [* F: s6 u: p' d

  43. 7 Q" X- T% S; g& M& c" Z
  44.         return 0;% b+ b4 Q5 O7 V( x& u5 h
  45. }
    1 i  O: D  |0 X4 f, ?) O- ^
  46. % }1 |+ l3 l. \6 W+ V$ r$ h
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  z% W) n  H) F4 i, [; k
  48. {- h* O" J/ [7 b& b. E; x
  49.         int fd, ret;
    1 J7 e; n$ U' a0 H2 @! A
  50.         e2prom_s_cmd arg;7 y7 a1 O- Y7 N# Z4 j0 M$ p
  51.         unsigned char buf[0x18];
      L) F' u; w" Y, S8 N

  52. ( y- x3 U2 c& z3 `1 I( G
  53.         memcpy(buf, mac, 6);/ O$ W2 g- V5 T; g; L( \
  54.         memcpy(&buf[6], stbid, 18);
    . M: c: G9 q) k; K# W' \  H1 l
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" C1 i  q9 T  x; s% y
  56.         if (fd  < 0) {
    0 ?8 f8 F7 d4 T6 C# h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & _9 o( h( ?/ ?- }
  58.                 return -1;
    * i: \/ M7 a/ f! \
  59.         }
    , d% l/ ?+ u. \, m, z4 l9 d+ F
  60.         arg.sub_addr_count      = 2;
    # r1 I5 r, v6 B3 ~
  61.         arg.data_count          = 0x18;) j6 \3 l6 |- u2 F/ N  B: f1 y/ |, _
  62.         arg.e2prom_cmd_sub_addr = 0x290;: M7 `8 }# J1 q' r& l& {& C0 X& \; v
  63.         arg.e2prom_cmd_data     = buf;
    ) _' N5 e' M3 F! P5 X8 x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      K: [( h! v; r
  65.         if (ret != 0) {6 u* ~5 W: O0 j: V3 y9 Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! l3 Q( i* y+ }( a9 e5 [
  67.                 return -1;
    ; q" N  o" h6 s
  68.         }
    2 M0 Y/ }$ t4 e% n* U

  69. + v+ D3 Q6 ^2 ~  V; z* H
  70.         return 0;
    9 [, w! W$ N: K7 R
  71. }3 P- i8 p0 Q% b4 U$ a

  72. - y- `) x7 X, R4 f! c  K
  73. int main()5 b* J1 a  n' \8 q5 P: Q
  74. {
    . u$ f6 }: W+ N8 _) d5 P/ i* O
  75.         char c;
    / |3 r$ S! i9 V9 ^, m& ]# W# c
  76.         int i, macs[6];+ o+ c) |; y  V: U
  77.         unsigned char mac[6];7 S- H( I5 f) o' e9 c
  78.         unsigned char stbid[256];- s. @6 H$ M5 m8 I% m
  79. 5 E5 g2 S6 g8 |- Z9 P: C8 D
  80.         if (readparam(mac, stbid) < 0)
    4 b  B/ N( g0 N+ g5 d$ |# d
  81.                 return 1;0 y: m& c# g; c, g- z) {( Z( q$ d

  82. + U4 @9 I& r8 m# V; k2 q. h
  83.         printf("Current parameters: \n");0 w* d. P) g; E2 D" `6 v% m
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 A5 D3 y  E# X$ A! z8 ~
  85.         printf("  STBID: %s\n", stbid);7 ~/ ]8 @# Z) E( n' y$ X
  86.        
    7 \8 A: ^8 }: F: f: [0 `
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# P7 }2 x; Z* B# G/ m: T. k& x' e2 u
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 H; v0 r% F- ?
  89.                 printf("Input MAC error\n");
    3 N" }& x' L# W- k" ~
  90.                 return 1;$ p1 B5 f# y0 b+ \1 _
  91.         }
    0 Z( U) n+ q& i6 m4 h& I6 {+ f0 T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 r$ O5 u- g& j0 u8 @
  93.         printf("\nPlease input new STBID: ");: Y% e2 e" j& i- c+ u& v) y
  94.         scanf("%s", stbid);9 ^* t+ R, _9 a- o+ Q8 r( M- p
  95.         if (strlen(stbid) != 18) {
    5 I3 g3 \4 t( _; R* q
  96.                 printf("Invalid stbid\n");. p% S; K2 G5 l1 @. h: |7 J
  97.                 return 1;
    7 G6 ]7 h! T5 u$ C
  98.         }
    & f+ h9 D; U2 l" A* _
  99.         printf("\nNew parameters: \n");7 ?& V: ]+ f) G9 h2 w+ b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / Y. ^, K' l( _# s
  101.         printf("  STBID: %s\n", stbid);; X1 a# O, D4 U; k6 @# Z! }

  102. 9 V; n0 N8 X8 N+ T8 d. D
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 i4 @% P$ f4 e* y* M6 h4 T, D( S$ f
  104.         for (;;) {
    + e6 C0 }6 M- b! K+ G& @  l- t3 z' u
  105.                 c = getchar();
    1 F4 P( S1 o+ P' j
  106.                 if (c == 'y' || c == 'Y')
    " S  S9 W# j) }. U+ B
  107.                         break;# k4 o! F& w# b; O# t* g$ e2 D
  108.                 if (c == 'n' || c == 'N') {) \" l/ J! V# ?
  109.                         printf("\nAborted.\n");
    . `/ {) t( o) s5 ]  i8 ^% u9 V* v& R0 k$ E
  110.                         return 1;3 V$ q% s+ P/ j8 V
  111.                 }$ {$ {1 [7 O, ~& D4 M9 B7 H! y
  112.         }4 B6 Y& D# `  i3 Z% P- W7 P; j+ o5 I
  113.         if (writeparam(mac, stbid) == 0) 3 V* T# a% x. w2 c% ?
  114.                 printf("Parameters changed.\n");
    . z: J; k- @( R" v8 q- }) H

  115. - w+ g, l& Y- X
  116.         return 0;+ c* B2 i0 x( ~9 N+ b( P! E2 B
  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 $ A) t2 c5 |& @: c# Q  s$ W2 o
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: l1 J5 `+ h9 Y
你用的编译命令行格式是什么?, l1 r8 [8 u, X6 _& a. i; V7 T! c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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