接入点如何确定客户端的操作系统?

接入点如何确定客户端的操作系统?

我注意到我的路由器(Asus RN-N12E_B1)在连接到它的客户端旁边显示了操作系统。

它如何确定这一点?通过用户代理?

还有哪些其他方法来收集有关所连接设备的信息?

答案1

有几种方法可以实现这一点,通常路由器会使用 1 到 3 种较简单的变体的组合。路由器/AP 通常没有足够的 CPU 马力来执行这项繁琐的工作。工作量实在太大。

无论如何:它不能保证一定有效。有些设备不会透露太多信息,可能含糊不清,有些设备甚至可能谎报其设备类型。

典型方法有:

  1. 对于 Apple 设备和许多手机/平板电脑,您可以通过 mac 地址中的供应商 ID 来判断。路由器只有一个映射表,将已知的供应商 ID 与相应的操作系统进行匹配。
  2. 许多设备以已知方式响应 Bonjour、PNRP、UPNP 或 NetBios 请求。只需发送几个探测并分析结果即可。由此,您通常可以确定它是 Windows(以及哪个版本)、OSX、Linux、打印机(以及哪个型号)、多媒体设备、电视等。
  3. 支持 SNMP 的设备通常会在响应 SNMP 查询时报告其操作系统、型号、版本等。从设备请求这些信息非常容易。
  4. 在许多情况下,设备向路由器发出 DHCP 请求的方式会泄露有关操作系统的信息。

您提到了“用户代理”。我猜您指的是浏览器用户代理字符串。这不太可能,因为这需要付出很多努力才能实现(路由器必须监控所有 HTTP 流量以查看是否存在用户代理字符串,这需要付出很多努力),并且只对以下客户端有用:a) 拥有 Web 浏览器;b) 用户未以不寻常的方式修改代理字符串;c) 用户使用标准浏览器而不是模糊的浏览器;d) 用户未使用“私人模式”浏览(通常不会显示正常的用户代理字符串)。
付出了很多努力却只得到很少的可靠信息。

相关内容