Netcat et /dev/tcp

Ecrire dans un socket avec Netcat

On peut facilement écrire dans un socket avec Netcat (ou nc). Par exemple :

echo 'hello' | nc localhost 8000
# Définir un timeout de 2 secondes
echo 'hello' | nc -w2 localhost 8000
# Attendre une seconde avant de fermer le socket
echo 'hello' | nc -q1 localhost 8000

Il n’est pas toujours possible de bénéficier de l’outil Netcat (ou nc), l’outil n’étant pas installé par défaut sur toutes les distributions.

Le pseudo device /dev/tcp

Netcat peut facilement être remplacé par l’utilisation du pseudo device /dev/tcp

On peut simplement écrire dans ce “fichier” qui va ouvrir un socket selon les paramètres indiqués :

echo 'hello' > /dev/tcp/127.0.0.1/8000

Petite astuce supplémentaire, pour recevoir une éventuelle réponse :

exec 3<>/dev/tcp/127.0.0.1/8000 ; echo labs 1>&3 ; echo $(cat <&3)

exec permet de remplacer le shell avec un autre programme et de définir une redirection pour le programme courant.

On ouvre le socket en “read/write” et on redirige l’entrée et la sortie vers 3.

On écrit dans le socket puis on récupère la sortie.