我正在用 C 语言编写端口扫描器,我想检测在开放端口上运行的服务及其版本。
我已经编写了扫描仪代码,但现在我不知道如何检测正在运行的服务。
我能做些什么?
问问题
343 次
2 回答
4
如果你决定用自己的代码来做,你可以连接到端口,看看你是否得到任何数据,如果没有,则发送几个字节,然后再次检查。
然后将其与预期响应相匹配。
要了解您在寻找什么,您可以使用 telnet 手动连接到端口并戳它。在许多情况下(Web 服务器就是一个简单的示例),您必须发送一些格式正确的数据才能获得可用的响应。
nmap 已经完成了所有这些以及更多工作(例如,广泛的检查,例如查找字节顺序和 arp 流量的时间)
更新:一些人提到了众所周知的端口,但这不会帮助您发现在非标准端口上运行的标准服务,例如在自定义端口上运行的 ssh 或 http 服务器。
于 2013-03-08T21:28:06.663 回答