{
  "schemaVersion": "1.0",
  "item": {
    "slug": "network-scanner",
    "name": "Network Scanner",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/florianbeer/network-scanner",
    "canonicalUrl": "https://clawhub.ai/florianbeer/network-scanner",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/network-scanner",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network-scanner",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/scan.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/network-scanner"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/network-scanner",
    "agentPageUrl": "https://openagent3.xyz/skills/network-scanner/agent",
    "manifestUrl": "https://openagent3.xyz/skills/network-scanner/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/network-scanner/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Network Scanner",
        "body": "Discover and identify devices on local or remote networks using nmap. Gathers IP addresses, hostnames (via reverse DNS), MAC addresses, and vendor identification.\n\nSafety First: Includes built-in protection against accidentally scanning public IP ranges or networks without proper private routing — preventing abuse reports from hosting providers."
      },
      {
        "title": "Requirements",
        "body": "nmap - Network scanning (apt install nmap or brew install nmap)\ndig - DNS lookups (usually pre-installed)\nsudo access recommended for MAC address discovery"
      },
      {
        "title": "Quick Start",
        "body": "# Auto-detect and scan current network\npython3 scripts/scan.py\n\n# Scan a specific CIDR\npython3 scripts/scan.py 192.168.1.0/24\n\n# Scan with custom DNS server for reverse lookups\npython3 scripts/scan.py 192.168.1.0/24 --dns 192.168.1.1\n\n# Output as JSON\npython3 scripts/scan.py --json"
      },
      {
        "title": "Configuration",
        "body": "Configure named networks in ~/.config/network-scanner/networks.json:\n\n{\n  \"networks\": {\n    \"home\": {\n      \"cidr\": \"192.168.1.0/24\",\n      \"dns\": \"192.168.1.1\",\n      \"description\": \"Home Network\"\n    },\n    \"office\": {\n      \"cidr\": \"10.0.0.0/24\",\n      \"dns\": \"10.0.0.1\",\n      \"description\": \"Office Network\"\n    }\n  },\n  \"blocklist\": [\n    {\n      \"cidr\": \"10.99.0.0/24\",\n      \"reason\": \"No private route from this host\"\n    }\n  ]\n}\n\nThen scan by name:\n\npython3 scripts/scan.py home\npython3 scripts/scan.py office --json"
      },
      {
        "title": "Safety Features",
        "body": "The scanner includes multiple safety checks to prevent accidental abuse:\n\nBlocklist — Networks in the blocklist config array are always blocked\nPublic IP check — Scanning public (non-RFC1918) IP ranges is blocked\nRoute verification — For ad-hoc CIDRs, verifies the route uses private gateways\n\nTrusted networks (configured in networks.json) skip route verification since you've explicitly approved them.\n\n# Blocked - public IP range\n$ python3 scripts/scan.py 8.8.8.0/24\n❌ BLOCKED: Target 8.8.8.0/24 is a PUBLIC IP range\n\n# Blocked - in blocklist  \n$ python3 scripts/scan.py 10.99.0.0/24\n❌ BLOCKED: 10.99.0.0/24 is blocklisted\n\n# Allowed - configured trusted network\n$ python3 scripts/scan.py home\n✓ Scanning 192.168.1.0/24..."
      },
      {
        "title": "Commands",
        "body": "# Create example config\npython3 scripts/scan.py --init-config\n\n# List configured networks\npython3 scripts/scan.py --list\n\n# Scan without sudo (may miss MAC addresses)\npython3 scripts/scan.py home --no-sudo"
      },
      {
        "title": "Output Formats",
        "body": "Markdown (default):\n\n### Home Network\n*Last scan: 2026-01-28 00:10*\n\n| IP | Name | MAC | Vendor |\n|----|------|-----|--------|\n| 192.168.1.1 | router.local | AA:BB:CC:DD:EE:FF | Ubiquiti |\n| 192.168.1.100 | nas.local | 11:22:33:44:55:66 | Synology |\n\n*2 devices found*\n\nJSON (--json):\n\n{\n  \"network\": \"Home Network\",\n  \"cidr\": \"192.168.1.0/24\",\n  \"devices\": [\n    {\n      \"ip\": \"192.168.1.1\",\n      \"hostname\": \"router.local\",\n      \"mac\": \"AA:BB:CC:DD:EE:FF\",\n      \"vendor\": \"Ubiquiti\"\n    }\n  ],\n  \"scanned_at\": \"2026-01-28T00:10:00\",\n  \"device_count\": 2\n}"
      },
      {
        "title": "Use Cases",
        "body": "Device inventory: Keep track of all devices on your network\nSecurity audits: Identify unknown devices\nDocumentation: Generate network maps for documentation\nAutomation: Integrate with home automation to detect device presence"
      },
      {
        "title": "Tips",
        "body": "Use sudo for accurate MAC address detection (nmap needs privileges for ARP)\nConfigure your local DNS server for better hostname resolution\nAdd configured networks to skip route verification on every scan\nAdd networks you can't reach privately to the blocklist to prevent accidents\nExtend MAC_VENDORS in the script for better device identification"
      }
    ],
    "body": "Network Scanner\n\nDiscover and identify devices on local or remote networks using nmap. Gathers IP addresses, hostnames (via reverse DNS), MAC addresses, and vendor identification.\n\nSafety First: Includes built-in protection against accidentally scanning public IP ranges or networks without proper private routing — preventing abuse reports from hosting providers.\n\nRequirements\nnmap - Network scanning (apt install nmap or brew install nmap)\ndig - DNS lookups (usually pre-installed)\nsudo access recommended for MAC address discovery\nQuick Start\n# Auto-detect and scan current network\npython3 scripts/scan.py\n\n# Scan a specific CIDR\npython3 scripts/scan.py 192.168.1.0/24\n\n# Scan with custom DNS server for reverse lookups\npython3 scripts/scan.py 192.168.1.0/24 --dns 192.168.1.1\n\n# Output as JSON\npython3 scripts/scan.py --json\n\nConfiguration\n\nConfigure named networks in ~/.config/network-scanner/networks.json:\n\n{\n  \"networks\": {\n    \"home\": {\n      \"cidr\": \"192.168.1.0/24\",\n      \"dns\": \"192.168.1.1\",\n      \"description\": \"Home Network\"\n    },\n    \"office\": {\n      \"cidr\": \"10.0.0.0/24\",\n      \"dns\": \"10.0.0.1\",\n      \"description\": \"Office Network\"\n    }\n  },\n  \"blocklist\": [\n    {\n      \"cidr\": \"10.99.0.0/24\",\n      \"reason\": \"No private route from this host\"\n    }\n  ]\n}\n\n\nThen scan by name:\n\npython3 scripts/scan.py home\npython3 scripts/scan.py office --json\n\nSafety Features\n\nThe scanner includes multiple safety checks to prevent accidental abuse:\n\nBlocklist — Networks in the blocklist config array are always blocked\nPublic IP check — Scanning public (non-RFC1918) IP ranges is blocked\nRoute verification — For ad-hoc CIDRs, verifies the route uses private gateways\n\nTrusted networks (configured in networks.json) skip route verification since you've explicitly approved them.\n\n# Blocked - public IP range\n$ python3 scripts/scan.py 8.8.8.0/24\n❌ BLOCKED: Target 8.8.8.0/24 is a PUBLIC IP range\n\n# Blocked - in blocklist  \n$ python3 scripts/scan.py 10.99.0.0/24\n❌ BLOCKED: 10.99.0.0/24 is blocklisted\n\n# Allowed - configured trusted network\n$ python3 scripts/scan.py home\n✓ Scanning 192.168.1.0/24...\n\nCommands\n# Create example config\npython3 scripts/scan.py --init-config\n\n# List configured networks\npython3 scripts/scan.py --list\n\n# Scan without sudo (may miss MAC addresses)\npython3 scripts/scan.py home --no-sudo\n\nOutput Formats\n\nMarkdown (default):\n\n### Home Network\n*Last scan: 2026-01-28 00:10*\n\n| IP | Name | MAC | Vendor |\n|----|------|-----|--------|\n| 192.168.1.1 | router.local | AA:BB:CC:DD:EE:FF | Ubiquiti |\n| 192.168.1.100 | nas.local | 11:22:33:44:55:66 | Synology |\n\n*2 devices found*\n\n\nJSON (--json):\n\n{\n  \"network\": \"Home Network\",\n  \"cidr\": \"192.168.1.0/24\",\n  \"devices\": [\n    {\n      \"ip\": \"192.168.1.1\",\n      \"hostname\": \"router.local\",\n      \"mac\": \"AA:BB:CC:DD:EE:FF\",\n      \"vendor\": \"Ubiquiti\"\n    }\n  ],\n  \"scanned_at\": \"2026-01-28T00:10:00\",\n  \"device_count\": 2\n}\n\nUse Cases\nDevice inventory: Keep track of all devices on your network\nSecurity audits: Identify unknown devices\nDocumentation: Generate network maps for documentation\nAutomation: Integrate with home automation to detect device presence\nTips\nUse sudo for accurate MAC address detection (nmap needs privileges for ARP)\nConfigure your local DNS server for better hostname resolution\nAdd configured networks to skip route verification on every scan\nAdd networks you can't reach privately to the blocklist to prevent accidents\nExtend MAC_VENDORS in the script for better device identification"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/florianbeer/network-scanner",
    "publisherUrl": "https://clawhub.ai/florianbeer/network-scanner",
    "owner": "florianbeer",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/network-scanner",
    "downloadUrl": "https://openagent3.xyz/downloads/network-scanner",
    "agentUrl": "https://openagent3.xyz/skills/network-scanner/agent",
    "manifestUrl": "https://openagent3.xyz/skills/network-scanner/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/network-scanner/agent.md"
  }
}