Un outil réseau TCP/UDP polyvalent
Netcrab est un outil réseau en ligne de commande qui peut faire beaucoup de choses. C'est un hommage à netcat et peut faire beaucoup de choses qu'il peut. Un bref aperçu des choses qu'il peut faire :
Pour une utilisation complète, exécutez netcrab --help
.
netcrab HOST:PORT
Cela se connecte au serveur TCP spécifié. Maintenant, votre stdin sera envoyé au serveur et stdout sera imprimé.
Le format IPv6 pour le nom d'hôte doit utiliser des crochets environnants, par exemple localhost est [::1]
.
netcrab -L ADDR:PORT
netcrab -l ADDR:PORT
Vous pouvez écouter en tant que serveur TCP sur un ou plusieurs ports arbitraires. L'utilisation -l
quitte le programme après la déconnexion de la première connexion entrante. Utilisez -L
pour "écouter plus fort" : continuez à écouter après la déconnexion.
La syntaxe ADDR:PORT
prend en charge certaines variantes spéciales :
localhost:5000
:5000
*:5000
Par défaut, le serveur TCP n'autorise qu'une seule connexion entrante à être active à la fois par adresse d'écoute, mais l'indicateur -m max_inbound_clients
permet à plusieurs de se connecter.
Comme pour le mode client, stdin est envoyé à toutes les sockets connectées et les données entrantes de toutes les sockets sont envoyées à stdout. Cela peut être modifié à l'aide des arguments de mode d'entrée et de sortie ci-dessous.
L'argument -z
provoque la déconnexion immédiate du socket sans permettre l'envoi de données. Utile pour simplement tester la connectivité.
netcrab -u -L ADDR:PORT
netcrab -u HOST:PORT
UDP est bizarre dans la mesure où vous ne vous "connectez" pas vraiment avec lui. Vous vous liez à un port local, puis envoyez/recevez des datagrammes vers/depuis des homologues distants. Le mode d'écoute et le mode de connexion pour UDP fonctionnent exactement de la même manière, sauf qu'en mode de connexion, le premier homologue à qui envoyer stdin est connu au début, et en mode d'écoute, le trafic stdin ne peut être envoyé nulle part tant que l'auditeur n'a pas reçu au moins un datagramme d'un homologue.
Pour -L
cela prend en charge la même syntaxe ADDR:PORT
que ci-dessus pour TCP.
La taille du datagramme est par défaut de 1 octet mais peut être contrôlée par l'argument --ss
.
netcrab -L ADDR1:PORT1 -L ADDR2:PORT2
netcrab -u -L ADDR1:PORT1 -L ADDR2:PORT2
Netcrab prend en charge l'écoute sur plusieurs adresses et ports locaux en même temps. Il acceptera les connexions qui arrivent sur n’importe lequel d’entre eux. Cela prend en charge TCP et UDP.
netcrab -u --mc HOST:PORT
Netcrab prend en charge la jonction des sockets UDP aux groupes de multidiffusion en ajoutant l'argument --mc
. Il donne également des contrôles sur la durée de vie des paquets de multidiffusion ( --ttl
) et s'il faut recevoir des paquets de multidiffusion en boucle puisque le programme est joint au groupe ( --mc_no_loop
).
netcrab -u -b HOST:PORT
Netcrab prend en charge l'envoi de datagrammes de diffusion UDP.
netcrab -i MODE
Le mode d'entrée peut être contrôlé. Par défaut, l'entrée provient de stdin. Il accepte les autres modes suivants :
none
: aucune saisie n'est possible. Le seul trafic qui sera traité proviendra de homologues distants.stdin-nochar
: fonctionne de la même manière que stdin, mais n'active pas le "mode caractère". Cela fonctionne moins bien pour les utilisations interactives.echo
: tout trafic reçu sera renvoyé à son expéditeur.rand
: des données aléatoires seront générées. Les tailles aléatoires des données peuvent être contrôlées par --rsizemin
et --rsizemax
, et le type de données peut être contrôlé par --rvals
.fixed
: seulement vraiment utile pour les tests de performances. Le même message de taille fixe avec des données fixes sera envoyé à l'infini. Vous pouvez contrôler la taille en utilisant --ss
et le type de données aléatoires avec --rvals
pfqoscli
: mesure la latence par rapport aux balises de qualité de service PlayFab.pfqossrv
: agit comme un serveur de balise de qualité de service PlayFab que les clients peuvent cibler pour mesurer la latence. Lorsque vous utilisez l'un des modes stdin comme entrée, vous pouvez spécifier --exit-after-input
pour quitter le programme une fois que le flux d'entrée atteint la fin du fichier.
netcrab -o MODE
Par défaut, la sortie est envoyée vers stdout, mais il est souvent utile de la remplacer par -o none
pour ignorer toutes les sorties. Ceci est particulièrement utile lors du passage d’une grande quantité de trafic, car cela peut ralentir la sortie.
Le mode par défaut de Netcrab consiste à utiliser stdin et stdout, afin que vous puissiez rediriger l'entrée d'un fichier et envoyer la sortie vers un fichier (ou acheminée entre programmes).
netcrab HOST:PORT < file
echo message | netcrab HOST:PORT
netcrab -6
netcrab -4
Vous pouvez limiter l'utilisation des familles d'adresses IPv6 ou IPv4 uniquement. Cela fait plus de différence lors de la connexion à des noms d'hôte qui passent par la résolution DNS ou lors de l'écoute sans spécifier d'adresse source explicite.
netcrab -s ADDR:PORT
Lors de l'établissement d'une connexion TCP sortante ou de l'envoi de datagrammes UDP, Netcrab se lie par défaut aux adresses génériques IPv4 et IPv6 (0.0.0.0:0 et [::]:0). Vous pouvez plutôt passer -s
pour vous lier explicitement à une adresse. Celui-ci prend en charge toutes les variantes ADDR:PORT
décrites dans la section « Serveur TCP ».
netcrab HOST1:PORT1 HOST2:PORT2
Netcrab permet de se connecter à plusieurs homologues distants en même temps. De la même manière que pour l'écoute de plusieurs connexions simultanées, le trafic de la machine locale sera envoyé à tous les pairs connectés, entrants ou sortants.
netcrab -L ADDR:PORT HOST:PORT
Netcrab prend en charge à la fois l'écoute des connexions entrantes et l'établissement de connexions sortantes. Cela peut être utile pour transférer le trafic d'une adresse locale à une autre, puisque vous pouvez spécifier indépendamment à la fois l'adresse sur laquelle écouter et l'adresse source à utiliser pour la connexion sortante.
netcrab HOST:PORTxNUM
Il est parfois utile de pouvoir se connecter plusieurs fois au même point de terminaison, notamment pour les scénarios de canaux. Par exemple, pour vous connecter 12 fois à un nom d'hôte, vous pouvez exécuter netcrab localhost:5000x12
. Il tentera 12 connexions sortantes simultanées vers le même nom d'hôte et le même port.
Cela peut également être combiné avec plusieurs cibles. Ici, nous nous connectons à localhost sur IPv4 cinq fois et sur IPv6 treize fois. netcrab 127.0.0.1:5000x5 [::1]:5000x13
.
netcrab -r
netcrab -R
En mode connexion sortante, vous pouvez demander à Netcrab de rétablir une connexion interrompue. -r
se rétablit lors de la fermeture gracieuse de la connexion. -R
se rétablit en cas d'erreur disgracieuse. Les deux peuvent être spécifiés en même temps, soit -r -R
ou -rR
.
netcrab --fm channels
netcrab --fm linger-channels
Passons maintenant aux parties vraiment utiles. Netcrab peut se transformer en routeur, transmettant le trafic entre plusieurs points de terminaison. Le mode « Canaux » permet de coupler les points de terminaison et de transférer le trafic de manière bidirectionnelle d'un point de terminaison à l'autre, agissant comme un proxy transparent. Le trafic n'est pas transféré entre les canaux. Imaginez le schéma suivant :
+-------------+ +-----------------------------+ +-------------+
| | | netcrab | | |
| HOST1:PORT1 <----> HOST2:PORT1 <-> HOST2:PORT2 <----> HOST3:PORT1 |
| HOST1:PORT2 <----> HOST2:PORT3 <-> HOST2:PORT4 <----> HOST3:PORT2 |
| | | | | |
+-------------+ +-----------------------------+ +-------------+
Les premier et deuxième canaux traversent complètement mais ne traversent pas les ruisseaux. Si l'hôte 1 ou l'hôte 3 déconnecte un point de terminaison, la déconnexion est également « transmise » à l'autre extrémité du canal. Si ce comportement ne fonctionne pas pour vous, vous pouvez passer en mode Canaux persistants.
En mode canaux, le nombre maximum de clients est automatiquement augmenté à 10 par adresse d'écoute en supposant que l'utilisateur souhaite probablement plus d'une connexion à la fois afin d'utiliser réellement les canaux. Cela peut être remplacé par -m
.
netcrab --fm hub
Le mode Hub est similaire au mode Canaux, mais plus simple : tout le trafic de toutes les sources réseau est renvoyé vers toutes les autres sockets. Vous pouvez l'utiliser pour créer une salle de discussion ou quelque chose comme ça.
Comme en mode canaux, en mode hub, le nombre maximum de clients est automatiquement augmenté à 10 par adresse d'écoute mais peut être remplacé avec -m
.
netcrab -e COMMAND
Netcrab peut exécuter un autre programme et connecter ses stdin et stdout au réseau. Pourrait facilement l'utiliser pour exposer un shell distant ou quelque chose du genre, même si bien sûr, vous devrez être prudent avec cela. Dans ce mode, les entrées et sorties normales seront désactivées.
La chaîne de commande est exécutée via le shell actuel.
Presque toutes les fonctionnalités décrites ci-dessus peuvent être combinées et utilisées en même temps. Par exemple, vous pouvez écouter sur plusieurs adresses et vous connecter à plusieurs cibles dans la même session tout en utilisant le hub pour transférer entre toutes les connexions.