PROFIL / INDEX© Clément Depernet / 2026

← Retour à la liste

21 août 20222 min de lecture

Cheat sheet — Nmap (scans, options & scripts NSE)

Scanner et cartographier un réseau avec Nmap : types de scans (TCP, SYN furtif, UDP), options essentielles (-sV, -O, -A, -p, scripts), et les bases de l'écriture de scripts NSE en Lua.

intro#nmap#reseau#pentest#reconnaissance#cheatsheet#nse

Mis à jour le 21 sept. 2026

Nmap est un scanner de ports open source : il détecte les hôtes d’un réseau, les ports ouverts, les services et leurs versions, et l’OS.

Types de scans

  • TCP connect (-sT) — handshake complet en 3 temps. Port fermé → RST ; port ouvert → SYN/ACK puis ACK de Nmap.
  • SYN furtif (-sS) — n’achève pas le handshake : après le SYN/ACK, Nmap envoie un RST. Rapide (milliers de ports/s), plus discret.
  • UDP (-sU) — sans connexion : pas de réponse = open|filtered ; un ICMP « port unreachable » = fermé. Lent et peu fiable par nature.

Options essentielles

nmap 192.168.1.10               # ports ouverts, MAC, état
nmap 192.168.1.0/24             # tout un réseau (CIDR)
nmap -O 192.168.1.10            # détection d'OS
nmap -sV 192.168.1.10           # versions des services (→ recherche de CVE)
nmap -p 80 192.168.1.10         # un port précis
nmap -A 192.168.1.10            # agressif : -sV + -O + scripts + traceroute
nmap --spoofmac=XX:... 10.0.0.1 # usurper l'adresse MAC
nmap -oA resultat 192.168.1.10  # export (xml/grep/txt)

Scripts intégrés

nmap --script default 192.168.1.10     # (= -sC) infos machine/OS/users
nmap -v --script vuln 192.168.1.10     # recherche de vulnérabilités connues

Écrire un script NSE (Lua)

Structure minimale : métadonnées, règle d’exécution (portrule/hostrule), fonction action.

description = [[ Se connecte à un serveur HTTP et affiche sa bannière. ]]
author = "..."
license = "Same as Nmap"
categories = {"discovery", "safe"}

local nmap = require "nmap"
local shortport = require "shortport"

portrule = shortport.port_or_service(80, "http")

action = function(host, port)
  local socket = nmap.new_socket()
  socket:connect(host.ip, port.number)
  socket:send("HEAD / HTTP/1.1\r\nHost: " .. host.ip .. "\r\n\r\n")
  local status, result = socket:receive_lines(1)
  socket:close()
  return result or "Pas de réponse"
end

Catégories utiles : safe, discovery, auth, vuln, intrusive, default (celles lancées par -sC).

Placer le script dans /usr/share/nmap/scripts/ puis :

nmap --script mon_script.nse -p 80 --script-trace <ip>

Débogage : nmap.debug(1, "message"). Toujours gérer les erreurs de socket et valider les réponses réseau avant de les utiliser.

SEC / OPS / CD-01

Astro + Tailwind, conteneurisé, servi derrière Caddy · Inspiration · Thème sonore : Severance (Theodore Shapiro) · Trop mignon le favicon, non ?

PRÊT / CD-01