home / skills / brownfinesecurity / iothackbot / wsdiscovery
This skill helps you discover and enumerate WS-Discovery devices like ONVIF cameras on your network, returning endpoints, device details, and service locations.
npx playbooks add skill brownfinesecurity/iothackbot --skill wsdiscoveryReview the files below or copy the command above to add this skill to your agents.
---
name: wsdiscovery
description: WS-Discovery protocol scanner for discovering and enumerating ONVIF cameras and IoT devices on the network. Use when you need to discover ONVIF devices, cameras, or WS-Discovery enabled equipment on a network.
---
# Wsdiscovery - WS-Discovery Protocol Scanner
You are helping the user discover and enumerate devices using the WS-Discovery protocol (commonly used by ONVIF cameras and IoT devices) using the wsdiscovery tool.
## Tool Overview
Wsdiscovery implements the WS-Discovery protocol to discover network devices that support this standard. It's particularly useful for finding ONVIF cameras, network video recorders (NVRs), and other IoT devices that advertise themselves via WS-Discovery.
## Instructions
When the user asks to discover ONVIF devices, find network cameras, or scan for WS-Discovery devices:
1. **Understand the target**:
- Ask for the target hostname or IP address
- Determine if they want verbose output (full XML responses)
- Decide on output format
2. **Execute the scan**:
- Use the wsdiscovery command from the iothackbot bin directory
- Basic usage: `wsdiscovery <hostname_or_ip>`
- For verbose output: `wsdiscovery <hostname_or_ip> -v`
- For JSON output: `wsdiscovery <hostname_or_ip> --format json`
3. **Output formats**:
- `--format text` (default): Human-readable colored output with device details
- `--format json`: Machine-readable JSON
- `--format quiet`: Minimal output
## What It Discovers
The tool extracts and displays:
- IP addresses and ports
- Endpoint references (device UUIDs)
- Device types
- Manufacturer information
- Device names and models
- Hardware versions
- Serial numbers
- Firmware versions
- Location information
- Service endpoints (XAddrs) - URLs for device management
- Metadata versions
## Examples
Discover devices on a specific host:
```bash
wsdiscovery 192.168.1.100
```
Discover with full XML responses:
```bash
wsdiscovery 192.168.1.100 -v
```
Output device information as JSON:
```bash
wsdiscovery 192.168.1.100 --format json
```
Scan network broadcast address to find all devices:
```bash
wsdiscovery 239.255.255.250
```
## Important Notes
- WS-Discovery uses multicast/broadcast discovery
- Devices must support the WS-Discovery protocol to be found
- Common with ONVIF cameras, printers, and network media devices
- Service endpoints (XAddrs) can be used with onvifscan for further testing
- The tool parses ONVIF-specific scope information when available
This skill implements a WS-Discovery protocol scanner focused on discovering and enumerating ONVIF cameras and other WS-Discovery enabled IoT devices on a network. It locates devices that advertise via multicast, extracts identifying metadata, and can present results in human or machine-friendly formats. Use it to quickly inventory cameras, NVRs, and compatible network devices for assessment or follow-up testing.
The tool sends WS-Discovery probes (including multicast to 239.255.255.250) and listens for probe matches from devices that implement the protocol. It parses responses to extract IPs, ports, endpoint references (UUIDs), device types, manufacturer/model, firmware and serial data, service endpoints (XAddrs), and ONVIF scope metadata. Output can be plain text, verbose XML, or JSON for automation.
Do devices have to be on the same subnet?
Yes — WS-Discovery uses multicast/broadcast, so discovery typically requires running from the same network segment or through network infrastructure that forwards multicast.
What output should I use for automation?
Use --format json for machine-readable output; it contains IPs, XAddrs, UUIDs, and metadata suitable for scripts and scanners.