2013-10-07 50 views
0

我需要找到安装在远程机器上的操作系统类型。 我知道,我可以使用像NMap这样的OS Finger Printing Tools来检测远程机器的操作系统特定细节。 但是我不能使用这样的工具,因为有一些授权问题。 我需要实现自己的逻辑来检测操作系统。 在我的搜索我找到了一个link,我们可以找到基于TTL的操作系统类型。 但使用TTL并不总是准确的。它基于跳数计算。基于端口识别远程操作系统

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

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

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

请不要[交叉后](HTTP://超级用户。 com/questions/655403/identify-remote-os-based-on-port)在不同的堆栈交换站点上。请删除其中的一个问题。 – Rik

+0

是的,我已经做到了。 – BinaryMee

回答

0

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

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

您需要使用复杂的技术。你可以通过read in this old article了解一些技巧。还有一些人提到使用不同技术的人。

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

另一个事实是NMAP不仅仅使用一个端口,而且如果至少有一个打开的和一个封闭的TCP端口被发现,则它是最有效的。 (它没有找到它时就这么说)所以它也通过组合开放和关闭的端口来确定操作系统。

对于一些进一步阅读: