Zum Inhalt springen

Linux-Praxisbuch/ netcat

Aus Wikibooks

Der Netcat Befehl netcat oder nc

Allgemeines

[Bearbeiten]

Das 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

[Bearbeiten]

Sie 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

[Bearbeiten]

Voraussetzungen: 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

[Bearbeiten]

Komplette Partition übertragen 1

[Bearbeiten]

Der 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

[Bearbeiten]

Am 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

[Bearbeiten]
 sent 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

[Bearbeiten]

telnet, ssh, socat, sendfile, cryptcat

[Bearbeiten]