Ein vielseitiges TCP/UDP-Netzwerktool
Netcrab ist ein Befehlszeilen-Netzwerktool, das viele Dinge tun kann. Es ist eine Hommage an Netcat und kann viele der Dinge, die es kann. Ein kurzer Überblick über die Möglichkeiten:
Für eine vollständige Nutzung führen Sie netcrab --help
aus.
netcrab HOST:PORT
Dadurch wird eine Verbindung zum angegebenen TCP-Server hergestellt. Jetzt wird Ihre Standardausgabe an den Server gesendet und die Standardausgabe ausgedruckt.
Das IPv6-Format für den Hostnamen sollte umgebende eckige Klammern verwenden, zum Beispiel ist localhost [::1]
.
netcrab -L ADDR:PORT
netcrab -l ADDR:PORT
Sie können als TCP-Server einen oder mehrere beliebige Ports abhören. Mit -l
wird das Programm beendet, nachdem die erste eingehende Verbindung getrennt wurde. Verwenden Sie -L
, um „stärker zuzuhören“: Hören Sie nach der Trennung weiter zu.
Die ADDR:PORT
-Syntax unterstützt einige spezielle Varianten:
localhost:5000
:5000
*:5000
Der TCP-Server lässt standardmäßig nur zu, dass jeweils eine einzelne eingehende Verbindung pro Abhöradresse aktiv ist, aber das Flag -m max_inbound_clients
lässt mehr als eine Verbindung zu.
Wie im Client-Modus wird stdin an alle verbundenen Sockets gesendet und eingehende Daten von allen Sockets werden an stdout gesendet. Dies kann mithilfe der folgenden Eingabe- und Ausgabemodusargumente geändert werden.
Das Argument -z
bewirkt, dass der Socket die Verbindung sofort trennt, ohne dass das Senden von Daten möglich ist. Nützlich, um die Konnektivität einfach zu testen.
netcrab -u -L ADDR:PORT
netcrab -u HOST:PORT
UDP ist insofern seltsam, als man sich damit nicht wirklich „verbindet“. Sie binden sich an einen lokalen Port und senden/empfangen dann Datagramme an/von Remote-Peers. Der Listening-Modus und der Verbindungsmodus für UDP funktionieren genau gleich, mit der Ausnahme, dass im Verbindungsmodus der erste Peer, an den stdin gesendet werden soll, zu Beginn bekannt ist und im Listening-Modus der stdin-Verkehr nirgendwohin gesendet werden kann, bis der Listener mindestens einen Peer empfängt ein Datagramm von einem Peer.
Für -L
wird die gleiche ADDR:PORT
Syntax wie oben für TCP unterstützt.
Die Datagrammgröße beträgt standardmäßig 1 Byte, kann aber durch das Argument --ss
gesteuert werden.
netcrab -L ADDR1:PORT1 -L ADDR2:PORT2
netcrab -u -L ADDR1:PORT1 -L ADDR2:PORT2
Netcrab unterstützt das gleichzeitige Abhören mehrerer lokaler Adressen und Ports. Es werden Verbindungen akzeptiert, die auf jedem von ihnen eingehen. Dies unterstützt TCP und UDP.
netcrab -u --mc HOST:PORT
Netcrab unterstützt die Verknüpfung von UDP-Sockets mit Multicast-Gruppen durch Hinzufügen des Arguments --mc
. Es gibt auch Kontrollen für die TTL für Multicast-Pakete ( --ttl
) und ob zurückgeschleifte Multicast-Pakete empfangen werden sollen, seit das Programm der Gruppe beigetreten ist ( --mc_no_loop
).
netcrab -u -b HOST:PORT
Netcrab unterstützt das Senden von UDP-Broadcast-Datagrammen.
netcrab -i MODE
Der Eingabemodus kann gesteuert werden. Standardmäßig erfolgt die Eingabe von stdin. Es akzeptiert die folgenden anderen Modi:
none
: Es ist keine Eingabe möglich. Der einzige Datenverkehr, der verarbeitet wird, kommt von Remote-Peers.stdin-nochar
: Funktioniert genauso wie stdin, aktiviert jedoch nicht den „Zeichenmodus“. Dies funktioniert bei interaktiven Anwendungen schlechter.echo
: Der gesamte empfangene Datenverkehr wird an den Absender zurückgesendet.rand
: Es werden Zufallsdaten generiert. Die zufälligen Datengrößen können mit --rsizemin
und --rsizemax
gesteuert werden, und die Art der Daten kann mit --rvals
gesteuert werden.fixed
: Nur für Leistungstests wirklich nützlich. Dieselbe Nachricht fester Größe mit festen Daten wird unbegrenzt gesendet. Sie können die Größe mit --ss
und die Art der darin enthaltenen Zufallsdaten mit --rvals
steuernpfqoscli
: Messen Sie die Latenz anhand von PlayFab Quality of Service-Beacons.pfqossrv
: Fungiert als PlayFab Quality of Service-Beacon-Server, auf den Clients die Latenz messen können. Wenn Sie einen der stdin-Modi als Eingabe verwenden, können Sie --exit-after-input
angeben, um das Programm zu beenden, nachdem der Eingabestream das Ende der Datei erreicht hat.
netcrab -o MODE
Standardmäßig erfolgt die Ausgabe an stdout, es ist jedoch oft sinnvoll, sie in -o none
zu ändern, um die gesamte Ausgabe zu überspringen. Dies ist besonders hilfreich, wenn viel Verkehr passiert, da es die Ausgabe verlangsamen kann.
Der Standardmodus von Netcrab ist die Verwendung von stdin und stdout, sodass Sie Eingaben aus einer Datei umleiten und Ausgaben an eine Datei senden (oder zwischen Programmen weiterleiten) können.
netcrab HOST:PORT < file
echo message | netcrab HOST:PORT
netcrab -6
netcrab -4
Sie können die Verwendung nur von IPv6- oder IPv4-Adressfamilien einschränken. Dies macht einen größeren Unterschied, wenn Sie eine Verbindung zu Hostnamen herstellen, die die DNS-Auflösung durchlaufen, oder wenn Sie abhören, ohne eine explizite Quelladresse anzugeben.
netcrab -s ADDR:PORT
Beim Herstellen einer ausgehenden TCP-Verbindung oder beim Senden von UDP-Datagrammen bindet Netcrab standardmäßig an die Wildcard-IPv4- und IPv6-Adressen (0.0.0.0:0 und [::]:0). Sie können stattdessen -s
übergeben, um explizit an eine Adresse zu binden. Dies unterstützt alle im Abschnitt „TCP-Server“ beschriebenen ADDR:PORT
Varianten.
netcrab HOST1:PORT1 HOST2:PORT2
Netcrab ermöglicht die gleichzeitige Verbindung mit mehr als einem Remote-Peer. Ähnlich wie beim Abhören mehrerer gleichzeitiger Verbindungen wird der Datenverkehr vom lokalen Computer an alle verbundenen Peers gesendet, eingehend oder ausgehend.
netcrab -L ADDR:PORT HOST:PORT
Netcrab unterstützt sowohl das Abhören eingehender Verbindungen als auch das gleichzeitige Herstellen ausgehender Verbindungen. Dies könnte für die Weiterleitung des Datenverkehrs von einer lokalen Adresse zu einer anderen nützlich sein, da Sie sowohl die Adresse, die überwacht werden soll, als auch die Quelladresse, die für die ausgehende Verbindung verwendet werden soll, unabhängig voneinander angeben können.
netcrab HOST:PORTxNUM
Manchmal ist es nützlich, mehrere Male eine Verbindung mit demselben Endpunkt herstellen zu können, insbesondere bei Kanalszenarien. Um beispielsweise 12 Mal eine Verbindung zu einem Hostnamen herzustellen, können Sie netcrab localhost:5000x12
ausführen. Es wird versucht, 12 gleichzeitige ausgehende Verbindungen zum gleichen Hostnamen und Port herzustellen.
Dies ist auch mit mehreren Zielen kombinierbar. Hier verbinden wir uns fünfmal über IPv4 mit localhost und dreizehnmal über IPv6. netcrab 127.0.0.1:5000x5 [::1]:5000x13
.
netcrab -r
netcrab -R
Im ausgehenden Verbindungsmodus können Sie Netcrab bitten, eine unterbrochene Verbindung wiederherzustellen. -r
stellt die Verbindung bei ordnungsgemäßem Schließen wieder her. -R
wird bei einem unanständigen Fehler wiederhergestellt. Beide können gleichzeitig angegeben werden, entweder -r -R
oder -rR
.
netcrab --fm channels
netcrab --fm linger-channels
Jetzt kommen wir zu den wirklich nützlichen Teilen. Netcrab kann sich in einen Router verwandeln und den Datenverkehr zwischen mehreren Endpunkten weiterleiten. Im Modus „Kanäle“ werden Endpunkte gekoppelt und der Datenverkehr bidirektional von einem Endpunkt zum anderen weitergeleitet, wodurch er wie ein transparenter Proxy fungiert. Der Datenverkehr wird nicht zwischen den Kanälen weitergeleitet. Stellen Sie sich das folgende Diagramm vor:
+-------------+ +-----------------------------+ +-------------+
| | | netcrab | | |
| HOST1:PORT1 <----> HOST2:PORT1 <-> HOST2:PORT2 <----> HOST3:PORT1 |
| HOST1:PORT2 <----> HOST2:PORT3 <-> HOST2:PORT4 <----> HOST3:PORT2 |
| | | | | |
+-------------+ +-----------------------------+ +-------------+
Der erste und der zweite Kanal verlaufen vollständig durch die Ströme, kreuzen sie jedoch nicht. Wenn Host 1 oder Host 3 die Verbindung zu einem Endpunkt trennt, wird die Trennung auch an das andere Ende des Kanals „weitergeleitet“. Wenn dieses Verhalten bei Ihnen nicht funktioniert, können Sie in den Modus „Lingering Channels“ wechseln.
Im Kanalmodus wird die maximale Anzahl an Clients automatisch auf 10 pro Abhöradresse erhöht, unter der Annahme, dass der Benutzer wahrscheinlich mehr als eine Verbindung gleichzeitig wünscht, um die Kanäle tatsächlich zu nutzen. Dies kann mit -m
überschrieben werden.
netcrab --fm hub
Der Hub-Modus ähnelt dem Kanalmodus, ist jedoch einfacher: Der gesamte Datenverkehr von allen Netzwerkquellen wird an alle anderen Sockets zurückgeleitet. Sie könnten damit einen Chatroom oder ähnliches einrichten.
Wie im Kanalmodus wird im Hub-Modus die maximale Anzahl an Clients automatisch auf 10 pro Abhöradresse erhöht, kann aber mit -m
überschrieben werden.
netcrab -e COMMAND
Netcrab kann ein anderes Programm ausführen und dessen stdin und stdout mit dem Netzwerk verbinden. Könnte leicht dazu verwendet werden, eine Remote-Shell oder etwas Ähnliches freizulegen, obwohl Sie damit natürlich vorsichtig sein sollten. In diesem Modus sind die reguläre Ein- und Ausgabe deaktiviert.
Die Befehlszeichenfolge wird über die aktuelle Shell ausgeführt.
Nahezu alle oben beschriebenen Fähigkeiten können kombiniert und gleichzeitig genutzt werden. Sie können beispielsweise mehrere Adressen abhören und in derselben Sitzung eine Verbindung zu mehreren Zielen herstellen, während Sie den Hub für die Weiterleitung zwischen allen Verbindungen verwenden.