Java Socket Telnet server and client

2023-01-21   ES  

TelnetServer.java

// Telnet server

import java.net.*;
import java.io.*;
import java.lang.*;
import java.io.*;
import java.util.*;

class TelnetServer {
	public static void main(String args[]) throws Exception {
		ServerSocket Soc = new ServerSocket(5217);
		while (true) {
			Socket CSoc = Soc.accept();
			AcceptTelnetClient ob = new AcceptTelnetClient(CSoc);
		}
	}
}

class AcceptTelnetClient extends Thread {
	Socket ClientSocket;
	DataInputStream din;
	DataOutputStream dout;
	String LoginName;
	String Password;

	AcceptTelnetClient(Socket CSoc) throws Exception {
		ClientSocket = CSoc;
		System.out.println("Client Connected ...");
		DataInputStream din = new DataInputStream(ClientSocket.getInputStream());
		DataOutputStream dout = new DataOutputStream(ClientSocket.getOutputStream());

		System.out.println("Waiting for UserName And Password");

		LoginName = din.readUTF();
		Password = din.readUTF();

		start();
	}

	public void run() {
		try {
			DataInputStream din = new DataInputStream(ClientSocket.getInputStream());
			DataOutputStream dout = new DataOutputStream(ClientSocket.getOutputStream());

			BufferedReader brFin = new BufferedReader(new FileReader("Passwords.txt"));

			String LoginInfo = new String("");
			boolean allow = false;

			while ((LoginInfo = brFin.readLine()) != null) {
				StringTokenizer st = new StringTokenizer(LoginInfo);
				if (LoginName.equals(st.nextToken()) && Password.equals(st.nextToken())) {
					dout.writeUTF("ALLOWED");
					allow = true;
					break;
				}
			}

			brFin.close();

			if (allow == false) {
				dout.writeUTF("NOT_ALLOWED");
			}

			while (allow) {
				String strCommand;
				strCommand = din.readUTF();
				if (strCommand.equals("quit")) {
					allow = false;
				} else {
					Runtime rt = Runtime.getRuntime();

					Process p = rt.exec("cmd /c " + strCommand);

					String stdout = new String("");
					String st;
					DataInputStream dstdin = new DataInputStream(p.getInputStream());
					while ((st = dstdin.readLine()) != null) {
						stdout = stdout + st + "\n";
					}
					dstdin.close();
					dout.writeUTF(stdout);
				}
			}
			ClientSocket.close();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}

TelnetClient.java

// Telnet Client

import java.net.*;
import java.io.*;

class TelnetClient {
	public static void main(String args[]) throws Exception {
		Socket soc = new Socket("127.0.0.1", 5217);
		String LoginName;
		String Password;
		String Command;

		DataInputStream din = new DataInputStream(soc.getInputStream());
		DataOutputStream dout = new DataOutputStream(soc.getOutputStream());
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		System.out.println("Welcome to Telnet Client");
		System.out.println("Your Credential Please...");
		System.out.print("Login Name :");

		LoginName = br.readLine();

		System.out.print("Password :");
		Password = br.readLine();

		dout.writeUTF(LoginName);
		dout.writeUTF(Password);

		if (din.readUTF().equals("ALLOWED")) {
			do {
				System.out.print("< Telnet Prompt >");
				Command = br.readLine();
				dout.writeUTF(Command);
				if (!Command.equals("quit")) {
					System.out.println(din.readUTF());
				}
			} while (!Command.equals("quit"));
		}
		soc.close();
	}
}

Passwords.txt

admin password

source

Random Posts

day03notFcation notification

IOS development Homekit (2) lu

Understanding Apt-Key || Apt vs in apt-get || Public Signing Key

Cassandra Source Code Analysis 2: File spreads transmission object serialization

Similar calculation method in the recommendation system summary and implementation code (Python)