我正在尝试弄清楚是否有办法在不同的网络上进行非侵入式测试,以查看路由器上是否启用了通用即插即用 (nPnP)。即路由器上是否实现了 Internet 网关设备配置文件?我正在考虑进行网页测试,但没有任何下载的可执行文件...(我不想让系统管理员和 IT 人员感到恐惧!)
网络内的用户会在浏览器中打开一个链接,然后页面上的 JavaScript 通过发现消息检查 UDP。我见过的唯一参考关于这种可能性
当支持 UPnP 的设备加入网络并想要知道网络上有哪些 UPnP 服务时,它会通过 UDP 协议向端口 1900 上的多播地址 239.255.255.250 发送一条发现消息。此消息包含一个标头,类似于 HTTP 请求。此协议有时称为 HTTPU(基于 UDP 的 HTTP):
M-SEARCH * HTTP/1.1 HOST: 239.255.255.250:1900 MAN: ssdp:discover MX: 10 ST: ssdp:all
所有其他 UPnP 设备或程序都需要通过向设备发送类似消息来响应此消息,使用 UDP 单播,宣布设备或程序实现的 UPnP 配置文件。一个有趣的怪癖:它使用 UDP 单播发送回发送设备发现消息的端口。对于它实现的每个配置文件,都会发送一条消息:
HTTP/1.1 200 OK CACHE-CONTROL:max-age=1800 EXT: LOCATION:http://10.0.0.138:80/IGD.xml SERVER:SpeedTouch 510 4.0.0.9.0 UPnP/1.0 (DG233B00011961) ST:urn:schemas-upnp-org:service:WANPPPConnection:1 USN:uuid:UPnP-SpeedTouch510::urn:schemas-upnp-org:service:WANPPPConnection:1
我知道如何通过浏览器中的 JavaScript 创建套接字和更常见的通信形式 (http),但不确定如何通过 UDP 进行通信。有人有什么想法吗?有人知道目前存在的 uPnP 配置测试工具吗?
我在 StackOverflow 上找到了一些回复,但它们都相当悲观。例如这里