Linux-Praxisbuch/ netcat
Der Netcat Befehl netcat oder nc
Allgemeines
BearbeitenDas Kommando nc oder netcat ist ein mächtiges Netzwerkzeug zur Übertragung von Dateien unter dem TCP/IP Protokoll. Es wird in zwei Modi verwendet: im Client- oder Server-Modus. Netcat gibt es auch unter Windows.
Beispiel mit einem Rechner
BearbeitenSie starten netcat zum Üben auf einem Rechner mit localhost. Wie geht das ? Sie öffnen eine Konsole und stellen sie auf Empfang:
netcat -vv -l -p 1111 > empf.txt
Alles was über netcat auf die Konsole kommt wird in der Datei empf.txt abgespeichert.
Erklärung der Parameter:
- -vv gibt Übertragungsmeldungen aus.
- -l stellt netcat auf listen (engl. für hören)
- -p 1111 ist eine beliebige (offene) Portadresse
- > empf.txt leitet die Netcatausgabe in die Datei empf.txt um.
Jetzt öffnen Sie eine zweite Konsole und schicken eine Datei zur Konsole eins.
cat test| netcat -vv 127.0.0.1 1111 -w 10
Erklärung der Parameter:
- cat test Zeigt die Datei test an
- | leitet die Ausgabe vom Monitor ( der Standardausgabe) zu netcat um
- netcat -vv startet netcat und gibt Übertragungsmeldungen aus.
- 127.0.0.1 ist die Adresse von localhost, der eigene Rechner also.
- Statt 127.0.0.1 können Sie auch localhost eingeben.
- 1111 ist der Port über den alles geschickt wird . Er muß mit dem Empfangsport übereinstimmen
- -w 10 beendet netcat 10 sek nach Dateiende.
Falls sie keine Datei test in dem gerade offenen Verzeichnis haben , dann erzeugen Sie vorher eine:
touch test
Schreiben Sie irgend etwas in test hinein und schließen Sie die Datei mit Return Strg + C ab.
Schauen Sie nach, ob test in empf.txt empfangen wurde und vergleichen Sie beide Dateien.
cat test cat empf.txt oder diff test empf.txt
Einfaches Beispiel mit zweitem Rechner
BearbeitenVoraussetzungen: 2 Rechner haben eine Netzwerkverbindung. Die Ethernetkarten und ping hat in beiden Richtungen funktioniert.
Stellen Sie den Rechner Eins auf Empfang und schreiben alles was über netcat hereinkommt in die Datei empf.txt:
netcat -vv -l -p 1234 > empf.txt
Sie erhalten folgende Meldung:
- listening on [any] 1234 ...
Schalten Sie netcat auf ihrem Rechner 2 an und senden Sie die Datei test.
cat test| netcat -vv rechnereins 1234 -w 10
1234 ist dabei die Portadresse. Natürlich muß die Datei test auf dem Rechner 2 überhaupt vorhanden sein.
Mit dem Befehl -w 10 hört der sendende Rechner nach Dateiende mit dem senden auf und schaltet netcat wieder ab.
Sie können netcat auch jederzeit mit der Tastatur unterbrechen.
Strg + C
Und überprüfen Sie auf dem Rechner 2 mit
ls -l empf.txt
ob die Datei angekommen ist.
cat empf.txt
Zeigt die übertragene Datei an.
Optionen
Bearbeiten- -g gateway source-routing hop point[s], up to 8
- -G num source-routing pointer: 4, 8, 12, ...
- -h Hilfetext
- -i secs Verzögerung in Sekunden für gesendete Zeilen oder gescannte Ports
- -l Auf hören (listen) für hereinkommende Verbindungsanfragen.
- -n Nur IP Nummern, keine DNS Namen
- -o file hex dump der gesamten Übertragung
- -p port lokale Port Nummer
- -r Ports randomizieren
- -s addr lokale Quelladdresse
- -t auf TELNET antworten
- -u UDP modus
- -v verbose = alles anzeigen [mit 2 vv noch mehr Infos]
- -w secs timeout for connects and final net reads
- -z zero-I/O mode [used for scanning]
Die Port Nummern können eine Zahl oder ein Bereich sein: lo-hi [inclusive]
Weitere Beispiele
BearbeitenKomplette Partition übertragen 1
BearbeitenDer komplette Inhalt der Partition hda2 wird mittels netcat an ein anderes System auf Port 8000 gesendet.
dd if=/dev/hda2 | netcat 10.0.0.1 8000
Auf dem Zielsystem 10.0.0.1 sollte man zum Abspeichern des Datenstroms folgenden Befehl verwenden:
netcat -l -p 8000 | dd of=/unterordner/image.hda2
Komplette Partition übertragen 2
BearbeitenAm Server-Rechner mit dem Original gibt man ein:
netcat -w5 -l -p 12345 < /dev/hda
Am Client wird die Kopie gespeichert
netcat server.adresse 12345 > /dev/hda
Fehlermeldungen des netcat-Befehls
Bearbeitensent 0, rcvd 0
Es wurde nichts übertragen oder empfangen.
bash: abc.htm: Datei oder Verzeichnis nicht gefunden
Die Datei abc.htm, die man übertragen wollte, existiert nicht in dem Verzeichnis.
netcat -vv l -p 1234 < test.htm
Ausgabe:
l: forward host lookup failed: Unknown host
Es fehlt der Bindestrich vor dem l.
Siehe auch
Bearbeitentelnet, ssh, socat, sendfile, cryptcat
Links
Bearbeiten- http://www.pro-linux.de/news/2004/6450.html
- http://www.jfranken.de/homepages/johannes/vortraege/netcat.de.html
- http://www.uni-kassel.de/hrz/server/aix4-PD/netcat-1.10/doc/README
- Ausführliche Beschreibung in Englisch
- http://www.remoteshell-security.com/netcat.php
- Ausführliche Beschreibung in Deutsch
- http://www.vulnwatch.org/netcat/
- Download des Linuxprogrammes
- http://www.atstake.com/research/tools/nc110.tgz
- Download des Linuxprogrammes
- http://farm9.com/content/Free_Tools/Cryptcat
- Verschlüsselnde Version von netcat Cryptcat
- http://securityresponse.symantec.com/avcenter/venc/data/hacktool.netcat.html
- Netcat unter Windows
- http://www.computec.ch/download.php?view.467
- Netcat unter Windows