1

我需要找到远程机器中安装的操作系统类型。我知道,我可以使用像 NMap 这样的操作系统指纹工具来检测远程机器的操作系统特定细节。但我不能使用这样的工具,因为存在一些许可问题。我需要实现自己的逻辑来检测操作系统。在我的搜索中,我找到了一个链接,我们可以找到基于 TTL 的操作系统类型。但是使用 TTL 并不总是准确的。它基于跳数计算。

一台机器上会有一些开放的端口。通过扫描,我们可以设法找到操作系统。

有没有这样的端口可以提供一些关于操作系统类型的想法?我需要实现一个逻辑来运行基于操作系统的脚本。如果有一些条件对检测操作系统类型很有用,那么它可能会节省一些时间。

if(IsOpen(Some_Port_Number))
{
//This machine might be a windows based one so

if(Run_WindowsBasedScript()==False)
{
Run_LinuxBasedScript();
}
}
else
{
if(Run_LinuxBasedScript()==False)
{
Run_WindowsBasedScript();
}
}

所以我需要通过识别操作系统类型来减少运行时间。我认为基于开放的端口我们可以找到操作系统。任何帮助,将不胜感激。

4

1 回答 1

0

没有“只有一个端口”可以扫描以确定操作系统。如果你不能使用NMAP,你需要模拟它的机制来检测操作系统。

当然,您可以通过telnet命令(在端口 23 上)将操作系统返回给您或curl -I microsoft.com给您网络服务器Microsoft-IIS/7.5(经典技术),但不要指望它。

你需要使用复杂的技术。您可以阅读这篇关于一些技术的旧文章。也有人提到使用不同技术的其他人。

首先你需要找出这台机器属于哪个家族。(您已经提到了 TTL 方法)之后,您可以在上面的文章中阅读您可以采取哪些步骤来确定版本。

另一个事实是,NMAP它不仅使用一个端口,而且如果找到至少一个打开和一个关闭的 TCP 端口,效果最好。(当它没有找到它们时会这样说)因此它还通过发现打开和关闭的端口的组合来确定操作系统。

进一步阅读:

于 2013-10-07T15:42:28.217 回答