【问题标题】:telling Windows from Linux (via network)从 Linux 告诉 Windows(通过网络)
【发布时间】:2010-08-11 12:13:57
【问题描述】:
我正在研究某人如何检测另一台机器是在运行 Windows 还是 Linux,它是否在虚拟机中运行,是否在 NAT\proxy\VPN 后面等等。
我看到了一些有趣的工具,比如 p0f,它可以进行被动检测。
基本上,我知道 TCP 和其他底层协议在实现上存在差异,更不用说 Windows 而不是 Linux 上存在的应用程序级别的东西,但我找不到任何东西,更糟糕的是,我真的不知道该看什么术语在 Google 中。
您是否有链接或教程来解释如何检测以区分 Linux 和 Windows?
【问题讨论】:
标签:
windows
linux
networking
detection
browser-detection
【解决方案1】:
这不是我知识渊博的主题,但请尝试查找“TCP 堆栈指纹”并查看nmap 的源代码。我相信 nmap 能够使用堆栈指纹识别,这涉及测试 TCP 实现中的差异,以便尝试确定主机上的环境。
我没有大量使用 nmap,所以我不能保证它的实现质量或准确性,但源代码是可用的。
对于网络,网络浏览器之间的差异已被广泛记录。浏览器之间差异的一个示例是创建 XmlHttpRequest 对象的方式。通过尝试以不同方式实例化 XmLHttpObject 并测试哪些方式成功,您可能能够确定运行代码的浏览器或 JavaScript 引擎。
【解决方案4】:
Nmap -O 非常适合通过探测来检测系统操作系统。
p0f 是另一个可以设置为侦听器模式的工具,它可以检测与您建立连接的系统上的操作系统。