Nmap
対象OSが何であるかという情報は、ネットワーク攻撃においては重要な情報であり、それが故、昨今ではバナーを隠すことはごく普通に行われていることである。nmapではTCP/IP stack fingerprintingと呼ばれる手法を用いてOSとバージョンを特定する。これは、OSごとにTCP/IPスタックの実装が微妙に異なることを用いて、ポートスキャン同様のパケットに対する挙動を基に、OSおよびそのバージョンを特定するというものである。一例を挙げると、TCP FINスキャンはBSD由来のTCP/IPスタックで有効に働き、Windowsには有効に働かないといった違いがある。このような挙動の違いを集めることで、対象OSおよびそのバージョンを特定できる可能性があるわけである。
初期にはCが用いられていたが、後にC++を用いるようになった。また、上記はいずれもIPv4を対象としているが、後にIPv6やSCTPにも対応するようになった。
このように多数の機能を備えたセキュリティスキャナであるが、更に、Luaスクリプト言語で記述されたスクリプトを解するスクリプトエンジン「Nmap Scripting Engine」(NSEと略される)が実装されることとなる。NSEを用いずとも様々なスキャンが可能なnmapであるが、NSEを用いることで、スキャン動作の自動化、より多角的な診断を行うことができるようになる。
これら、nmapの歴史の大半は付属資料にも記されている。