NetClaw - 网络探测版
约 944 字大约 3 分钟
2026-03-07
纯 Shell 脚本 Agent,专注网络探测和局域网扫描的轻量级工具。
核心特性
纯 Shell
- 纯 Bash/Shell 脚本
- 无需额外依赖
- 极致轻量
- 快速运行
网络探测
- 主机发现
- 端口扫描
- 服务识别
- 网络拓扑
局域网扫描
- IP 扫描
- 设备识别
- MAC 地址查询
- 厂商识别
自动化
- 定时任务
- 批量扫描
- 报告生成
- 告警通知
快速开始
安装
# 下载脚本
git clone https://github.com/netclaw/netclaw.git
cd netclaw
# 添加执行权限
chmod +x netclaw.sh
# 创建符号链接
sudo ln -s $(pwd)/netclaw.sh /usr/local/bin/netclaw使用
# 扫描局域网
netclaw scan lan
# 扫描指定 IP 段
netclaw scan 192.168.1.0/24
# 端口扫描
netclaw port 192.168.1.1
# 服务识别
netclaw service 192.168.1.1脚本结构
核心脚本
#!/bin/bash
# NetClaw - 网络探测工具
# 主机发现
discover_hosts() {
local network=$1
echo "扫描网络: $network"
for ip in $(seq 1 254); do
local host="${network%.*}.$ip"
if ping -c 1 -W 1 "$host" &>/dev/null; then
echo "[+] 发现主机: $host"
fi
done
}
# 端口扫描
scan_ports() {
local host=$1
local ports=${2:-"21,22,23,25,53,80,443,3306,3389,8080"}
echo "扫描端口: $host"
IFS=',' read -ra PORTS <<< "$ports"
for port in "${PORTS[@]}"; do
if timeout 1 bash -c "echo >/dev/tcp/$host/$port" 2>/dev/null; then
echo "[+] 端口 $port 开放"
fi
done
}
# 主命令处理
case "$1" in
scan)
discover_hosts "$2"
;;
port)
scan_ports "$2" "$3"
;;
service)
identify_service "$2"
;;
*)
echo "用法: netclaw {scan|port|service} [参数]"
;;
esac高级扫描
# TCP SYN 扫描(需要 root)
syn_scan() {
local host=$1
local ports=$2
for port in $(seq 1 $ports); do
timeout 0.2 bash -c "echo >/dev/tcp/$host/$port" 2>/dev/null \
&& echo "[+] 端口 $port 开放"
done
}
# 服务版本识别
detect_service() {
local host=$1
local port=$2
# 获取 banner
local banner=$(echo "" | nc -w 3 "$host" "$port" 2>/dev/null)
case "$port" in
22)
echo "SSH: $(echo "$banner" | head -1)"
;;
80|443)
echo "HTTP: $(echo "$banner" | grep -i server | head -1)"
;;
3306)
echo "MySQL: $(echo "$banner" | head -1)"
;;
esac
}功能列表
网络探测
局域网功能
自动化
使用示例
基本扫描
# 扫描当前局域网
$ netclaw scan lan
[+] 发现主机: 192.168.1.1
[+] 发现主机: 192.168.1.100
[+] 发现主机: 192.168.1.101
# 扫描指定网段
$ netclaw scan 10.0.0.0/24
[+] 发现主机: 10.0.0.1
[+] 发现主机: 10.0.0.10端口扫描
# 扫描常见端口
$ netclaw port 192.168.1.1
[+] 端口 22 开放 (SSH)
[+] 端口 80 开放 (HTTP)
[+] 端口 443 开放 (HTTPS)
# 扫描所有端口
$ netclaw port 192.168.1.1 1-1024
[+] 端口 22 开放
[+] 端口 80 开放
...服务识别
$ netclaw service 192.168.1.1
SSH: OpenSSH 8.2
HTTP: Server: nginx/1.18.0高级功能
批量扫描
#!/bin/bash
# 批量扫描多个目标
TARGETS=(
"192.168.1.0/24"
"10.0.0.0/16"
"172.16.0.0/12"
)
for target in "${TARGETS[@]}"; do
echo "=== 扫描 $target ==="
netclaw scan "$target"
done定时任务
# 添加到 crontab
crontab -e
# 每天凌晨 2 点扫描
0 2 * * * /usr/local/bin/netclaw scan 192.168.1.0/24 >> /var/log/netclaw.log报告生成
# 生成 HTML 报告
netclaw report --format html --output scan_report.html
# 生成 JSON 报告
netclaw report --format json --output scan_report.json适用场景
推荐使用
- 网络管理: 监控局域网设备
- 安全审计: 发现暴露的服务
- 故障排查: 检查网络连通性
- 渗透测试: 信息收集阶段
与其他工具对比
| 特性 | NetClaw | Nmap | Masscan |
|---|---|---|---|
| 语言 | Shell | C | C |
| 依赖 | 无 | libpcap | libpcap |
| 速度 | 慢 | 中等 | 快 |
| 功能 | 基础 | 完整 | 端口扫描 |
相关链接
- GitHub: netclaw/netclaw
- 文档: 使用文档