Onvif协议做安防监控的人应该都很熟悉,它广泛被用在各种安防设备中,比如IPC、DVR、NVR。在局域网中发现IPC设备很多就是基于Onvif协议实现的。本文章给大家介绍QuickGBLink开源的一个工具,该工具能够通过Onvif的设备发现将局域网内的Onvif IPC枚举出来,显示到界面的列表中,并且可以获得每个IPC设备的RTSP流地址。该工具界面截图如下:
1. Onvif搜索设备的原理
Onvif客户端向网段内固定的某个组播地址发送一段广播报文,这个组播地址就是:239.255.255.250,端口:3702。而Onvif服务端(响应消息的设备)在固定端口上监听,接收到广播消息之后向发送者回复消息,回复的消息里返回设备自己的IP、UUID、EP Address、Type等,最重要的会返回设备的Device Service Address,格如:http://192.168.0.64:8099/onvif/device_service ,此地址就是为设备提供Onvif服务的服务地址。
2. 报文发送和接收
Onvif客户端向局域网内固定组播组发送的广播报文:
<?xml version="1.0" encoding="utf-8"?>
<Envelope xmlns:dn="http://www.onvif.org/ver10/network/wsdl"
xmlns="http://www.w3.org/2003/05/soap-envelope">
<Header>
<wsa:MessageID xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
uuid:25862dc4-4866-42a9-87a7-edcf2918ab10
</wsa:MessageID>
<wsa:To xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
urn:schemas-xmlsoap-org:ws:2005:04:discovery
</wsa:To>
<wsa:Action xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe
</wsa:Action>
</Header>
<Body>
<Probe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/ws/2005/04/discovery">
<Types>dn:NetworkVideoTransmitter</Types>
<Scopes />
</Probe>
</Body>
</Envelope>
Onvif服务端回复的