IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Java - Verdammt schneller und einfacher Portscanner in Java



Verdammt schneller und einfacher Portscanner in Java

Oft braucht man zur Analyse der Sicherheit eines Rechners einen Portscanner. Hierfür gibt es im Internet viele Angebote, die meisten sind allerdings völlig überladen und langsam. Dabei ist es nicht schwierig sich selbst einen zu Programmieren.


Autor: Nicolas Mériaux (NimeoB)
Datum: 26-02-2004, 11:26:36
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 15127x
Rating: 7.33 (6x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Verdammt schneller einfacher Portscanner in Java

Oft braucht man zur Analyse der Sicherheit eines Rechners einen Portscanner. Hierfür gibt es im Internet viele Angebote, die meisten sind allerdings völlig überladen und langsam. Dabei ist es nicht schwierig sich selbst einen zu Programmieren.

Klasse „MC“:
Die Klasse „MC“ ist die Hauptklasse. Als Zieladresse wird die Adresse verwendet die dem Programm mitgegeben wird. Dies kann sowohl eine IP oder eine URL sein. Die Auflösung der URL übernimmt später die „java.net“-Package. Ich habe dieses Programm mit Threads programmiert um eine höhere Geschwindigkeit zu erzielen. Ansonsten müsste man bei jedem Port zu dem die Connection nicht hinhaut auf einen Timeout warten bevor man weitermacht. Dieser Timeout ist zwar nicht sehr lang, aber wenn man 20000 Ports testet lange genug. Ich lasse den Thread dann kurz schlafen, damit verhindere ich 100% CPU-Auslastung bei nur unmerkbar geringeren Geschwindigkeit. Bei langsamen CPUs kann man auch auf 2 oder 3 erhöhen (hierbei handelt es sich übrigens um Millisekunden).
 
package portscanner;
 
public class MC {
public static void main(String[] args) {
String host = args[0];
for (int i = 0; i < 20000; i++) {
Connthread curr = new Connthread(host, i);
Thread th = new Thread(curr);
th.start();
try {
th.sleep(1);
}
catch (InterruptedException ex) {
}
}
}
}


Klasse „Connthread“:
In dieser Klasse brauchen wir 2 Imports. Der erste („java.io“) stellt Methoden und Klassen zur Bildschirmausgabe und die Klasse „java.net“ stellt Verbindungsmethoden und Klassen zur Verfügung. Die Klasse selber implementiert das Interface „Runnable“ um später einen Thread daraus zu machen (würde auch mit „extends Thread“ funktionieren(Geschmacksache)). Die Klasse bekommt den Host und den Port übergeben. Dann wird ein Clientsocket mit diesen Daten erzeugt. Bei dieser Erzeugung wird auch schon eine Verbindung hergestellt. Wenn diese funktioniert wird am stderr eine Nachricht ausgegeben (ich hab den stderr gewählt(Fehler werden bei mir übrigens am stdout ausgegeben)). Nach der Ausgabe wird der Socket geschlossen und der Thread beendet. Im Falle einer Nichtverbindung passiert nichts, denn Ausgaben bei geschlossenen Ports sind eher lähmend. Wer will kann allerdings eine Ausgabe machen.

package portscanner;

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


public class Connthread
implements Runnable {
int i;
String host;
public Connthread(String host, int i) {
this.i = i;
this.host = host;
}
 
public void run() {
try {
Socket target = new Socket(host, i);
System.err.println("Connected to " + host + " on Port " + i);
target.close();
}
catch (UnknownHostException ex) {
System.out.println("Unkown Host " + host);
}
catch (IOException ex) {
}
}
}


Wissgier
Rookie
Beitrag vom:
06-02-2008, 21:55:45

zur geschwindigkeit

schneller läuft jedes programm wenn man wenig klassen importiert... also sollte man
niemals das sternchen benutzen
sondern in deinem fall

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

aber sonst nettes gerät ;D

mfg

-----------------------------------------------------


dreamer
Expert
Beitrag vom:
10-11-2007, 10:59:31

Etwas mehr Grundlagen zum Begriff "Ports" hätten diesen Artikel perfektioniert. Ansonsten sehr gut.

-----------------------------------------------------


paedubucher
Professonial
Beitrag vom:
15-01-2006, 11:08:25

Sehr praktisch für die Schule

Hurra, nun kann ich in der Schule endlich schauen, was alles "offen" ist :-D
Da wird sich sicherlich die eine oder andere Lücke finden lassen!

Danke!

-----------------------------------------------------


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04503
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16551
Queueeinträge:06238
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1137
Comments: 0