查看: 16395|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , z1 g9 `3 i# I# w
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ T+ I5 }" U- Q0 ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:5 r) c# k, o7 m; }/ U
usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 u- F5 A/ F) b8 j
. J; B$ K) a7 I' ~" B
6 p8 \$ H0 H; Q: {% N0 s& k不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 H7 y2 ?% C* {& R* S) x) g: g6 O  p' J% s( B
补充内容 (2012-3-8 09:42):
6 E2 Y4 v8 r; `" e0 whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! X4 N/ O$ A/ T( |' S- b2 h这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# i7 j' m- I' \/ b+ z
8 ]7 p2 ?6 y3 ?+ J9 L+ V
himr <address> <value>. sample: himr 0x80040000 0x0
$ L: x. B# Z0 w  J0 A: J" O( v$ F% \- r; W; K3 F+ L
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. {, c; j$ Z( N) w' f. T
himr 0x80040000 0x00
9 X3 _) y4 R( {: l$ n+ shimr 0x80040001 0x11
1 T; m/ F4 [: r9 H+ p/ w* Ghimr 0x80040002 0x22
% G0 Y+ j* ^, _+ Ohimr 0x80040003 0x33
) W3 Z  G3 Q; D. ]6 xhimr 0x80040004 0x44
2 D. D* D3 \- ahimr 0x80040005 0x55
7 S: ?* {$ X, j8 G
0 i, Q$ N$ h1 |+ o+ o9 }! aSN也是类似。
% i  u# @/ R4 \3 }% N
7 E( N3 c* H0 c2 g现在主要是,谁告诉我们MAC和SN的地址?& a8 V& y6 r9 @
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ g# B" g3 ?6 l7 n+ o, }5 O一直想找到运程修改MAC和SN的办法,苦于无解啊

, u1 y& t% u) w+ _/ ^* G* y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + c3 G* y, S* g' U  _% n5 Y

. C# ~  }) T* @2 z, `修改的代码早有了。到今天不会编译。
& o2 K" L. S9 u6 G7 J) d9 f( D需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ! _  V* U5 W2 Y! t9 H
  2. #include <malloc.h>
    , O% F! `  M! _5 L  E
  3. #include <sys/types.h>
    ! K$ n4 ^7 J. R. ~/ e4 P
  4. #include <sys/stat.h># D& C6 ]. g* S! h3 ?, K/ [
  5. #include <sys/ioctl.h>
    1 Z- j' Q1 E9 D8 g* n4 ~$ q
  6. #include <stdio.h>% X: i1 r# D$ w. M
  7. #include <string.h>) d8 z0 I2 `7 B
  8. # r% ?$ q- G1 r
  9. typedef struct {
    8 ?' Q3 S4 U* ]/ W; A) W
  10.         unsigned int        e2prom_cmd_sub_addr;
    * R0 U5 L; R  m! X
  11.         unsigned int        sub_addr_count;
    * V5 b  L+ r1 p
  12.         unsigned char*        e2prom_cmd_data;
    3 C/ ~5 B5 b3 \" Z
  13.         unsigned int        data_count;
    0 }8 T5 Y- |$ O$ u
  14. } e2prom_s_cmd;
    # c$ m' b. N( \4 T

  15. - T2 ?7 y" |# F' H6 S' \' B
  16. #define E2PROM_CMD_READ 1
    ! I  {% |! s5 M: Q6 A4 E* c' G
  17. #define E2PROM_CMD_WRITE 2
    ; v  v- t: j* ?! \' X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 ]" }$ c  u: `% x. L+ n; b( ^' J

  19. 3 G! Z' Q% _) C5 F: e; b9 c  `
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( B" |0 n6 m- h! _
  21. {2 m  j+ S5 B" z/ n; h7 |& Z) o4 \2 @
  22.         int fd, ret;9 h( _. l( m  e+ ~
  23.         e2prom_s_cmd arg;$ W& _4 B' n9 h/ a0 s
  24.         unsigned char buf[0x18];8 ?, Z( e8 }2 F- O$ A5 F
  25. ; K  X8 E/ z8 R9 r% r4 ]8 Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- a! T  T3 _: k$ L0 ]
  27.         if (fd  < 0) {1 {+ n  D& W* B/ o% ?- q, |+ |
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 U$ B8 [- B1 a6 X( H1 _
  29.                 return -1;  j3 h) `! t& v* ^
  30.         }( X% o' Z  N/ k7 I% B* G8 Q3 i9 }# ?, ]
  31.         arg.sub_addr_count      = 2;$ |* i# U9 x* W% O5 N
  32.         arg.data_count          = 0x18;& t- O( V3 I7 b$ O) A2 D8 _
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 H& w0 n* j+ J% k
  34.         arg.e2prom_cmd_data     = buf;
    3 M, `! h: i5 f) v0 m3 ^
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ h: A8 b9 ]# A2 S. `
  36.         if (ret != 0) {
    1 ?& S2 T- A) n! B2 t9 e, \! H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . S  ^% l! k. r& }
  38.                 return -1;
    & T8 h8 y$ O' K( Z* h
  39.         }
    9 T; Z6 N0 u- W5 x
  40.         memcpy(mac, buf, 6);
    ' `! i( ~8 |: K# \8 }0 c7 J8 X; ]
  41.         memcpy(stbid, &buf[6], 18);
    , O4 _; g, L) ]" R  k
  42.         stbid[18] = '\0';# \: @" }" U( H6 ], X6 V

  43. 7 ?! [/ i+ Q6 X! Y% f
  44.         return 0;
    4 F: k; [7 N8 B7 |) }
  45. }
    ( b6 X% |0 _  i4 ^

  46. 7 I+ i& ]# H3 h) p+ u  Z5 i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    0 _9 j: G8 Z* `2 [6 ^: p
  48. {
    & c# A) B) |- V, X
  49.         int fd, ret;
    & N. B3 x% v- b4 H. W
  50.         e2prom_s_cmd arg;
    : ~* `0 j9 e  a, j+ p' i0 X1 e
  51.         unsigned char buf[0x18];
    , |$ Q# h4 X4 ]9 T+ \

  52. 4 V0 p! m6 y' i4 k- U
  53.         memcpy(buf, mac, 6);$ M  G6 \7 p: i7 I8 O
  54.         memcpy(&buf[6], stbid, 18);
    3 H8 g2 D0 E* i( N- p" \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) w' o1 {7 s, q9 Q3 c3 G4 e
  56.         if (fd  < 0) {5 w; H+ J$ h7 Z! ~0 n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 r* w$ E; p9 a8 x+ I) m: B3 _
  58.                 return -1;
    8 N0 w% {7 z3 A3 y" P
  59.         }
    7 h5 d6 r1 L1 g( O4 B+ a
  60.         arg.sub_addr_count      = 2;$ {7 G- P# K- L# F* f7 h
  61.         arg.data_count          = 0x18;2 Q6 H1 W* v& N" L: J( _+ _
  62.         arg.e2prom_cmd_sub_addr = 0x290;& ^% O6 v: n( C! ^1 _
  63.         arg.e2prom_cmd_data     = buf;# C$ s1 i( ~' h. s$ B/ ]% |
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" h. U* I$ w( v+ G1 q/ }& b
  65.         if (ret != 0) {
    ( D  x" |% f' h* X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: E9 l0 ^' |# z
  67.                 return -1;
    , @4 q, n9 c9 c8 Z  s9 I' B% N
  68.         }4 W( T( v  Q2 {; E

  69. % a7 j& o. ]2 T1 N
  70.         return 0;# G) _( p; i7 ?! ~
  71. }' J6 r5 W9 |+ v7 W5 {2 U$ k
  72.   [0 u2 B5 w5 s( S8 C( P9 x
  73. int main()
      O4 G- C8 F2 r7 X, Q
  74. {' s& a( I3 t$ w- b/ b- \6 J( A9 h
  75.         char c;2 ]: P- n. ?3 K8 M$ J5 [1 z$ B+ \% @
  76.         int i, macs[6];: y/ j! E/ j- Y9 m: I* q+ h/ q" |
  77.         unsigned char mac[6];# H  L* `" `4 M# b
  78.         unsigned char stbid[256];4 D3 p$ |* o& D9 X, i$ d

  79. 5 Z6 H2 v- G/ r2 V+ _) C) `% b( m- G/ i1 B
  80.         if (readparam(mac, stbid) < 0)2 o# f! k4 w3 Z9 |
  81.                 return 1;
    7 N+ V8 E1 S/ T3 c+ O
  82. 4 Y+ c: y1 N$ l; l7 X- K
  83.         printf("Current parameters: \n");
    ) Q8 g6 g2 v# ~( D: p& f: s$ _9 z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & p( A. T9 g1 ]$ n) z5 N( f7 `
  85.         printf("  STBID: %s\n", stbid);
    4 N! Y! @3 G3 o9 X5 @
  86.        
    * A, c6 Q  e* y* K* e9 F% l  y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ o9 `9 }  A+ O) J1 A# |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* s% _2 k' b: g/ [( Z2 d" V
  89.                 printf("Input MAC error\n");
    2 V9 |* C# R2 \  L
  90.                 return 1;
    5 `' G0 t/ u1 X  W
  91.         }
    1 I. M# d3 o7 t" u" }! z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 K6 C9 q. G, Q* s7 P2 A7 L
  93.         printf("\nPlease input new STBID: ");5 j% s# F. Z: {1 M2 _  X% ~
  94.         scanf("%s", stbid);
    . H  B) M8 E1 |) e) u7 {9 ]
  95.         if (strlen(stbid) != 18) {/ o" i) {/ k$ r$ J3 e
  96.                 printf("Invalid stbid\n");( f7 D8 l. w  b2 k; q) \$ _
  97.                 return 1;
    4 U2 ?$ ~, K# @/ c( i. s9 h& |
  98.         }
    : ~6 ?' ]% a- t# W
  99.         printf("\nNew parameters: \n");) b5 u' Q) C2 ]( v7 ~! @+ J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 k1 E, c* I0 m& Z2 \: A
  101.         printf("  STBID: %s\n", stbid);, p  F9 V5 Q' y6 n7 ]1 [( p

  102. & u. D5 x! l: u: Q" V6 e% `1 m; a0 V2 y6 \
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ g8 h8 |6 j0 a" l, T
  104.         for (;;) {2 Y2 N% O6 Y# {7 w$ ?& f
  105.                 c = getchar();; b$ C8 Y% X7 A8 a
  106.                 if (c == 'y' || c == 'Y')4 o! R7 e; g0 i
  107.                         break;& }2 d+ M: A$ E- \  W; t( O: u
  108.                 if (c == 'n' || c == 'N') {
    7 E3 k8 \1 f# u) V6 D- w8 U
  109.                         printf("\nAborted.\n");! R" c: l2 d3 f% {  G
  110.                         return 1;: B* o% r7 \, ?* |( G$ }7 ?
  111.                 }
      e  J0 ]3 v* m4 \; O: i) o) S
  112.         }3 S- {% u. s% i$ {
  113.         if (writeparam(mac, stbid) == 0)
    1 U* d7 Y0 k* S$ i3 |" L$ {
  114.                 printf("Parameters changed.\n");
    ( e/ Y# f; Y& A

  115. : C3 A0 P- u. d$ ~
  116.         return 0;9 m$ m. e6 q- [1 T
  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 . K; b* y* t% [
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" M6 S' E, [" h
你用的编译命令行格式是什么?
# o6 F6 e2 c9 m4 u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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