专业级异步 Python 网络欺骗套件
交互式菜单驱动 UI · 完整 IPv4/IPv6 覆盖 · Responder 风格投毒
仅限授权安全测试 — 作者 amibhai
免责声明: 本工具仅用于教育目的和授权安全审计。作者不承担任何责任,也不对本程序造成的任何误用或损害负责。请勿在您不拥有或未获得明确书面许可进行测试的网络上使用本工具。

v2.1 新增内容
| 模块 | 描述 |
|---|
attacks/deauth.py | 802.11 去认证 — 踢除客户端,捕获 WPA 握手 |
attacks/beacon_flood.py | 802.11 信标洪泛 — 伪造 SSID 风暴 |
attacks/llmnr_nbt.py | LLMNR + NBT-NS + mDNS 投毒(Responder 风格哈希捕获) |
attacks/icmpv6_ra.py | ICMPv6 路由器通告欺骗 — IPv6 网关劫持 |
attacks/ndp_spoof.py | IPv6 NDP 邻居通告投毒 — IPv6 ARP 欺骗 |
attacks/captive_portal.py | 强制门户(酒店/企业/咖啡馆/ISP 模板) |
attacks/wpad.py | WPAD 代理自动配置注入 |
core/platform_compat.py | macOS pf + Linux iptables + Windows netsh 抽象层 |
| 时序抖动 | 每个数据包突发附加 ±N 秒随机延迟以规避 IDS |
| GitHub Actions CI | pytest + mypy + 覆盖率门禁(≥80%),覆盖 Python 3.10–3.12 |
| Docker | docker build + docker-compose up 实现可移植部署 |
| pyproject.toml | 现代打包、mypy 严格配置、ruff 代码检查、覆盖率配置 |
功能概览
| 功能 | 详情 |
|---|
| 授权 | 交战规则范围文件 — 对任何超出范围或超出时间窗口的目标拒绝实际发包;无范围 ⇒ 仅试运行 |
| 架构 | 100% 异步 Python 3.10+ — 零 threading.Thread |
| UI | 动画 256 色横幅 + 编号菜单 + 面包屑导航 |
| 仪表盘 | PRISM 实时三面板 TUI(攻击日志 / 数据包统计 / 凭据) |
| 日志 | HMAC-SHA256 链式 structlog 审计追踪(防篡改) |
| 报告 | 每次会话后自动生成 JSON + Markdown + HTML |
| 语言 | 从 LANG 自动检测 + 手动切换(en、hi、ar、zh、fr、es) |
| 预检 | 17 项系统检查(范围、root、Python、依赖、接口、终端) |
| 清理 | 在 finally 中始终恢复 ARP/NDP 表、iptables/pf 规则 |
| 平台 | Linux(完整)· macOS(pf 后端)· Windows(Npcap,有限支持) |
交战规则(授权与范围控制)
真实交战由已签署的范围定义。本工具包在代码中强制执行这一点:它不会向任何未在开放交战窗口内被明确授权的目标发送单个数据包。 这就是专业红队工具与无差别脚本之间的区别。
工作原理
- 在 JSON(或 YAML)范围文件中一次性声明交战 — 参见
rules/engagement.example.json。
- 通过
SPOOF_TOOLKIT_SCOPE 环境变量将工具包指向该文件。
- 每个攻击模块在接触目标之前都会调用
Session.guard(...)。超出授权范围的目标 — 或已关闭的交战窗口 — 会引发 AuthorizationError,攻击将被拒绝。
- 未加载范围 ⇒ 仅试运行。 数据包仍会被构造和验证(非常适合培训、演示和 CI),但绝不会发送到网络上。
- 生效的授权 — 包括 SHA-256
fingerprint — 会被写入 HMAC 链式审计日志和每次会话报告中,因此报告能准确证明授权内容。
# 1. Copy and edit the template with your engagement details + authorized targets
cp rules/engagement.example.json rules/my-engagement.json
# 2. Point the toolkit at it (enables live fire for in-scope targets only)
export SPOOF_TOOLKIT_SCOPE=rules/my-engagement.json
# 3. Verify it loaded and the window is open
sudo -E python3 spoof_toolkit.py --preflight
范围文件字段
| 字段 | 含义 |
|---|
engagement_id | 必填 — 唯一参与标识符 |
authorized_by | 必填 — 授权测试的具名方(SOW / 工单) |
client、operator、contact、notes | 用于审计追踪的参与元数据 |
start、end | ISO-8601 时间窗口(若无偏移量则默认 UTC);任一边界可省略以表示开放式 |
authorized_networks | 可被攻击的 IPv4/IPv6 CIDR 或裸主机 |
authorized_macs / authorized_ssids / authorized_bssids | 用于 L2 / 无线目标的允许列表 |
denied_networks / denied_macs | 禁止打击列表 — 始终覆盖允许列表 |
设计上采用故障关闭(fail-closed):空的允许列表不授权任何目标,而位于 denied_networks 条目范围内的主机(例如位于原本已授权的 /24 内的域控制器)会被拒绝。
安全模式。 session.safe_mode = True 即使已加载有效范围也会强制试运行 — 用它来在不发送流量的情况下端到端演练一次参与。
攻击模块
第 2 / 3 层(以太网 · IP)
| 模块 | 文件 | 描述 |
|---|
| ARP 欺骗 | attacks/arp_spoof.py | 缓存投毒 — MitM、DoS、单向、仅网关 |
| DNS 欺骗 | attacks/dns_spoof.py | 响应注入 — 选择性、全欺骗、规则文件、NXDOMAIN |
| 组合 MitM | attacks/combined_mitm.py | 完整 ARP + DNS + 凭据捕获(asyncio.TaskGroup) |
| SSL 剥离 | attacks/ssl_strip.py | 透明 HTTPS 降级代理(Linux/macOS) |
| 流氓 DHCP | attacks/rogue_dhcp.py | 通过伪造 DHCP 服务器劫持默认网关(隐蔽) |
| LLMNR/NBT-NS | attacks/llmnr_nbt.py | 新增 — LLMNR + NBT-NS + mDNS 投毒,NTLMv2 哈希捕获 |
| WPAD | attacks/wpad.py | 新增 — 浏览器代理自动配置注入 |
| 强制门户 | attacks/captive_portal.py | 新增 — 带 4 个模板的伪造登录页面 |
802.11 无线
| 模块 | 文件 | 描述 |
|---|
| 去认证 | attacks/deauth.py | 新增 — 802.11 去认证(定向 + 广播),WPA 握手捕获 |
| 信标洪泛 | attacks/beacon_flood.py | 新增 — 用数百个伪造 SSID 洪泛空口 |
| AP 扫描器 | attacks/deauth.py | 新增 — 被动 802.11 信标扫描器 |
| 客户端扫描器 | attacks/deauth.py | 新增 — 检测与 AP 关联的客户端 |
IPv6
| 模块 | 文件 | 描述 |
|---|
| RA 欺骗 | attacks/icmpv6_ra.py | 新增 — ICMPv6 路由器通告(默认网关劫持) |
| NDP 欺骗 | attacks/ndp_spoof.py | 新增 — 邻居通告投毒(IPv6 的 ARP 等价物) |
| 完整 IPv6 MitM | (组合) | 新增 — RA + NDP + IPv6 转发以实现完整的 IPv6 拦截 |
快速开始
# 1. Install
sudo bash install.sh
# 1b. Authorize an engagement (required for live fire — otherwise dry-run only)
cp rules/engagement.example.json rules/my-engagement.json # then edit it
export SPOOF_TOOLKIT_SCOPE=rules/my-engagement.json
# 2. Run (interactive menu)
sudo -E spoof-toolkit
# 3. Or run directly
sudo python3 spoof_toolkit.py
# 4. Preflight check
sudo python3 spoof_toolkit.py --preflight
# 5. Launch PRISM dashboard directly
sudo python3 spoof_toolkit.py --prism
# 6. Docker (no install needed)
docker build -t spoof-toolkit .
docker run --rm -it --network host --cap-add NET_RAW --cap-add NET_ADMIN spoof-toolkit
主菜单 (v2.1)
╔══════════════════════════════════════════════════════════════════════════╗
║ SPOOF TOOLKIT v2.1 — INTERACTIVE MENU ║
║ ║
║ Layer 2 / 3 ║
║ 1. ARP Spoofing — cache poison, MitM, DoS, one-way ║
║ 2. DNS Spoofing — domain hijack, spoof-all, NXDOMAIN ║
║ 3. Combined MitM — ARP + DNS + credential capture chain ║
║ 4. SSL Strip — HTTPS downgrade interception ║
║ 5. Rogue DHCP — gateway hijack via fake DHCP server ║
║ ║
║ 802.11 Wireless ║
║ 6. 802.11 Wireless — deauth, beacon flood, AP/client scan [NEW] ║
║ 7. LLMNR / NBT-NS — Responder-style NTLMv2 hash capture [NEW] ║
║ 8. IPv6 Attacks — RA spoof + NDP poison (IPv6 MitM) [NEW] ║
║ 9. Captive Portal — fake login page + WPAD proxy inject [NEW] ║
║ ║
║ Infrastructure ║
║ A. Wireless Adapter — detect, monitor mode, channel hop ║
║ E. Evasion — timing jitter, MAC rotate [NEW] ║
║ P. PRISM Dashboard — live 3-panel TUI attack monitor ║
║ R. Session Report — generate JSON / Markdown / HTML ║
║ F. Preflight Check — verify all dependencies and privileges ║
║ L. Language — switch UI language ║
║ 0. Exit ║
╚══════════════════════════════════════════════════════════════════════════╝
项目结构