Site Overlay

nc(1) – Linux man-Seite

Name

nc – beliebige TCP-und UDP-verbindungen und lauscht

Synopsis

nc ] ]

Beschreibung

Der nc (oder netcat) utility verwendet wird gerade über alles unter der Sonne mit TCP oder UDP. Es kann TCP-Verbindungen öffnen,UDP-Pakete senden, beliebige TCP-und UDP-Ports abhören, Port-Scans durchführen und sowohl IPv4 als auch IPv6 verarbeiten. Im Gegensatz zu telnet(1), nc-Skripte schön, und trennt errormessages auf Standardfehler, anstatt sie an die Standardausgabe zu senden, wie telnet (1) mit einigen tut.,

Häufige Anwendungen sind:

 • simple TCP proxies

• Shell-Skript-basierte HTTP-Clients und Server
• Netzwerk-Daemon-Tests
• ein SOCKS-oder HTTP-ProxyCommand für ssh(1)
• und vieles mehr

Die Optionen sind wie folgt:

-4′ Zwingt nc, nur IPv4-Adressen zu verwenden.

-6 ‚ Zwingt nc, nur IPv6-Adressen zu verwenden.

– D ‚ Debugging auf dem Socket aktivieren.

-d‘ versuchen Sie nicht von stdin Lesen.

-h‘ Druckt nc helfen.

– i Intervall
Gibt ein Verzögerungszeitintervall zwischen Zeilen gesendeten und empfangenen Text., Verursacht auch eine Verzögerungszeit zwischen Verbindungen zu mehreren Ports.

– k ‚ Zwingt nc, nach Abschluss der aktuellen Verbindung auf eine andere Verbindung zu warten. Es ist ein Fehler, diese Option ohne die Option-l zu verwenden.

– l ‚ Wird verwendet, um anzugeben, dass nc auf eine eingehende Verbindung warten soll, anstatt eine Verbindung zu einem Remote-Host zu initiieren. Es ist ein Fehler, diese Option in Verbindung mit den Optionen-p,- s oder-z zu verwenden. Zusätzlich werden alle mit der Option-w angegebenen Timeouts ignoriert.

– n ‚ Führt keine DNS-oder Dienstsuche für bestimmte Adressen, Hostnamen oder Ports durch.,

– p source_port
Gibt den Quellport an, den nc verwenden soll, vorbehaltlich der Zugriffsbeschränkungen und Verfügbarkeit. Es ist ein Fehler, diese Option in Verbindung mit der Option-l zu verwenden.

– r ‚ Gibt an, dass Quell-und/oder Zielports zufällig statt sequentiell in einem Bereich oder in der Reihenfolge ausgewählt werden sollen, in der das System sie zuweist.

-S‘ Ermöglicht die RFC 2385 TCP-MD5-Signatur-option.

– s source_ip_address
Gibt die IP der Schnittstelle an, die zum Senden der Pakete verwendet wird. Es ist ein Fehler, diese Option in Verbindung mit der Option-l zu verwenden.,

– C ‚Send CRLF as line-ending

-t‘ Bewirkt, dass nc RFC 854 NICHT sendet und NICHT auf RFC 854 DO-und WILL-Anforderungen antwortet. Dies macht es möglich, nc zu scripttelnet Sitzungen zu verwenden.

– U ‚ Gibt an, Unix-Domain-Sockets zu verwenden.

– u ‚ Verwenden Sie UDP anstelle der Standardoption TCP.

– v ‚ Müssen ausführlichere Ausgabe geben.

– w timeout
Wenn eine Verbindung und stdin sind im Leerlauf für mehr als Timeout Sekunden, dann ist die Verbindung still geschlossen. Das Flag-w hat keinen Einfluss auf die Option-l, dh nc wartet für immer auf eine Verbindung mit oder ohne das Flag-w., Der Standardwert ist kein Timeout.

– x proxy_address
Fordert an, dass nc über einen Proxy unter proxy_address und Port eine Verbindung zum Hostnamen herstellen soll. Wenn Port nicht angegeben ist, diewell-bekannter Port für das Proxy-Protokoll wird verwendet (1080 für SOCKS, 3128 für HTTPS).

– z ‚ Gibt an, dass nc nur nach abhörenden Daemons suchen soll, ohne Daten an sie zu senden. Es ist ein Fehler, diese Option inkonjunktion mit der Option-l zu verwenden.

Hostname kann eine numerische IP-Adresse oder ein symbolischer Hostname sein (es sei denn, die Option-n ist angegeben)., Im Allgemeinen muss ein Hostname angegeben werden, es sei denn, die Option-l wird angegeben (in diesem Fall wird der lokale Host verwendet).

Port kann einzelne ganze Zahlen oder Bereiche sein. Bereiche haben die Form nn-mm. Im Allgemeinen muss ein Zielport angegeben werden, es sei denn, die-Uoption ist angegeben (in diesem Fall muss ein Socket angegeben werden).

CLIENT / SERVER-MODELL

Es ist ganz einfach, ein sehr einfaches Client/Server-Modell mit nc zu erstellen. Starten Sie auf einer Konsole die NC-Überwachung eines bestimmten Ports für eine Verbindung.Beispiel:

$ nc-l 1234

nc wartet nun auf Port 1234 auf eine Verbindung., Stellen Sie auf einer zweiten Konsole (oder einem zweiten Computer) eine Verbindung zu dem zu hörenden Computer und Port her:

$ nc 127.0.0.1 1234

Es sollte jetzt eine Verbindung zwischen den Ports bestehen. Alles, was an der zweiten Konsole eingegeben wird, wird mit der ersten verkettet und umgekehrt. Nachdem theconnection eingerichtet wurde, ist es nc egal, welche Seite als „Server“ und welche Seite als „Client“ verwendet wird. Die Verbindung kann mit einem EOF (‚^D‘) beendet werden.

Datenübertragung

Das Beispiel im vorherigen Abschnitt kann erweitert werden, um ein grundlegendes Datenübertragungsmodell zu erstellen., Alle Informationen, die an einem Ende der Verbindung eingegeben werden, sindausgabe an das andere Ende, und Eingabe und Ausgabe können leicht erfasst werden, um die Dateiübertragung zu emulieren.

Verwenden Sie zunächst nc, um einen bestimmten Port abzuhören, wobei die Ausgabe in einer Datei erfasst wird:

$ nc-l 1234 > Dateiname.out

Mit einer zweiten Maschine, eine Verbindung zum Hören nc-Prozess, Fütterung es die Datei, die übertragen werden soll:

$ nc host.example.com 1234 < filename.in

Nachdem die Datei übertragen wurde, wird die Verbindung automatisch geschlossen.,

Mit Servern sprechen

Manchmal ist es nützlich, mit Servern „von Hand“ und nicht über eine Benutzeroberfläche zu sprechen. Es kann bei der Fehlersuche helfen, wenn es notwendig sein könnte zu überprüfen, welche Daten ein Server als Antwort auf Befehle sendet, die vom Client ausgegeben werden. Um beispielsweise die Startseite einer Website abzurufen:

$ echo -n "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

Beachten Sie, dass dadurch auch die vom Webserver gesendeten Header angezeigt werden. Sie können bei Bedarf mit einem Werkzeug wie sed(1) gefiltert werden.

Kompliziertere Beispiele können erstellt werden, wenn der Benutzer das vom Server benötigte Anforderungsformat kennt., Als ein anderes Beispiel kann eine E-Mail an einen SMTP-Server gesendet werdenmit:

Port Scanning

Es kann nützlich sein zu wissen, welche Ports geöffnet sind und Dienste auf einem Zielcomputer ausgeführt werden. Das Flag-z kann verwendet werden, um nc anzuweisen, Openports zu melden, anstatt eine Verbindung zu initiieren. Beispiel:

Der Portbereich wurde angegeben, um die Suche auf die Ports 20 – 30 zu beschränken.

Alternativ kann es nützlich sein zu wissen, welche Serversoftware ausgeführt wird und welche Versionen. Diese Informationen sind oft in den Greetingbannern enthalten., Um diese abzurufen, muss zuerst eine Verbindung hergestellt und dann die Verbindung unterbrochen werden, wenn das Banner abgerufen wurde. Dies kann durch Angabe einer kleinen Zeitüberschreitung mit dem Flag-w oder möglicherweise durch Ausgabe eines Befehls „QUIT“ an den Server vervollständigt werden:

Beispiele

Öffnen Sie eine TCP-Verbindung zu Port 42 von host.example.com, mit port 31337 als quelle port, mit einem timeout von 5 sekunden:

$ nc-p 31337-w 5 host.example.com 42

Öffnen Sie eine UDP-Verbindung zu Port 53 von host.example.com:

$ nc-u host.example.com 53

Öffnen Sie eine TCP-Verbindung zu Port 42 des Hosts.,example.com verwendung von 10.1.2.3 als IP für das lokale Ende der Verbindung:

$ nc-s 10.1.2.3 host.example.com 42

Erstellen und Abhören eines Unix-Domänensockets:

$ nc-lU / var/tmp / dsocket

Verbinden mit Port 42 von host.example.com über einen HTTP-Proxy unter 10.2.3.4, Port 8080. Dieses Beispiel kann auch dazu verwendet werden, die von ssh(1), siehe den ProxyCommanddirective in ssh_config(5) für weitere Informationen.

$ nc -x10.2.3.4:8080 -Xconnect host.example.com 42

Siehe Auch

Katze(1), ssh(1)

Autoren

die Ursprüngliche Implementierung von *Hobbit* <[email protected],org>.
neu geschrieben mit IPv6-Unterstützung von Eric Jackson <[email protected]>.

Vorbehalte

UDP-Port-Scans werden immer erfolgreich sein (dh den Port als offen melden), wodurch die Kombination von Flags mit-uz relativ unbrauchbar wird.

BSD 22. August 2006 BSD

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.