Artikel
0 Kommentare

Netcat – das Schweizer Taschenmesser unter den Netzwerk-Tools

Es gibt sehr viele Blogs die schon über Netcat berichtet oder Tutorials geschrieben haben. Ich möchte auch einfach noch mal kurz das kleine aber feine Tool vorstellen, aber hauptsächlich ein paar praxisnahe Einsatzszenarien beschreiben.

Netcat ist ein Tool um über das Netzwerk von Dateiströmen zu lesen oder auf welche zu schreiben. Die Ein-/Ausgabe erfolgt dabei über Standard-Out- und Input. Ich möchte euch nicht länger mit dem allgemeinen Teil langweilen, sondern direkt einsteigen (ich verweise hier gerne auf den Wikipedia-Artikel). Netcat wird über den Befehl netcat oder die Abkürzung nc gestartet.

Generell gibt es immer einen Server und einen Client. Den Server startet man bspw. über folgenden Befehl:

netcat -l -p 9000

Parameter -l bedeutet Listen (Netcat lauscht also auf eingehende Verbindungen), -p definiert den Port. Den Client, also den Partner startet man über:

netcat "IP des Servers" 9000

Wenn ihr diesen Befehl in zwei verschiedenen Shells ausführt habt ihr einen Chat und das ohne Zusatzsoftware. Nach Eingabe einer Nachricht einfach mit Enter bestätigen, der Text erscheint dann in der jeweils anderen Shell.
Zweites Beispiel:
Da Netcat auf dem TCP und UDP Protokoll arbeiten kann lässt sich ganz einfach ein „Mini-Webserver“ ausführen, hier kann man ganz einfach eine Textdatei im Browser deiner Wahl betrachten:

( echo "HTTP/1.0 200 Ok"; echo; cat ; ) | netcat  -l -p 9000 -c

Mit dem Browser einfach auf die IP:Port Kombination surfen und sich die Datei anzeigen lassen. Über eine TAR und GZIP Kombination kann man so über einen Browser ganze Verzeichnisse in einer Datei downloaden lassen. Zu der TAR und GZIP Kombination kommen wir im 3. Beispiel:
Drittes Beispiel:
Ich erstelle gerne Backups die gezippt und gleichzeitig noch verschlüsselt, wenn diese noch über das Netzwerk gebackup’d werden können, umso besser. Folgendes Beispiel zeigt die Erstellung einer tar.gz eines Verzeichnisses und der anschließenden Verschlüsselung mit GPG und Übertragung auf einen anderen Rechner:
Empfänger:

netcat -l -p 9000 > backup.tar.gz.gpg

Sender:

tar czpP /etc | gpg --compress-level 0 -e -r "GPG Empfänger-ID" | netcat -n "IP des Servers" 9000

Dann habt ihr euer /etc gepackt und mit GPG asynchron verschlüsselt über das Netzwerk auf den Server übertragen. Bei mir waren es statt 17 MB nur 2 MB (gepackt) die über das Netzwerk übertragen wurden, es macht also schon einiges aus. Entpacken könnt ihr die Datei über folgenden Befehl:

gpg -d backup.tar.gz.gpg | tar zxvf - 

Viertes und letztes Beispiel:
Partitionsimage gezippt über das Netzwerk übertragen:
Server:

netcat -l -p 9000 > image.img.gz

Client:

dd if=/dev/sdX | gzip -9 | netcat "IP des Servers" 9000

Mehr Beispiele möchte ich jetzt gar nicht nennen, über Pipes und Ein-/Ausgabeumleitung kann man sich wahre Super-Taschenmesser ala Super-Wenger Taschenmesser zusammenbauen, die echt nützliche Aufgaben ohne Extratools übernehmen. Man sollte aber dennoch beachten, welches Potenzial in dem Tool steckt, positiv wie negativ. Über die Quellen/Links könnt ihr noch weitere nützliche Beispiele sammeln.

Quellen/Links:

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.