nmap通过发送六个探测包并分析它们的响应,提供基于TCP / IP指纹识别的操作系统检测function。 在文档中说,其中一些被发送到一个开放的端口,一些被发送到一个封闭的端口。
有谁知道nmap如何决定哪个端口发送探针? 它只是寻找第一个封闭的端口和它可以find的第一个开放的端口? 它是按照一定的顺序search它们吗? 还是它随机挑选一个端口?
在这种情况下,没有比代码本身更好的文档。 Nmap依靠端口扫描结果来确定打开和closures端口的列表。 它正在寻找三件事:
一般来说,它会select它所知道的第一个(最低的数字),但是它试图避免的事情有一些规则:
tcpwrapped端口。 这有时可能是IPSclosures连接的结果,所以跳过这些端口有助于确保Nmap获得未修改的连接到目标。 如果我很好理解,nmap只有在无法通过指纹检测操作系统的情况下尝试打开或closures端口,但文档没有解释检查端口的顺序。 我想你可以在扫描过程中发现如何跟踪自己的stream量。