如何借助shell脚本通过目标计算机的IP来了解目标计算机正在使用的操作系统



不使用NMAP)当用户输入IP时,我使用TTL值来确定目标计算机上使用的操作系统。实际上,我不得不对Case语句中的TTL值进行硬编码。

所以我的问题是:

  1. TTL是我们了解正在使用的操作系统的唯一方法吗
  2. 如果TTL不是唯一的方法,那么您能建议/解释哪些其他方法可以用于根据输入的IP检查目标计算机上使用的操作系统吗
  3. 在网上搜索TTL表时,我发现许多操作系统都有相同的TTL值。那么,有什么方法可以指出确切的操作系统吗
  4. 有没有办法确定更多关于操作系统的信息,例如它是32位还是64位?如果是,哪些领域和依据是什么

以下是我使用TTL值来确定正在使用的操作系统的示例代码:

#!/bin/bash
echo "Enter IP to find it's OS"
read ip
a=`ping -c 1 $ip|grep -w "ttl" | cut -c 41-47 | tr -d ' '`
echo $a
case "$a" in
ttl=64) echo "Linux Based";;
*) echo "other";;
esac

您不能(可靠地)使用TTL来确定操作系统。例如,您可以使用sysctl net.ipv4.ip_default_ttl=32轻松更改Linux上的默认TTL。此外,正如您已经发现的,许多设备都使用相同的TTL。

为了有一个可靠的检测,你需要检查各种值来形成一个"指纹"。请参阅nmap关于操作系统检测的页面,了解可以用于此类指纹的值。

我工作的公司也为我们的一款产品编写了类似的操作系统检测,我们花了几个工作日的时间来实现和微调。如果你能避免的话,我不建议你自己做(除非你做这件事是为了好玩,因为你想学习一些东西)。如果您真的需要自己做这件事,您将需要访问各种设备进行测试,并阅读大量关于IP、TCP和ICMP的详细信息,以获取指纹数据。顺便说一句,我怀疑你是否可以使用bash和标准UNIX/Linux工具查询所需的字段。你需要进行原始套接字编程,或者需要使用一些第三方网络工具……在这种情况下,你还可以只使用nmap

相关内容

最新更新