OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  network-scanner:扫描网络以发现设备并收集 MAC 地址

network-scanner:扫描网络以发现设备并收集 MAC 地址

 
  database ·  2026-02-17 02:29:08 · 3 次点击  · 0 条评论  

名称: network-scanner
描述: 扫描网络以发现设备、收集MAC地址、厂商信息和主机名。包含安全检查,防止意外扫描公共网络。
主页: https://clawhub.com/skills/network-scanner
元数据:
openclaw:
emoji: "🔍"
requires:
bins: ["nmap", "dig"]
tags:
- network
- discovery
- devices
- nmap
- security


网络扫描器

使用 nmap 发现和识别本地或远程网络上的设备。收集 IP 地址、主机名(通过反向 DNS 查询)、MAC 地址和厂商信息。

安全第一: 内置保护机制,防止意外扫描公共 IP 地址段或没有私有路由的网络,避免因误操作导致主机服务商发出滥用报告。

环境要求

  • nmap - 网络扫描工具 (apt install nmapbrew install nmap)
  • dig - DNS 查询工具(通常已预装)
  • 建议使用 sudo 权限以获取 MAC 地址

快速开始

# 自动检测并扫描当前网络
python3 scripts/scan.py

# 扫描指定的 CIDR 地址段
python3 scripts/scan.py 192.168.1.0/24

# 使用自定义 DNS 服务器进行反向查询
python3 scripts/scan.py 192.168.1.0/24 --dns 192.168.1.1

# 以 JSON 格式输出结果
python3 scripts/scan.py --json

配置

~/.config/network-scanner/networks.json 中配置命名网络:

{
  "networks": {
    "home": {
      "cidr": "192.168.1.0/24",
      "dns": "192.168.1.1",
      "description": "家庭网络"
    },
    "office": {
      "cidr": "10.0.0.0/24",
      "dns": "10.0.0.1",
      "description": "办公网络"
    }
  },
  "blocklist": [
    {
      "cidr": "10.99.0.0/24",
      "reason": "此主机无私有路由可达"
    }
  ]
}

然后通过名称进行扫描:

python3 scripts/scan.py home
python3 scripts/scan.py office --json

安全特性

扫描器包含多重安全检查,防止意外滥用:

  1. 阻止列表 — 配置在 blocklist 数组中的网络始终被阻止扫描
  2. 公共 IP 检查 — 阻止扫描公共(非 RFC1918)IP 地址段
  3. 路由验证 — 对于临时指定的 CIDR,会验证其路由是否使用私有网关

受信任网络(在 networks.json 中配置)会跳过路由验证,因为你已明确批准它们。

# 被阻止 - 公共 IP 地址段
$ python3 scripts/scan.py 8.8.8.0/24
❌ 已阻止:目标 8.8.8.0/24 是公共 IP 地址段

# 被阻止 - 在阻止列表中
$ python3 scripts/scan.py 10.99.0.0/24
❌ 已阻止:10.99.0.0/24 在阻止列表中

# 允许 - 已配置的受信任网络
$ python3 scripts/scan.py home
✓ 正在扫描 192.168.1.0/24...

命令

# 创建示例配置文件
python3 scripts/scan.py --init-config

# 列出已配置的网络
python3 scripts/scan.py --list

# 不使用 sudo 进行扫描(可能无法获取 MAC 地址)
python3 scripts/scan.py home --no-sudo

输出格式

Markdown(默认):

### 家庭网络
*最近扫描时间:2026-01-28 00:10*

| IP | 主机名 | MAC | 厂商 |
|----|------|-----|--------|
| 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 台设备*

JSON (--json):

{
  "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
}

应用场景

  • 设备清单:跟踪网络上的所有设备
  • 安全审计:识别未知设备
  • 文档生成:为网络文档生成拓扑图
  • 自动化集成:与家庭自动化系统集成,检测设备在线状态

使用建议

  • 使用 sudo 以获取准确的 MAC 地址(nmap 需要权限进行 ARP 查询)
  • 配置本地 DNS 服务器以获得更好的主机名解析效果
  • 将常用网络添加到配置中,避免每次扫描都进行路由验证
  • 将无法通过私有路由访问的网络添加到阻止列表,防止误操作
  • 在脚本中扩展 MAC_VENDORS 字典以提升设备识别准确度
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor