áá±áá¹áá¬ááŸáá·áºááŒá¬ážááá¯ááºáá«áá
ááá±á· áá»áœááºá¯ááºááẠTelnetá TFTPá et ceteraá et cetera áá²á·ááá¯á·áá±á¬ standard Windows utilities áá»á¬ážá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá·áº client-server application áá»á¬ážááᯠáá±ážáá¬ážááŒááºážáá¯ááºáááºážá ááºááᯠááŒáá·áºááŸá¯ááá¯áá«áááºá á¡áá áºá¡áááºážááœá±ááᯠáá«áá°áá±á¬ááºáá¬ááŸá¬ááá¯ááºáá°ážááá¯áᬠááŸááºážáá«ááẠ- áá® utilities ááœá±á¡á¬ážáá¯á¶ážáᬠáá áºááŸá áºáá»á±á¬áºááŒá¬á¡á±á¬áẠá¡á±á¬ááºááŒááºá áœá¬ áá¯ááºáá±á¬ááºáá±áá±ááá·áº áá«ážááŒááºá¡á±á¬ááºááŸá¬ áá¬ááœá±ááŒá áºáá±áá²ááá¯áᬠáá°ááá¯ááºážááááá°ážááá¯á· áááºáá«áááºá
áá«ááᯠááŒááºáá±á¬ááºááŸá¯á¡á±á¬ááºááŸá¬ ááœá±ážááœá±ážááœá¬ážáááºá
á€áá±á¬ááºážáá«ážááœááºá áááºážááá¯ááœá²áá¯ááºááŒááºážáááŒá¯áááºá áá±áá°áá»á¡áá»ááºá¡áááºáá»á¬ážá¡ááŒáẠTelnet áá¬áá¬á¡ááŒá±á¬ááºážáᬠáá»áœááºá¯ááºáá±ážáá¬ážáááºááŒá
áºááŒá®ážá ááá¯á·áá±á¬áº ááá¯á¡áá»áááºááœáẠá¡ááŒá¬ážáá±á¬ utilities áá»á¬ážááœááºáááºáž á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážáá«ááŸááá«ááẠ- áááºážááẠá
á®ážáá®ážááá±á¬ááºáááºá¡ááá¯ááºážáá»á¬ážááœáẠááŒá
áºáááá·áºáááºá
ááááá¯á¶ážá¡áá±áá²á· Telnet á áá¬á¡ááœááºá áá¬á¡ááœáẠááá¯á¡ááºááá²á áá¬á¡ááœáẠá¡áá¯á¶ážááŒá¯áááá²ááá¯áᬠááááá¯á·ááá¯áá«áááºá áá»áœááºá¯ááºááẠáááºážááŒá áºáá»á¬ážááᯠá áá¬ážá¡ááŒá±á¬á¡ááá¯ááᯠááá¯ážáá¬ážáááºááá¯ááºáá« (ááá¯á¡ááºáá«áá áá±á¬ááºážáá«ážáá¡áá¯á¶ážááœáẠá¡ááŒá±á¬ááºážá¡áá¬ááá¯ááºáᬠá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááŸáá·áº ááá·áºááºáá áºáá¯ááᯠáá°ážááœá²áááºááŒáá«áááº) Telnet ááẠá ááºá á¡áááá·áºáá±ážá á¬ááŒá±á¬ááºážááᯠá¡áá±ážááŸáááºáá±á¬ááºááœáá·áºáá±ážáááºáá¯áᬠááŒá±á¬áá«áááºá áá±áá¯áá»á¡á¬ážááŒáá·áºá á€áá±áá¬ááœáẠáááºážááá¯ááºáá±á¬ááºááá¯ááºá áœááºážááẠáá¯ááºáá¯á¶ážááœá¬ážááẠ(áá¬áá¬ááááºáááºážááá¯á· áááºáá±á¬ááºááŒááºážááŸáá·áºáááºáááºá áá»áœááºá¯áẠááááºááᬠááŸá¯ááºááááºáá±áá²á·áááºá áááºážááᯠáá±á¬ááºááá¯ááºážááœááº)á ááá¯ááá¯áááºááŸá¬ áááºážááá¯á¡áá±á¬ááºá¡áááºáá±á¬áºáááºá áá»áœááºá¯ááºááá¯á·ááẠclient áá±á«áºááŸáááá¯ááºážáá áºáá¯ááá¯áááºáá¶ááẠááá¯á¡ááºááŒá®ážá áááºážááá¯áá¬áá¬ááá¯á·áá±ážááá¯á·áááºá áááºážááᯠcommand line ááá¯á·áá±ážááá¯á·áááºááŒáá¯ážá á¬ážáá«á command line áá¯á¶á·ááŒááºáá»ááºááá¯áááºáá«á áá áºáá¯ááŸááá»áŸáẠáááºážááᯠclient ááá¯á·ááŒááºááá¯á·áá±ážáááºááŸáá·áº áááºážááᯠá ááááºáá±á«áºááœáẠááŒááá« ááá¯á·ááá¯áẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááŸááá«á áá áºáá¯áá¯ááŸá¬ážáá±ááŒá±á¬ááºáž áá¯á¶ážá áœá²áá°á¡á¬áž á¡áááá±ážáá«á
á¡áááºáá±á¬áºááŒáá«ááá¯á·ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá¯ááºááœááºá¡áááºážá¡á
á¬áž á áá¯ááŸáá·áº áá¬áá¬ááá¯ááœáá·áºáᬠáááá¯ááºážááá·áºá¡áá¯ááºáá¯ááºááá·áº á
ááºážáááºá¡áááºážá¡áá»áá¯á· ááá¯á¡ááºáá«áááºá
ááá¯á·ááŒá±á¬áá·áºá ááá¯á¡áá»áááºááœáẠáá»áŸá±á¬ááºááœáŸá¬ááœá²á·á
ááºážáá¯á¶ááœááº-
- TelnetClient
- TelnetClientTester
- TelnetServer
- TelnetServerTester
áááºážááá¯á·áá áºáá¯á á®ááᯠááŒááºáááºážááŒáá«á áá¯á·á
TelnetClient
á€á¡áááºážáá»á¬ážá¡á¬ážáá¯á¶áž áá¯ááºáá±á¬ááºááá¯ááºáááºááŸá¬ áááºáá¶áááŸááá¬ážáá±á¬ command áá»á¬ážááᯠáá±ážááá¯á·ááŒá®áž áááºáá¶áááŸááá±á¬ áá¯á¶á·ááŒááºááŸá¯áá»á¬ážááᯠááŒááááºááŒá áºáááºá ááá¯á·á¡ááŒááºá áááºááẠá¡áá±ážááááºážáááááá¬á áááá¬ážáá±á¬ (á¡áááºááœááºáá±á¬áºááŒáá²á·ááá·áºá¡ááá¯ááºáž) á¡áá±á«ááºáá áºáá¯ááá¯á· áá»áááºáááºááá¯ááºááŒá®áž áááºážááŸáá·áºáá»áááºáááºááŸá¯ááᯠááŒááºáá±á¬ááºááẠááá¯á¡ááºáááºá
áááºážááá¯á¡á±á¬ááºááŒááºáááºá á¡á±á¬ááºáá«áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá
á¡ááŒááºážá¡áá¯á¶áá áºáá¯á¡ááŒá Ạsocket ááááºá á¬ááá¯áá°áááºá áá»áááºáááºááŸá¯ááá¯ááœáá·áºáᬠá¡áááºááŸáá·áºá¡ááœááºá á®ážááŒá±á¬ááºážáá»á¬ážááá¯á áááºááẠ(á¡áááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ stream variable áá»á¬ážááá¯ááŒá±ááŒá¬áááºá á¡áááºážá¡ááŒá áºá¡ááŒáá·áºá¡á á¯á¶ááŸá¬ áá±á¬ááºážáá«ážáá¡áá¯á¶ážááœááºááŒá áºáááº)á
public void run(String ip, int port)
{
try {
Socket socket = new Socket(ip, port);
InputStream sin = socket.getInputStream();
OutputStream sout = socket.getOutputStream();
Scanner keyboard = new Scanner(System.in);
reader = new Thread(()->read(keyboard, sout));
writer = new Thread(()->write(sin));
reader.start();
writer.start();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
áá°áá®áá±á¬áá¯ááºáá±á¬ááºáá»ááºááᯠááœááºááœááºáá²áá²áá¯ááºááŒááºážá default port ááá¯á·áá»áááºáááºááŒááºáž - telnet á¡ááœáẠáááºážááẠ23 ááŒá áºáááºá
public void run(String ip)
{
run(ip, 23);
}
áá¯ááºáá±á¬ááºáá»ááºááẠáá®ážáá¯ááºá០á á¬áá¯á¶ážáá»á¬ážááᯠáááºááŒááŒá®áž áááºážááá¯á·ááᯠá¡ááœááºáá±á«ááºáá±á«ááºááá¯á· ááá¯á·áá±ážááẠ- áááºážááẠáá¯á¶ááŸááºá ááá¯ááºážáá¯ááºááœááºááá¯ááºáá² á á¬áá¯á¶ážáá¯ááºááŒá áºáááº-
private void read(Scanner keyboard, OutputStream sout)
{
try {
String input = new String();
while (true) {
input = keyboard.nextLine();
for (char i : (input + " n").toCharArray())
sout.write(i);
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
áá¯ááºáá±á¬ááºáá»ááºááẠsocket ááŸáá±áá¬áá»á¬ážááá¯áááºáá¶áááŸáááŒá®áž áá»ááºááŸá¬ááŒááºáá±á«áºááœááºááŒááááºá
private void write(InputStream sin)
{
try {
int tmp;
while (true){
tmp = sin.read();
System.out.print((char)tmp);
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
áá¯ááºáá±á¬ááºáá»ááºááẠáá±áá¬áááºáá¶ááŸá¯ááŸáá·áº áá¯ááºááœáŸáá·áºááŸá¯ááᯠáááºááá·áºá á±áááºá
public void stop()
{
reader.stop();
writer.stop();
}
}
TelnetServer
á€á¡áááºážááœáẠsocket á០command áá áºáá¯ááᯠáááºáá¶áááŸááááºá áááºážááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠáá±ážááá¯á·ááŒááºážááŸáá·áº command á០áá¯á¶á·ááŒááºáá»ááºááᯠsocket ááá¯á· ááŒááºááá¯á·ááŒááºážá áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááŸáááá«áááºá áááá¯ááááºááẠinput data áá»á¬ážááᯠááááºááᬠáá á áºáá±ážáá²á á¡ááŒá±á¬ááºážááŸá¬ ááááŠážá áœá¬á "boxed telnet" ááœááºááẠáá¬áá¬áá áºááᯠáá±á¬áºáááºáá¯ááºááẠááŒá áºááá¯ááºááŒá®áž áá¯áááá¡áá»ááºááŸá¬á á€áá±á¬ááºážáá«ážááœáẠáá¯á¶ááŒá¯á¶áá±ážááŒá¿áá¬ááᯠáá°á¡á¬ážááŒáá·áº áá»ááºááŸááºáá¬ážáá±á¬ááŒá±á¬áá·áº ááŒá áºáá±á¬ááŒá±á¬áá·áº áááŸááá±á á á¬ááŸááºá áá Ạááá¯á·ááá¯áẠSSL á¡ááŒá±á¬ááºáž á áá¬ážáá¯á¶ážá
áá¯ááºáá±á¬ááºáá»áẠ2 áá¯áᬠááŸáááẠ(áááºážááá¯á·áá²á០áá áºáá¯ááẠá¡áá¯ááºáá»á¬ážááœááºážáááº) ááŸáá·áº áá±áá°áá»á¡á¬ážááŒáá·áº áááºážááẠá¡ááœááºáá±á¬ááºážááœááºáá±á¬ á¡áá±á·á¡áá»áá·áºáá áºáᯠááá¯ááºáá±á¬áºáááºáž á€áá¯ááºáááºážá áááºááœááºáá»ááºáá»á¬ážá¡ááœááºá á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¬ážáá²á·ááẠáá»áœááºá¯ááºá¡ááœáẠááá·áºáá»á±á¬áºáá¯á¶ááááºá
boolean isRunning = true;
public void run(int port) {
(new Thread(()->{ try {
ServerSocket ss = new ServerSocket(port); // ÑПзЎаеЌ ÑÐŸÐºÐµÑ ÑеÑвеÑа О пÑОвÑзÑваеЌ егП к вÑÑеÑÐºÐ°Ð·Ð°ÐœÐœÐŸÐŒÑ Ð¿ÐŸÑÑÑ
System.out.println("Port "+port+" is waiting for connections");
Socket socket = ss.accept();
System.out.println("Connected");
System.out.println();
// ÐеÑеЌ вÑ
ПЎМПй О вÑÑ
ПЎМПй пПÑПкО ÑПкеÑа, ÑепеÑÑ ÐŒÐŸÐ¶ÐµÐŒ пПлÑÑаÑÑ Ðž ПÑÑÑлаÑÑ ÐŽÐ°ÐœÐœÑе клОеМÑÑ.
InputStream sin = socket.getInputStream();
OutputStream sout = socket.getOutputStream();
Map<String, String> env = System.getenv();
String wayToTemp = env.get("TEMP") + "tmp.txt";
for (int i :("Connectednnr".toCharArray()))
sout.write(i);
sout.flush();
String buffer = new String();
while (isRunning) {
int intReader = 0;
while ((char) intReader != 'n') {
intReader = sin.read();
buffer += (char) intReader;
}
final String inputToSubThread = "cmd /c " + buffer.substring(0, buffer.length()-2) + " 2>&1";
new Thread(()-> {
try {
Process p = Runtime.getRuntime().exec(inputToSubThread);
InputStream out = p.getInputStream();
Scanner fromProcess = new Scanner(out);
try {
while (fromProcess.hasNextLine()) {
String temp = fromProcess.nextLine();
System.out.println(temp);
for (char i : temp.toCharArray())
sout.write(i);
sout.write('n');
sout.write('r');
}
}
catch (Exception e) {
String output = "Something gets wrong... Err code: "+ e.getStackTrace();
System.out.println(output);
for (char i : output.toCharArray())
sout.write(i);
sout.write('n');
sout.write('r');
}
p.getErrorStream().close();
p.getOutputStream().close();
p.getInputStream().close();
sout.flush();
}
catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}).start();
System.out.println(buffer);
buffer = "";
}
}
catch(Exception x) {
System.out.println(x.getMessage());
}})).start();
}
áááá¯ááááºááẠáá¬áá¬ááááºáááºážááá¯ááœáá·áºááŒá®áž á¡áááá·áºáá±ážá á¬á¡áá¯á¶áž áá¬ááºáá±á¬ááºááᯠáááœá±á·ááá»ááºáž áááºážááŸáá±áá¬ááá¯áááºáááºá áá¯ááºáááºážá ááºá¡áá áºáá áºáá¯ááá¯á· á¡áááá·áºáá±ážáᬠáá¯ááºáááºážá ááºá០á¡ááœááºááᯠsocket ááá¯á· ááŒááºááœáŸááºážáááºá á¡áá¬á¡á¬ážáá¯á¶ážááẠKalashnikov áá»á±ááŸá¯ááºážáá±ážááá¯ááºáááºáá²á·ááá¯á·ááá¯ážááŸááºážáááºá
ááá¯á·ááŒá±á¬áá·áºá default port áá áºáá¯ááŒáá·áº á€áá¯ááºáá±á¬ááºáá»ááºá¡ááœáẠoverload ááŸááááº-
public void run()
{
run(23);
}
áá±á¬ááºážááŒá®á ááá¯á·ááŒá±á¬áá·áºá áá¬áá¬ááᯠáááºááá·áºá á±ááá·áº áá¯ááºáá±á¬ááºáá»ááºááẠá¡áá±ážá¡ááœá²ááŒá áºááŒá®áž áááºážááẠáááºážáá¡ááŒá±á¡áá±á¡á¬áž áá»áá¯ážáá±á¬ááºáᬠáá¬ááááœááºážáááºááᯠá¡ááŸá±á¬áá·áºá¡ááŸááºáá±ážáááºá
public void stop()
{
System.out.println("Server was stopped");
this.isRunning = false;
}
áá®ááŸá¬ á á¬áá±ážááœá²á¡áááºážááœá± ááá±ážáá«áá°ážá áá°ááá¯á·á á¡á±á¬ááºááŸá¬ ááŸáááẠ- áá°ááá¯á·áá¯ááºááá»áŸá á¡áá»á¬ážáá°ááŸá¬ áááºážáááºážááœá±áá²á· áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠá á áºáá±ážáá¬áá«á á¡áá¬á¡á¬ážáá¯á¶ážááẠgit ááœááºááŸááááºá
á¡áá»ááºážáá»á¯ááºááŒá±á¬ááá»áŸáẠááá±á¡áááºážáááºááœáẠáááºá ááœááºááá¯ážááºá¡áá¯á¶ážá¡áá±á¬ááºáá»á¬ážá áááºáááºááŸá¯á¡ááŒá±áá¶ááá±á¬ááá¬ážáá»á¬ážááᯠáááºáá¬ážáááºááá¯ááºáááºá á¡áá¯áá±á¬á· á¡áá±ážááááºážááœááºááŒá°áá¬áá® áááºáá®áá¯ááºážáááºááá¯ááºáá²á·á¡áá« ááŒá áºáá»ááºáá±áá¬ááᯠáá¬ážáááºáá«ááẠ- ááŸá±á¬áºááᬠáá»á±á¬ááºááœááºááœá¬ážáá«ááŒá®)
áá«ááŒá±á¬áá·áº ááá·áºááºáá»á¬áž
source: www.habr.com