【问题标题】:Identify Remote OS based on Port根据端口识别远程操作系统
【发布时间】:2013-10-13 20:06:12
【问题描述】:

我需要找到安装在远程机器上的操作系统类型。 我知道,我可以使用像 NMap 这样的操作系统指纹工具来检测远程机器的操作系统特定细节。 但我不能使用这样的工具,因为存在一些许可问题。 我需要实现自己的逻辑来检测操作系统。 在我的搜索中,我找到了一个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();
}
}

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

【问题讨论】:

  • 请不要在不同的堆栈交换网站上cross-post。请删除其中一个问题。
  • 是的,我做到了!

标签: linux windows operating-system port


【解决方案1】:

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

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

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

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

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

进一步阅读:

【讨论】:

    猜你喜欢
    • 2016-06-08
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2017-10-10
    相关资源
    最近更新 更多