Welcome to Our Website

Linux-nc-Befehl

Updated: 03/06/2020 by Computer Hope

unter Unix-ähnlichen Betriebssystemen, der nc-Befehl ausgeführt, Netcat, ein Dienstprogramm zum senden von raw-Daten über ein Netzwerk.

Dieses Dokument behandelt die Linux-version von nc.

Beschreibung

Netcat ist ein Dienstprogramm, das Daten über Netzwerkverbindungen mit dem TCP-oder UDP-Protokoll liest und schreibt. Es wurde entwickelt, um ein zuverlässiges „Back-End“ – Tool zu sein, das direkt oder von anderen Programmen und Skripten verwendet werden kann., Gleichzeitig ist es ein funktionsreiches Tool zum Debuggen und Erkunden von Netzwerken, da es fast jede Art von Verbindung herstellen kann, die Sie benötigen, und über mehrere interessante integrierte Funktionen verfügt. Häufige Anwendungen sind:

  • Einfache TCP-Proxys
  • Shell-Script-basierte HTTP-Clients und-Server
  • Netzwerk-Daemon-Tests
  • Ein Socks-oder HTTP-ProxyCommand für ssh

Syntax

Optionen

-4 Zwingt nc, IPv4-Adressen zu verwenden ur.
-6 Zwingt nc, nur IPv6-Adressen zu verwenden.,
b Allow broadcast.
– C Senden Sie CRLF als Zeilenende.
– D Debugging am Socket aktivieren.
d versuchen Sie nicht von stdin Lesen.
– h Druckt die nc-Hilfe aus.
– I Länge Gibt die Größe des TCP-Empfangspuffers an.
– i Intervall Gibt ein Verzögerungszeitintervall zwischen gesendeten und empfangenen Textzeilen an. Außerdem verursacht 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 herzustellen. 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ühren Sie keine DNS-oder Service-Lookups für bestimmte Adressen, Hostnamen oder Ports durch.,
-O Länge Gibt die Größe der TCP-sende-Puffer.
– P proxy_username Gibt einen Benutzernamen an, der einem Proxyserver angezeigt werden soll, für den eine Authentifizierung erforderlich ist. Wenn kein Benutzername angegeben ist, wird keine Authentifizierung versucht. Die Proxy-Authentifizierung wird derzeit nur für HTTP CONNECT-Proxys unterstützt.
– p source_port Gibt den Quellport an, den nc verwenden soll, vorbehaltlich von Zugriffsbeschränkungen und Verfügbarkeit.,
– q sekunden nach EOF auf stdin, warten die angegebene anzahl von sekunden und dann beenden. Wenn Sekunden negativ sind, warten Sie ewig.
– r Gibt an, dass Quell-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 Gibt die IP der Schnittstelle an, die zum Senden der Pakete verwendet wird., Gibt für Datagramm-Sockets der UNIX-Domäne die lokale temporäre Socket-Datei an, die erstellt und verwendet werden soll, damit Datagramme empfangen werden können. Es ist ein Fehler, diese Option in Verbindung mit der Option-l zu verwenden.
-T toskeyword Ändern Sie das IPv4-TOS-Wert. toskeyword kann einer von critical, inetcontrol, lowcost, lowdelay, netcontrol, throughput, reliability oder einem der DiffServ-Codepunkte sein: ef, af11 … af43, cs0 … cs7; oder eine Zahl in hex oder dezimal.
– t Bewirkt, dass nc RFC 854 NICHT sendet und NICHT auf RFC 854 DO-und WILL-Anforderungen antwortet., Dies ermöglicht die Verwendung von nc zum Skripten von Telnet-Sitzungen.
– U Gibt an, UNIX-Domain-Sockets zu verwenden.
– u Verwenden Sie UDP anstelle der Standardoption TCP. Verwenden Sie für UNIX-Domain-Sockets einen Datagramm-Socket anstelle eines Stream-Sockets. Wenn ein UNIX-Domänensocket verwendet wird, wird in /tmp ein temporärer empfangender Socket erstellt, es sei denn, das Flag-s wird angegeben.
– V rtable Legen Sie die zu verwendende Routing-Tabelle fest. Der Standardwert ist 0.
– v Haben nc geben mehr ausführliche Ausgabe.,
– w timeout Verbindungen, die nicht hergestellt werden können oder Leerlauf Timeout nach Timeout Sekunden. 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_protocol Fordert an, dass nc das angegebene Protokoll beim Sprechen mit dem Proxyserver verwenden soll. Unterstützte Protokolle sind“ 4 „(SOCKS v. 4),“ 5 „(SOCKS v. 5) und“ connect “ (HTTPS Proxy). Wenn das Protokoll nicht angegeben ist, wird SOCKS Version 5 verwendet.,
– x proxy_address Fordert an, dass nc über einen Proxy unter proxy_address und Port eine Verbindung zum Ziel herstellen soll. Wenn Port nicht angegeben ist, wird der bekannte Port für das Proxy-Protokoll verwendet (1080 für SOCKS, 3128 für HTTPS).
-Z DCCP-Modus.
– z Gibt an, dass nc nur nach abhörenden Dämonen suchen soll, ohne Daten an sie zu senden. Es ist ein Fehler, diese Option in Verbindung mit der Option-l zu verwenden.,

Das Ziel kann eine numerische IP-Adresse oder ein symbolischer Hostname sein (es sei denn, die Option-n ist angegeben). Im Allgemeinen muss ein Ziel angegeben werden, es sei denn, die Option-l ist angegeben (in diesem Fall wird der lokale Host verwendet). Für UNIX-Domain-Sockets ist ein Ziel erforderlich und der Socket-Pfad, mit dem eine Verbindung hergestellt werden soll (oder der angehört wird, wenn die Option-l angegeben ist).

Port kann eine einzelne Ganzzahl oder ein Bereich von Ports sein. Bereiche haben die Form nn-mm. Im Allgemeinen muss ein Zielport angegeben werden, es sei denn, die Option-U ist angegeben.,

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 Computer und dem Port her, die abgehört werden:

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 die Verbindung 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.

Im modernen Netcat gibt es keine Option-c oder-e, aber Sie können immer noch einen Befehl ausführen, nachdem die Verbindung hergestellt wurde, indem Sie Dateideskriptoren umleiten. Seien Sie hier vorsichtig, da das Öffnen eines Ports und das Ausführen eines beliebigen Befehls auf Ihrer Site durch eine Verbindung GEFÄHRLICH ist., Wenn Sie dies wirklich tun müssen, finden Sie hier ein Beispiel:

Auf der Serverseite:

rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

Auf der Clientseite:

cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

(Shell-Eingabeaufforderung von host.example.com)

Auf diese Weise erstellen Sie einen Fifo unter / tmp /f und lassen nc an Port 1234 der Adresse 127.0.0.1 auf der Serverseite abhören, wenn ein ‚client‘ erfolgreich eine Verbindung zu diesem Port herstellt,/bin / sh wird auf der Serverseite ausgeführt und die Shell-Eingabeaufforderung wird auf der Clientseite angegeben.

Wenn die Verbindung beendet wird, wird nc ebenfalls beendet., Verwenden Sie-k, wenn Sie möchten, dass es weiter lauscht, aber wenn der Befehl beendet wird, wird diese Option nicht neu gestartet oder weiter ausgeführt. Vergessen Sie auch nicht, den Dateideskriptor zu entfernen, sobald Sie ihn nicht mehr benötigen:

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, werden an das andere Ende ausgegeben, 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 > filename.out

Stellen Sie mit einem zweiten Computer eine Verbindung zum abhörenden NC-Prozess her und geben Sie ihm die zu übertragende Datei:

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 Fehlerbehebung helfen, wenn möglicherweise überprüft werden muss, welche Daten ein Server als Antwort auf vom Client ausgegebene Befehle sendet. Um beispielsweise die Homepage einer Website abzurufen:

printf "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 gefiltert werden.

Kompliziertere Beispiele können erstellt werden, wenn der Benutzer das vom Server erforderliche Anforderungsformat kennt., Als weiteres Beispiel kann eine E-Mail an einen SMTP-Server gesendet werden mit:

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, offene Ports zu melden, anstatt eine Verbindung zu initiieren. Normalerweise ist es nützlich, die ausführliche Ausgabe in stderr zu aktivieren, indem Sie diese Option in Verbindung mit der Option-v verwenden.

Zum Beispiel:

nc -zv host.example.com 20-30
Connection to host.example.com 22 port succeeded!Connection to host.example.com 25 port succeeded!

Der Portbereich wurde angegeben, um die Suche auf die Ports 20 – 30 zu beschränken, und wird in zunehmender Reihenfolge gescannt.,

Sie können auch eine Liste der zu scannenden Ports angeben, z. B.:

nc -zv host.example.com 80 20 22

Die Ports werden in der angegebenen Reihenfolge gescannt.

Alternativ kann es nützlich sein zu wissen, welche Serversoftware ausgeführt wird und welche Versionen. Diese Informationen sind häufig in den Begrüßungsbannern enthalten. Um diese abzurufen, muss zuerst eine Verbindung hergestellt und dann die Verbindung unterbrochen werden, wenn das Banner abgerufen wurde., Dies kann erreicht werden, indem eine kleine Zeitüberschreitung mit dem Flag-w angegeben wird oder möglicherweise ein Befehl „QUIT“ an den Server ausgegeben wird:

echo "QUIT" | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2 Protocol mismatch. 220 host.example.com IMS SMTP Receiver Version 0.84 Ready

Beispiele

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

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

nc -u host.example.com 53

Öffnet eine UDP-Verbindung zu Port 53 von host.example.com.

nc -s 10.1.2.3 host.example.com 42

Öffnet eine TCP-Verbindung zu Port 42 von host.example.com verwendung von 10.1.2.3 als IP für das lokale Ende der Verbindung.,

nc -lU /var/tmp/dsocket

Erstellt und überwacht einen UNIX-domain-stream-socket.

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

Verbindet sich mit Port 42 von host.example.com über einen HTTP-Proxy unter 10.2.3.4, Port 8080. Dieses Beispiel könnte auch von ssh verwendet werden.

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

Das gleiche wie im obigen Beispiel, aber dieses Mal die Proxy-Authentifizierung mit dem Benutzernamen“ ruser “ aktivieren, wenn der Proxy dies erfordert.

ifconfig-Anzeigen oder Ändern der Konfiguration von Netzwerkschnittstellen.

Schreibe einen Kommentar

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