HostScanSharp 是一个跨平台的主机扫描、ARP 工具和数据包分析工具集,基于 .NET 10、SharpPcap 和 PacketDotNet 实现。
仓库包含两个可运行项目:
HostScanSharp:Avalonia 桌面 GUI 程序,适合交互式扫描、抓包、查看和发送数据包。HostScanSharpCli:控制台 CLI 程序,适合在终端、脚本、远程 Shell 和自动化场景中使用。
两个项目复用同一套网络核心逻辑,支持 Windows、Linux 和 macOS。
- 主机扫描:扫描单个 IPv4 或 IPv4 地址段,显示 IP、MAC、主机名和 TTL。
- 网卡枚举:列出 SharpPcap/libpcap 可用的抓包网卡、IPv4、网关和 MAC。
- ARP 攻击:构造并发送 ARP 欺骗数据帧,支持发送到网关和靶机、仅网关、仅靶机三种模式。
- 数据包监听:通过 ARP 欺骗监听靶机流量,支持转发靶机流量,尽量不影响靶机正常上网,并保存为 pcap。
- 普通抓包:选择网卡在线抓包,支持 BPF 过滤规则,保存为 pcap。
- Pcap 浏览:打开 pcap/pcapng 文件,分页浏览数据包摘要,支持显示过滤。
- 数据包详情:查看 Ethernet、ARP、IP、TCP、UDP 等协议字段。
- 十六进制查看:查看任意文件或数据包字节内容,支持文本解码。
- UDP 发送:把文本、十六进制或文件内容作为 UDP 数据发送到指定地址和端口。
- 安装 .NET 10 SDK。
- 安装 Npcap。
- 抓包、发包、ARP 攻击和 ARP 监听通常需要管理员权限。
- 安装 .NET 10 SDK。
- 安装 libpcap,例如 Debian/Ubuntu:
sudo apt install libpcap0.8- 抓包、发包、ARP 攻击和 ARP 监听通常需要 root 权限,或给可执行文件配置对应网络能力。
- 安装 .NET 10 SDK。
- 使用系统 libpcap。
- 抓包、发包、ARP 攻击和 ARP 监听通常需要管理员权限。
构建整个解决方案:
dotnet build .\HostScanSharp.slnx也可以分别构建:
dotnet build .\HostScanSharp\HostScanSharp.csproj
dotnet build .\HostScanSharpCli\HostScanSharpCli.csprojdotnet run --project .\HostScanSharp\HostScanSharp.csprojGUI 程序包含以下主要窗口:
- 主机扫描器:输入 IP 或 IP 段后扫描在线主机。
- ARP 攻击:选择网卡、网关、靶机和发送目标模式后发送 ARP 欺骗包。
- 数据包监听:选择靶机后通过 ARP 欺骗监听流量,转发数据并保存 pcap。
- 抓包工具:普通网卡抓包、打开 pcap、分页查看、显示过滤、查看包详情。
- 十六进制查看器:打开任意文件或数据包内容,查看 hex 和文本。
- UDP 发送:把当前字节内容发送为 UDP 数据包。
查看帮助:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- help列出网卡:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- adapters扫描主机:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- scan --range 192.168.1.1-192.168.1.254普通抓包:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- capture -a 0 --out traffic.pcap --filter "tcp" --seconds 30浏览 pcap:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- pcap --file traffic.pcap --page-size 50使用显示过滤浏览 pcap:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- pcap --file traffic.pcap --display-filter "proto:tcp ip:192.168.1.144 port:443"查看单个数据包详情和十六进制内容:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- packet --file traffic.pcap -n 12 --hex --encoding UTF-8查看文件十六进制:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- hex --file traffic.pcap发送 UDP:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- udp --dst 192.168.1.20 --port 8000 --text hello --count 3ARP 攻击:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- arp-attack -a 0 --target 192.168.1.144 --mode bothARP 欺骗监听并保存 pcap:
dotnet run --project .\HostScanSharpCli\HostScanSharpCli.csproj -- arp-monitor -a 0 --target 192.168.1.144 --out victim.pcap --mode bothHostScanSharpCli <command> [options]
commands:
adapters 列出抓包网卡
scan --range <ip[-ip]> 扫描 IPv4 主机
capture --out <pcap> 在线抓包并保存 pcap
pcap --file <pcap> 浏览 pcap/pcapng
packet --file <pcap> -n <id> 查看单个包详情
hex --file <path> 查看文件十六进制内容
udp --dst <ip> --port <port> 发送 UDP 数据
arp-attack --target <ip> 发送 ARP 欺骗包
arp-monitor --target <ip> --out <pcap>
ARP 欺骗监听靶机流量并保存 pcap
常用参数:
-a, --adapter <index|text> 指定网卡,可使用 adapters 命令看到的索引
-f, --filter <bpf> BPF 抓包过滤规则
-s, --seconds <n> 运行 n 秒后停止
-n, --count <n> 抓包数量、UDP 发送次数或 ARP 发送轮数
--display-filter <expr> pcap 显示过滤,例如 proto:tcp ip:192.168.1.1 port:443
--gateway-ip <ip> 指定网关 IP
--gateway-mac <mac> 指定网关 MAC
--spoof-mac <mac> 指定伪装 MAC,默认使用当前网卡 MAC
--mode <both|gateway|target> ARP 发送目标模式,默认 both
--delay <ms> ARP 发送间隔,默认 10ms
ARP 攻击和 ARP 监听都支持 --mode:
both:同时向网关和靶机发送,适合完整双向欺骗和双向监听。gateway:仅向网关发送,减少直接触发靶机安全软件的概率,但监听完整性取决于网络环境。target:仅向靶机发送,适合只需要影响靶机侧 ARP 缓存的场景。
GUI 中对应为“发送目标”下拉框。
GUI 和 CLI 的离线显示过滤支持多个空格分隔的条件,所有条件同时满足才显示。
示例:
proto:tcp
ip:192.168.1.144
src:192.168.1.144
dst:43.133.215.197
port:443
sport:49669
dport:8787
len:1478
也可以输入普通关键字,程序会在协议、IP、端口、长度、序号和时间字段中匹配。
HostScanSharp/
HostScanSharp/ Avalonia GUI 程序
HostScanSharpCli/ 控制台 CLI 程序
HostScanSharp.sln Visual Studio 解决方案
HostScanSharp.slnx .NET 解决方案文件
核心网络能力位于 GUI 项目的 Models、Services、Utilities 目录。CLI 项目通过编译链接复用这些源码,因此两端行为保持一致。
抓包、ARP 攻击、ARP 欺骗监听和数据包发送功能只应在你拥有授权的网络中使用。
这些功能可能导致网络中断、触发安全软件告警或违反网络使用规范。使用前请确认你有明确授权,并优先在隔离测试网络中验证。