1

我正在阅读 nmap 源代码,因为我想了解它如何发现某些端口被过滤或防火墙。我对 c 中的套接字有一些经验,并且我已经构建了简单的端口扫描器,这很容易 - 如果连接成功,则端口打开,否则关闭(因为 RST 返回)。但是如果使用防火墙端口,它们不会返回 RST 数据包,而我的端口扫描器只是永远“等待”。

如果有人对此主题有经验,请指出发生实际扫描和端口状态确定的 nmap 代码部分,或者至少告诉我是否有任何其他代码可以处理这个问题。

4

1 回答 1

1

使用异步套接字 API 调用(即不要等待建立连接,而是并行尝试下一个端口/地址)并定义合理的超时时间(例如,如果一分钟后没有建立连接,您可以考虑过滤)。

于 2010-01-30T14:25:00.213 回答