我需要找到远程机器中安装的操作系统类型。 我知道,我可以使用像NMap这样的OS Finger Printing Tools来检测远程机器的操作系统特定细节。 但是我不能使用这样的工具,因为存在一些许可问题。 我需要实现自己的逻辑来检测操作系统。 在我的搜索中,我找到了link,我们可以根据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();
}
}
所以我需要通过识别操作系统类型来减少运行时间。我认为基于开放端口我们可以找到操作系统。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以扫描“仅一个端口”来确定操作系统。如果你不能使用NMAP
,你需要模仿它检测操作系统的机制。
当然,您可以通过telnet
命令(在端口23上)为您提供操作系统或curl -I microsoft.com
为您提供网络服务器Microsoft-IIS/7.5
(经典技术)但不要指望它。
您需要使用复杂的技术。您可以read in this old article了解一些技巧。还有一些人提到使用不同技术的其他人。
首先,您需要找出该机器所属的系列。 (您已经提到了TTL方法)之后您可以在上面的文章中阅读您可以采取哪些步骤来确定版本。
另一个事实是NMAP
不仅使用一个端口,而且如果找到至少一个开放和一个封闭的TCP端口,则最有效。 (当它找不到它们时就这么说了)所以它也通过打开和关闭的端口组合来确定操作系统。
进一步阅读: