8.1kā
by florianbeer
network-scanner ā OpenClaw Skill
network-scanner is an OpenClaw Skills integration for data analytics workflows. Scan networks to discover devices, gather MAC addresses, vendors, and hostnames. Includes safety checks to prevent accidental scanning of public networks.
Skill Snapshot
| name | network-scanner |
| description | Scan networks to discover devices, gather MAC addresses, vendors, and hostnames. Includes safety checks to prevent accidental scanning of public networks. OpenClaw Skills integration. |
| owner | florianbeer |
| repository | florianbeer/network-scanner |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @florianbeer/network-scanner |
| last updated | Feb 7, 2026 |
Maintainer

name: network-scanner description: Scan networks to discover devices, gather MAC addresses, vendors, and hostnames. Includes safety checks to prevent accidental scanning of public networks. homepage: https://clawhub.com/skills/network-scanner metadata: openclaw: emoji: "š" requires: bins: ["nmap", "dig"] tags: - network - discovery - devices - nmap - security
Network Scanner
Discover and identify devices on local or remote networks using nmap. Gathers IP addresses, hostnames (via reverse DNS), MAC addresses, and vendor identification.
Safety First: Includes built-in protection against accidentally scanning public IP ranges or networks without proper private routing ā preventing abuse reports from hosting providers.
Requirements
nmap- Network scanning (apt install nmaporbrew install nmap)dig- DNS lookups (usually pre-installed)sudoaccess recommended for MAC address discovery
Quick Start
# Auto-detect and scan current network
python3 scripts/scan.py
# Scan a specific CIDR
python3 scripts/scan.py 192.168.1.0/24
# Scan with custom DNS server for reverse lookups
python3 scripts/scan.py 192.168.1.0/24 --dns 192.168.1.1
# Output as JSON
python3 scripts/scan.py --json
Configuration
Configure named networks in ~/.config/network-scanner/networks.json:
{
"networks": {
"home": {
"cidr": "192.168.1.0/24",
"dns": "192.168.1.1",
"description": "Home Network"
},
"office": {
"cidr": "10.0.0.0/24",
"dns": "10.0.0.1",
"description": "Office Network"
}
},
"blocklist": [
{
"cidr": "10.99.0.0/24",
"reason": "No private route from this host"
}
]
}
Then scan by name:
python3 scripts/scan.py home
python3 scripts/scan.py office --json
Safety Features
The scanner includes multiple safety checks to prevent accidental abuse:
- Blocklist ā Networks in the
blocklistconfig array are always blocked - Public IP check ā Scanning public (non-RFC1918) IP ranges is blocked
- Route verification ā For ad-hoc CIDRs, verifies the route uses private gateways
Trusted networks (configured in networks.json) skip route verification since you've explicitly approved them.
# Blocked - public IP range
$ python3 scripts/scan.py 8.8.8.0/24
ā BLOCKED: Target 8.8.8.0/24 is a PUBLIC IP range
# Blocked - in blocklist
$ python3 scripts/scan.py 10.99.0.0/24
ā BLOCKED: 10.99.0.0/24 is blocklisted
# Allowed - configured trusted network
$ python3 scripts/scan.py home
ā Scanning 192.168.1.0/24...
Commands
# Create example config
python3 scripts/scan.py --init-config
# List configured networks
python3 scripts/scan.py --list
# Scan without sudo (may miss MAC addresses)
python3 scripts/scan.py home --no-sudo
Output Formats
Markdown (default):
### Home Network
*Last scan: 2026-01-28 00:10*
| IP | Name | MAC | Vendor |
|----|------|-----|--------|
| 192.168.1.1 | router.local | AA:BB:CC:DD:EE:FF | Ubiquiti |
| 192.168.1.100 | nas.local | 11:22:33:44:55:66 | Synology |
*2 devices found*
JSON (--json):
{
"network": "Home Network",
"cidr": "192.168.1.0/24",
"devices": [
{
"ip": "192.168.1.1",
"hostname": "router.local",
"mac": "AA:BB:CC:DD:EE:FF",
"vendor": "Ubiquiti"
}
],
"scanned_at": "2026-01-28T00:10:00",
"device_count": 2
}
Use Cases
- Device inventory: Keep track of all devices on your network
- Security audits: Identify unknown devices
- Documentation: Generate network maps for documentation
- Automation: Integrate with home automation to detect device presence
Tips
- Use
sudofor accurate MAC address detection (nmap needs privileges for ARP) - Configure your local DNS server for better hostname resolution
- Add configured networks to skip route verification on every scan
- Add networks you can't reach privately to the blocklist to prevent accidents
- Extend
MAC_VENDORSin the script for better device identification
No README available.
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- `nmap` - Network scanning (`apt install nmap` or `brew install nmap`) - `dig` - DNS lookups (usually pre-installed) - `sudo` access recommended for MAC address discovery
Configuration
Configure named networks in `~/.config/network-scanner/networks.json`: ```json { "networks": { "home": { "cidr": "192.168.1.0/24", "dns": "192.168.1.1", "description": "Home Network" }, "office": { "cidr": "10.0.0.0/24", "dns": "10.0.0.1", "description": "Office Network" } }, "blocklist": [ { "cidr": "10.99.0.0/24", "reason": "No private route from this host" } ] } ``` Then scan by name: ```bash python3 scripts/scan.py home python3 scripts/scan.py office --json ```
FAQ
How do I install network-scanner?
Run openclaw add @florianbeer/network-scanner in your terminal. This installs network-scanner into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/florianbeer/network-scanner. Review commits and README documentation before installing.
