2010-01-30 96 views
1

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

如果有人有这方面的经验,请指出nmap代码中发生实际扫描和端口状态的部分,或者至少告诉我是否有其他可用的代码来处理这个问题。

回答

1

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

+1

只需添加,防火墙就可以选择一些不需要的数据包操作。 “掉落”是最常见的,因为这是最不起作用的。但它可以回复RST,或者甚至可以把你自己的数据包放在你身上,无论它做什么好事。 – 2010-02-01 09:12:37