有什么方法可以在不使用 SNMP 的情况下检测所连接主机设备的软件版本或内核版本

Is there any way to detect Software Version OR Kernel Version of connected host devices without using SNMP

我的问题正是标题所说的,有没有办法在不使用 SNMP 的情况下检测连接的主机设备的软件版本或内核版本?我已经在 iOS(swift) 中使用 SNMP 获得了主机设备的软件版本。但这需要在主机设备中启用 snmp,我不想那样工作,我想像其他 LANScanner 一样获取该信息获取其他信息,如主机设备的 ip、名称和 mac 地址而不在主机设备中启用任何功能,就像这个例子一样,这个扫描器 (https://github.com/mavris/MMLanScan) 获取名称、设备类型和 mac 地址等信息。我可以更改此库以获得软件或内核版本吗?如果是,一点指导将非常有帮助。谢谢

首先也是最重要的:iOS 11 removed the ability for applications to view MAC addresses at all,因此该库不再能够获取 IP 地址以外的任何有关网络设备的信息。

也就是说:

can i change this library to get the software or kernel version?

不,因为那是不可能的。

您正在查看的 MMLanScan 库使用 MAC 地址来确定设备的制造商。这是可能的,因为 MAC 地址的前三个八位字节标识了制造商。 MAC 地址不包含有关设备上当前 运行 软件的任何信息 -- 毕竟,它是一个固定标识符,无法更改以反映软件的变化!

没有普遍适用的方法来获取网络设备上的软件 运行 版本。 SNMP 是我能想到的唯一标准方法,而且,正如您所发现的,默认情况下大多数消费设备上不存在代理。