Aller au contenu
Sécurité medium

netcat : tester des ports et des flux

27 min de lecture

Quand on doit tester rapidement un service, transférer un fichier entre deux machines ou diagnostiquer une connexion réseau, netcat (ou nc) fait le travail en une seule commande. Il ouvre une connexion TCP ou UDP et y raccorde l'entrée et la sortie standard de votre terminal : ce que vous tapez part sur le réseau, ce qui revient s'affiche à l'écran. Aucun fichier de configuration, aucun service à déclarer.

  • Établir des connexions TCP et UDP vers des services
  • Scanner des ports pour vérifier leur disponibilité
  • Transférer des fichiers entre machines sans scp/rsync
  • Créer un serveur en écoute pour tester vos applications
  • Déboguer des services réseau (HTTP, SMTP, etc.)

netcat date d'une époque où le chiffrement n'était pas la norme, et cela n'a pas changé : l'outil se contente de recopier des octets d'un bout à l'autre de la connexion. Tout ce que vous lui confiez circule donc en clair et reste lisible pour qui capture le trafic sur le chemin. Deux réflexes suffisent à s'en protéger, et une option précise est à proscrire hors laboratoire.

netcat fait partie des outils de diagnostic réseau. Chaque outil a sa spécialité :

OutilSpécialitéQuand l'utiliser
netcatConnexions TCP/UDP manuellesTests rapides, transferts ponctuels
nmapScan de ports avancéDécouverte réseau, audit sécurité
curlRequêtes HTTP/HTTPSTests d'API, téléchargements
telnetConnexion texteDébogage protocoles (legacy)
socatTunnels complexesRedirections, proxys avancés
ss/netstatÉtat des connexionsVoir les ports en écoute

Quand utiliser netcat vs nmap ?

Situationnetcatnmap
Tester si un port est ouvertOui (nc -zv host 22)Oui mais overkill
Scanner une plage de portsBasiquePlus complet
Détection de services/versionsNonOui (-sV)
Transfert de fichiersOui, parfaitNon
Créer un serveur temporaireOuiNon
Audit de sécuritéNonOui (scripts NSE)

Workflow typique de diagnostic :

Fenêtre de terminal
# 1. Vérifier si le service répond
nc -zv 192.168.1.100 80
# 2. Récupérer la bannière du service
echo "" | nc -v -w 2 192.168.1.100 22
# 3. Tester une requête HTTP manuellement
echo -e "GET / HTTP/1.1\nHost: example.com\n\n" | nc example.com 80
# 4. Si besoin d'un scan complet → passer à nmap
nmap -sV -p 1-1000 192.168.1.100

Tout le fonctionnement de netcat tient en une idée : la commande relie les flux standards du terminal à une socket réseau. Le schéma ci-dessous résume ce raccordement et les deux rôles que la commande peut endosser.

🧠 Modèle mental — Netcat : Le tuyau réseau

Netcat crée un canal bidirectionnel entre stdin/stdout et une connexion réseau. Il peut agir en client (connecter) ou en serveur (écouter).

Modèle mental netcat : Canal bidirectionnel entre stdin/stdout et réseau, client ou serveur

Points clés

  • **Client ou Serveur** : nc HOST PORT (client) ou nc -l PORT (serveur)
  • **Bidirectionnel** : stdin → réseau et réseau → stdout
  • **Redirections** : < fichier (envoyer) et > fichier (recevoir)
  • **Protocole** : TCP par défaut, UDP avec -u

Règles d'or

1
Jamais de données sensibles sans chiffrement Netcat transmet tout en clair, utiliser ncat --ssl ou SSH
2
Toujours utiliser -v pour le debug Le mode verbeux affiche les connexions et erreurs
3
Attention aux variantes netcat-openbsd et netcat-traditional ont des syntaxes différentes

Vocabulaire essentiel

-l
Listen : mode serveur, attend une connexion
-p
Port : spécifie le port (obligatoire avec -l en traditional)
-v
Verbose : affiche les détails de connexion
-z
Zero-I/O : scan sans envoyer de données
-w
Wait : timeout en secondes
-u
UDP : utiliser UDP au lieu de TCP
📚 Pour aller plus loin — 4 options avancées
-e
Execute : lance un programme à chaque connexion (backdoor)
-k
Keep-open : reste ouvert après déconnexion (ncat)
--ssl
Chiffrement SSL/TLS (ncat uniquement)
FIFO
Named pipe pour créer des relais bidirectionnels

netcat fait donc circuler les données dans les deux sens entre votre terminal (stdin/stdout) et la connexion réseau. Il agit soit en client (il se connecte à un service existant), soit en serveur (il attend une connexion entrante).

Deux formes seulement à mémoriser, une par rôle. La forme serveur diffère selon la variante installée : netcat-traditional exige -p devant le port, netcat-openbsd le refuse.

Fenêtre de terminal
# Mode client : se connecter à un service
nc [HOST] [PORT]
# Mode serveur : écouter sur un port
nc -l -p [PORT] # netcat-traditional
nc -l [PORT] # netcat-openbsd

Le mode est déterminé par la seule présence de l'option -l : sans elle, netcat se connecte ; avec elle, il écoute. Un test complet mobilise souvent les deux, une machine en écoute et une autre qui s'y connecte.

ModeSyntaxeUsage
Clientnc HOST PORTSe connecter à un service existant
Serveurnc -l -p PORTAttendre une connexion entrante

Sans option, la connexion reste ouverte et le terminal attend que vous tapiez quelque chose : c'est ce qui permet de dialoguer à la main avec un protocole texte. Ctrl+C ferme la session.

Fenêtre de terminal
# Se connecter au port SSH
nc 192.168.1.100 22
# Se connecter à un serveur web
nc example.com 80
# puis taper : GET / HTTP/1.0 [Entrée] [Entrée]

L'option -z ouvre la connexion puis la referme aussitôt, sans rien transmettre. Combinée à -v, elle indique pour chaque port s'il accepte la connexion. Le scan reste séquentiel : sur une plage large, ajoutez -w pour borner l'attente des ports filtrés.

Fenêtre de terminal
# Vérifier un seul port
nc -zv 192.168.1.100 22
# Scanner une plage de ports
nc -zv 192.168.1.100 20-25
# Scanner plusieurs ports spécifiques
nc -zv 192.168.1.100 22,80,443

Options importantes :

  • -z : Mode scan (pas de données envoyées)
  • -v : Verbeux (affiche le résultat)
  • -w N : Timeout après N secondes

Le transfert repose entièrement sur les redirections du shell : > côté récepteur écrit ce qui arrive, < côté émetteur envoie le contenu du fichier. Lancez toujours le récepteur en premier, sinon l'émetteur échoue sur un Connection refused. Attention, rien ne vérifie l'intégrité ni la fin du transfert : contrôlez la taille du fichier reçu, et jamais de données sensibles par ce canal en clair.

Fenêtre de terminal
# Machine réceptrice (écoute sur port 4444)
nc -l -p 4444 > fichier_recu.txt
# Machine émettrice (envoie le fichier)
nc 192.168.1.100 4444 < fichier_a_envoyer.txt

Avec compression pour les gros fichiers :

Fenêtre de terminal
# Récepteur
nc -l -p 4444 | tar xzvf -
# Émetteur (envoie un dossier compressé)
tar czvf - /dossier | nc 192.168.1.100 4444

L'option -u bascule en UDP, indispensable pour les services qui n'écoutent qu'en datagramme comme DNS ou DHCP. UDP n'ayant pas de poignée de main, netcat ne peut pas distinguer un port ouvert d'un port filtré : un -zuv qui répond « succeeded » signifie seulement qu'aucun rejet n'est revenu. Associez toujours -w pour ne pas attendre indéfiniment.

Fenêtre de terminal
# Connexion UDP (pour tester DNS, DHCP, etc.)
nc -u 8.8.8.8 53
# Écouter en UDP
nc -l -u -p 5000

Le paquet à installer dépend de la variante que vous voulez, et le nom de la commande reste nc dans tous les cas. Sur Debian et Ubuntu, netcat-openbsd est la version fournie par défaut ; netcat-traditional s'installe à part et reste la seule à proposer l'option -e. Sur RHEL et dérivés, nmap-ncat apporte ncat, la variante la plus complète, seule à gérer le chiffrement TLS.

Fenêtre de terminal
# Version traditionnelle (avec -e)
sudo apt install netcat-traditional
# Version OpenBSD (par défaut, sans -e)
sudo apt install netcat-openbsd
# Vérifier la version
nc -h 2>&1 | head -3

Il existe plusieurs versions de netcat avec des différences importantes :

VersionOptions notablesSécurité
netcat-traditional-e (execute), -p PORT obligatoireRisqué : -e = backdoor
netcat-openbsdPas de -e, -l PORT (sans -p)Plus sûr
ncat (Nmap)--ssl, --allow, -k (keep-open)Chiffrement
socatTunnels complexes, SSL natifTrès flexible
Fenêtre de terminal
# Identifier la version installée
nc -h 2>&1 | head -1
# netcat-traditional affiche : [v1.10-47]
# netcat-openbsd affiche : usage: nc [-46DdhklnrStUuvzC] ...

Une fois la connexion établie, tout dépend de ce que vous branchez à ses deux extrémités. Les montages ci-dessous détournent netcat en messagerie, en serveur HTTP jetable et en relais de port, uniquement avec des redirections et des pipes du shell. Tous partagent la même limite : le processus se termine à la première déconnexion, sauf boucle explicite ou option -k de ncat.

Chaque terminal affiche ce que l'autre tape, puisque netcat recopie stdin vers le réseau et le réseau vers stdout. La conversation s'arrête dès que l'un des deux ferme sa session.

Fenêtre de terminal
# Machine 1 : écouter
nc -l -p 1234
# Machine 2 : se connecter
nc 192.168.1.100 1234
# Les deux terminaux peuvent maintenant échanger des messages

Pratique pour vérifier qu'un client, un équilibreur de charge ou une sonde atteint bien la machine. netcat ne comprend pas HTTP : il se contente de renvoyer le texte fourni, à vous d'écrire une ligne de statut valide suivie d'une ligne vide avant le corps. Le premier montage ne sert qu'une requête, la boucle while en sert autant que nécessaire.

Fenêtre de terminal
# Serveur qui répond "Hello World" (une seule requête)
echo -e "HTTP/1.1 200 OK\n\nHello World" | nc -l -p 8080
# Serveur persistant (boucle)
while true; do echo -e "HTTP/1.1 200 OK\n\nHello $(date)" | nc -l -p 8080; done

Beaucoup de services se présentent en envoyant leur version dès la connexion : c'est le banner grabbing.

Fenêtre de terminal
# SSH
echo "" | nc -v -w 2 192.168.1.100 22
# SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.1
# SMTP
echo "QUIT" | nc -v -w 2 mail.example.com 25
# 220 mail.example.com ESMTP Postfix
# HTTP
echo -e "HEAD / HTTP/1.1\nHost: example.com\n\n" | nc example.com 80

Un pipe ordinaire ne circule que dans un sens ; le tube nommé créé par mkfifo fournit le canal de retour et ferme la boucle entre les deux netcat. Le relais ne tient que le temps d'une connexion, et le fichier /tmp/relay doit être supprimé avant de recommencer. Pour un usage durable, socat fait la même chose en une commande et sans FIFO.

Fenêtre de terminal
# Créer un relais du port local 8080 vers remote:80
mkfifo /tmp/relay
nc -l -p 8080 < /tmp/relay | nc remote.example.com 80 > /tmp/relay

Ce montage n'est documenté que parce qu'on le rencontre dans les rapports d'incident : c'est la forme la plus courante de reverse shell. Il n'existe que dans netcat-traditional et dans ncat (sous le nom -c), pas dans netcat-openbsd.

Ces erreurs reviennent constamment avec netcat. Plusieurs touchent la sécurité : les connaître évite des fuites de données et des backdoors involontaires.

Les options varient selon la variante installée : netcat-traditional, netcat-openbsd, ncat.

Symptôme : une option n'est pas reconnue, ou le comportement diffère d'une machine à l'autre.

Cause : netcat-openbsd n'a pas -e ; netcat-traditional exige -p avec -l.

Fenêtre de terminal
nc -h # vérifier les options disponibles

Vous transférez des données sensibles en clair via netcat.

Symptôme : les données peuvent être interceptées sur le réseau.

Cause : netcat ne chiffre jamais les communications.

Fenêtre de terminal
ncat --ssl 192.168.1.100 4444

Vous utilisez nc -e /bin/bash en production.

Symptôme : création d'une backdoor permettant l'exécution de commandes à distance.

Cause : -e exécute un programme à chaque connexion. Ne l'utilisez jamais en dehors d'un lab isolé.

Vous tentez d'écouter sur un port inférieur à 1024 sans être root.

Symptôme : message Permission denied.

Cause : les ports 1 à 1023 sont réservés à root.

Fenêtre de terminal
nc -l -p 8080 # un port > 1024, ou exécuter avec sudo

Vous attendez de netcat qu'il accepte plusieurs connexions successives.

Symptôme : le listener s'arrête après la première connexion.

Cause : par défaut, nc -l n'accepte qu'une seule connexion.

Fenêtre de terminal
while true; do nc -l -p 4444; done

Vous oubliez d'ouvrir le port dans le pare-feu.

Symptôme : Connection refused ou timeout.

Cause : iptables, nftables ou firewalld bloque le port.

Fenêtre de terminal
sudo firewall-cmd --add-port=4444/tcp --permanent

Vous utilisez la mauvaise syntaxe pour écouter selon la variante.

Symptôme : erreur Cannot use -p and -l together, ou Missing port.

Cause : netcat-openbsd attend nc -l PORT ; netcat-traditional attend nc -l -p PORT.

Fenêtre de terminal
# OpenBSD
nc -l 4444
# Traditional
nc -l -p 4444

Vous attendez que le serveur reste ouvert après une déconnexion.

Symptôme : le serveur se ferme après chaque transfert.

Cause : le netcat traditionnel n'a pas d'option keep-open.

Fenêtre de terminal
ncat -k -l 4444 # reste ouvert après déconnexion

Ce lab vous fait manipuler netcat sur localhost : test de port, écoute, transfert et récupération de bannière. Comptez 20 minutes.

Le script suivant crée un dossier de travail avec des fichiers de test :

Fenêtre de terminal
# Créer un dossier de travail
mkdir -p /tmp/nc-lab
cd /tmp/nc-lab
# Créer des fichiers de test
echo "Message secret" > secret.txt
echo "Données à transférer" > data.txt
dd if=/dev/urandom of=binary.bin bs=1K count=10 2>/dev/null
# Vérifier la variante de netcat
nc -h 2>&1 | head -5

Pour tout nettoyer à la fin : rm -rf /tmp/nc-lab.

Les étapes 2 et 3 se font à deux terminaux : le serveur en écoute dans le premier, le client dans le second. Adaptez la syntaxe d'écoute à votre variante, nc -l 4444 sur OpenBSD, nc -l -p 4444 sur traditional.

  1. Test de connexion basique, vérifiez si le port 22 (SSH) est ouvert : nc -zv localhost 22. -z scanne sans envoyer de données, -v affiche le résultat.

  2. Écouter sur un port, ouvrez un serveur sur le port 4444 en mode verbeux : nc -l -p 4444 -v. -l active l'écoute, -p spécifie le port.

  3. Transfert de fichier, envoyez secret.txt vers une machine en écoute : nc localhost 4444 < secret.txt. La redirection < envoie le contenu du fichier vers la connexion. Avec compression : gzip -c secret.txt | nc localhost 4444.

  4. Scanner une plage de ports, scannez les ports 20 à 25 : nc -zv localhost 20-25. Le format N-M couvre tous les ports de N à M inclus.

  5. Récupérer une bannière, récupérez la bannière SSH avec un timeout de 2 secondes : echo "" | nc -v -w 2 localhost 22. Une ligne vide suffit à déclencher la bannière.

Ces exercices vont du test de port simple au relais de trafic. Lisez l'énoncé, cherchez la commande, puis dépliez la solution.

Exercice 1, Vérifier un service web. Vérifiez si le port 443 (HTTPS) est ouvert sur example.com.

Indice : -z pour scanner, -v pour voir le résultat.

Voir la solution
Fenêtre de terminal
nc -zv example.com 443

-z réalise un scan sans données, -v affiche le statut de la connexion.

Exercice 2, Chat entre deux terminaux. Établissez une communication entre deux terminaux de la même machine.

Indice : un terminal écoute, l'autre se connecte.

Voir la solution
Fenêtre de terminal
# Terminal 1
nc -l -p 1234
# Terminal 2
nc localhost 1234

Le premier terminal devient serveur avec -l, le second s'y connecte en client.

Exercice 3, Scanner les services courants. Scannez les ports SSH, HTTP et HTTPS sur localhost en une seule commande.

Indice : plusieurs ports se séparent par des virgules.

Voir la solution
Fenêtre de terminal
nc -zv localhost 22,80,443

Les ports peuvent être listés avec des virgules ou exprimés en plage (22-443).

Exercice 4, Transfert de dossier. Transférez le dossier /tmp/nc-lab vers une machine en écoute.

Indice : combinez tar et netcat avec un pipe.

Voir la solution
Fenêtre de terminal
# Récepteur
nc -l -p 4444 | tar xvf -
# Expéditeur
tar cvf - /tmp/nc-lab | nc localhost 4444

tar crée une archive en streaming, netcat la transporte, tar l'extrait à l'arrivée.

Exercice 5, Test HTTP manuel. Récupérez la page d'accueil d'example.com avec une requête HTTP/1.1.

Indice : une requête HTTP a besoin de GET, Host et deux retours à la ligne.

Voir la solution
Fenêtre de terminal
echo -e "GET / HTTP/1.1\nHost: example.com\n\n" | nc example.com 80

HTTP/1.1 exige le header Host ; le double \n termine les en-têtes.

Exercice 6, Connexion UDP DNS. Testez la connectivité UDP vers un serveur DNS sur le port 53.

Indice : -u pour UDP, -w pour un timeout.

Voir la solution
Fenêtre de terminal
nc -zuv -w 2 8.8.8.8 53

-u active le mode UDP, indispensable pour tester un service DNS.

Exercice 7, Serveur HTTP de fortune. Créez un serveur qui renvoie « Hello World » sur le port 8080.

Indice : la réponse HTTP doit inclure une status line et un body.

Voir la solution
Fenêtre de terminal
while true; do echo -e "HTTP/1.1 200 OK\n\nHello World" | nc -l -p 8080; done

La boucle while permet de servir plusieurs requêtes successives.

Exercice 8, Relais de port. Créez un relais qui écoute sur 8080 et redirige vers localhost:22.

Indice : utilisez un named pipe (mkfifo) pour la communication bidirectionnelle.

Voir la solution
Fenêtre de terminal
mkfifo /tmp/relay
nc -l -p 8080 < /tmp/relay | nc localhost 22 > /tmp/relay

Le FIFO permet de relayer les données dans les deux sens.

Exercice 9, Backdoor contrôlée (lab uniquement). Créez un shell distant sur le port 5555. À ne jamais faire en production.

Indice : l'option -e (ou -c) exécute un programme à la connexion.

Voir la solution
Fenêtre de terminal
# Serveur
nc -l -p 5555 -e /bin/bash
# Client
nc localhost 5555

-e exécute le programme pour chaque connexion, extrêmement dangereux hors d'un lab isolé.

Quand une connexion netcat échoue, ces méthodes de diagnostic et ces erreurs fréquentes couvrent la grande majorité des cas.

L'ordre compte : commencez par -v pour lire le message exact, puis vérifiez côté serveur avec ss -tlnp qu'un processus écoute vraiment sur le port et sur la bonne interface. Un service lié à 127.0.0.1 répond en local et refuse toute connexion venue du réseau, ce que seul ss révèle.

Fenêtre de terminal
# Mode verbeux : détails de connexion
nc -v HOST PORT
# Identifier la variante de netcat installée
nc -h 2>&1 | head -5
# Tester localement pour écarter un problème réseau
nc -zv localhost PORT
# Lister les services en écoute
ss -tlnp
# Capturer le trafic échangé
sudo tcpdump -i any port PORT

Deux messages se ressemblent mais n'ont rien à voir : Connection refused signifie que la machine a répondu et rejeté la connexion, donc que le réseau fonctionne et que le service manque ; Connection timed out signifie qu'aucune réponse n'est revenue, ce qui pointe vers un pare-feu en DROP ou un problème de routage.

ErreurCause probableSolution
Connection refusedAucun service n'écoute, pare-feu, ou mauvaise IPVérifier l'écoute avec ss -tlnp | grep PORT, démarrer le service ou ouvrir le port
Connection timed outMachine injoignable, pare-feu en DROP, ou routageTester avec ping HOST et traceroute HOST
Permission denied / Can't grab portPort < 1024 sans root, port déjà utilisé, ou SELinuxUtiliser sudo ou un port > 1024
Invalid option / Unknown optionVariante de netcat différente (BSD vs traditional)Vérifier la version avec nc -h et adapter la syntaxe

À garder sous la main : la syntaxe de base, les options principales et les combinaisons les plus utilisées au quotidien.

Une seule ligne diffère entre les variantes, celle de l'écoute. En cas de doute sur la machine où vous travaillez, nc -h affiche la syntaxe acceptée.

SyntaxeSignificationExemple
nc HOST PORTConnexion TCP simplenc example.com 80
nc -l -p PORTÉcouter sur un port (traditional)nc -l -p 4444
nc -l PORTÉcouter sur un port (BSD/OpenBSD)nc -l 4444

Les cinq premières options existent partout ; les trois dernières, dont le chiffrement, sont propres à ncat et ne fonctionneront pas avec un nc classique.

SyntaxeSignificationExemple
-vMode verbeuxnc -v example.com 80
-zScan sans envoyer de donnéesnc -zv host 20-80
-w NTimeout après N secondesnc -w 3 host 22
-uMode UDP au lieu de TCPnc -u host 53
-nPas de résolution DNSnc -n 192.168.1.1 80
-kKeep-open (ncat uniquement)ncat -k -l 4444
--sslConnexion chiffrée SSL/TLS (ncat)ncat --ssl host 443
--allow HOSTN'accepter que certaines IP (ncat)ncat -l 4444 --allow 192.168.1.0/24

Ces formes ne sont pas des options de netcat mais des redirections du shell et des notations de plage. Elles se combinent librement avec les options du tableau précédent.

SyntaxeSignificationExemple
< fichierEnvoyer le contenu d'un fichiernc host 4444 < data.txt
> fichierSauvegarder dans un fichiernc -l -p 4444 > received.txt
-z PORT-PORTScan d'une plage de portsnc -zv host 1-1024
-z P1,P2,P3Scan de ports spécifiquesnc -zv host 22,80,443

Les montages du quotidien, à recopier tels quels. Le scan renvoyant son résultat sur stderr, la redirection 2>&1 est indispensable avant tout grep.

SyntaxeSignificationExemple
nc -l ... | tar xvf -Extraire une archive reçuenc -l -p 4444 | tar xvf -
tar cvf - dir | nc ...Envoyer un dossier compressétar cvf - /data | nc host 4444
nc -l ... | nc HOSTProxy basique via pipenc -l -p 8080 | nc target 80
... 2>&1 | grep openFiltrer le résultat d'un scannc -zv host 22 2>&1 | grep open
socat - TCP:H:PÉquivalent netcat avec socatsocat - TCP:example.com:80

Vous maîtrisez netcat quand vous pouvez cocher chacun de ces points sans hésiter :

  • Je sais me connecter à un service TCP/UDP.
  • Je sais scanner des ports avec -zv.
  • Je sais transférer un fichier entre deux machines.
  • Je sais créer un serveur en écoute.
  • Je connais les différences entre les variantes de netcat.
  • Je sais quand utiliser ncat --ssl pour le chiffrement.

Dix questions pour vérifier que l'essentiel est acquis. Elles ne portent que sur ce qui vient d'être expliqué ici : modes client et serveur, options de scan, variantes et règles de sécurité.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

10 questions
6 min.
80% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

  • Client : nc HOST PORT ; serveur : nc -l -p PORT
  • Scan : -zv pour tester un port sans envoyer de données
  • Timeout : -w N pour éviter les blocages
  • UDP : -u pour les protocoles comme DNS
  • Jamais de données sensibles sans chiffrement (ncat --ssl ou SSH)
  • Jamais de -e en production (risque de backdoor)

netcat teste et dépanne ; pour aller plus loin, passez aux outils qui scannent, capturent et sécurisent vos accès réseau.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn