插座 - 发现防火墙的港口

时间:2010-01-30 12:47:51

标签: c sockets firewall network-scan

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

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

1 个答案:

答案 0 :(得分:1)

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