RLabs-Inc/wifikit
GitHub: RLabs-Inc/wifikit
一款基于 Rust 的 macOS 原生 WiFi 渗透测试工具,解决 Apple Silicon 上无原生安全工具的问题。
Stars: 10 | Forks: 1
```
╱ ╱ ╱ ╲ ╲ ╲
╱ ╱ ╲ ╲
╱ ╲
●
██╗ ██╗ ██╗ ███████╗ ██╗ ██╗ ██╗ ██╗ ████████╗
██║ ██║ ██║ ██╔════╝ ██║ ██║ ██╔╝ ██║ ╚══██╔══╝
██║ █╗ ██║ ██║ █████╗ ██║ █████╔╝ ██║ ██║
██║███╗██║ ██║ ██╔══╝ ██║ ██╔═██╗ ██║ ██║
╚███╔███╔╝ ██║ ██║ ██║ ██║ ██╗ ██║ ██║
╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
```
# wifikit
macOS 的 WiFi 渗透测试工具包。纯 Rust 编写。无内核扩展,无 aircrack-ng,无虚拟机。
插入 USB 适配器,运行 `wifikit`,你便拥有一个完整的渗透测试实验室——扫描器、10 种攻击引擎、数据包捕获、握手导出——全部在一个看起来不像 2004 年风格的终端 UI 中。
## 存在的意义
目前没有一款能在 Apple Silicon 上原生运行的 WiFi 渗透测试工具。零。
- **aircrack-ng**:仅限 Linux。监控模式需要修补过的内核驱动。
- **hashcat**:依赖 CUDA/OpenCL。不支持 Metal。Mac 上只能 CPU 跑。
- **Kismet/Wireshark**:仅被动嗅探。不支持注入与攻击。
- **Kali Linux 虚拟机**:虽然可行,但你需要运行虚拟机才能使用 USB 适配器。
wifikit 通过 USB 直接与 WiFi 芯片组通信,无需内核驱动。无需 root(USB 权限外)。纯用户态 Rust,从寄存器写入到 TUI 全部由 Rust 实现。
## 支持的功能
### 扫描器
- 在 2.4 GHz、5 GHz 和 6 GHz(WiFi 6E)间跳频扫描
- 支持 SSID、BSSID、信道、信号强度与安全检测的设备发现
- 客户端/站点跟踪与关联映射
- 主动探测或被动仅监听模式
- OUI 厂商查询(IEEE MA-L/MA-M/MA-S 数据库)
### 攻击模块
| 模块 | 功能 | 变体 |
|------|------|------|
| **PMKID** | 客户端免 WPA2 密钥提取——无需去认证,无干扰 | 主动关联 + EAPOL M1 捕获 |
| **WPS** | 通过 Pixie Dust(离线,秒级)、暴力破解或空 PIN 破解 | 3 种模式,锁检测防,MAC 轮换 |
| **DoS** | 拒绝服务——14 种类型,从精准打击到毁灭性攻击 | 去认证、去关联、认证/关联泛洪、信标泛洪、CTS/RTS、NAV 滥用、TKIP Michael、CSA、BSS 切换、电源节省 |
| ** rogue AP ** | 伪造接入点 | 开放、邪恶双胞胎、KARMA、MANA Loud、已知信标 |
| **EAP** | 企业网络攻击 | 邪恶双胞胎、凭证窃取(MSCHAPv2/LEAP/GTC/MD5)、EAP 降级、身份窃取、证书绕过 |
| **KRACK** | 密钥重装攻击(11 个 CVE) | 四次握手、组密钥、FT、TDLS、WNM——测试模式支持 PN 重用检测 |
| **FragAttacks** | 帧聚合/分段漏洞(12 个 CVE) | A-MSDU 注入、密钥混合、缓存中毒、明文注入等 |
| **WPA3** | Dragonblood SAE 攻击(8 种模式) | 定时侧信道、组降级、切换降级、SAE DoS、无效曲线、反射、反反堵塞 |
| **Fuzzer** | 协议模糊测试与崩溃检测 | 帧/IE/EAP 域,9 种变异策略,可重现的确定性 RNG |
### 捕获与导出
- 任意操作期间完整 pcap 捕获
- 4 次握手检测与捕获(WPA2、组密钥、FT、TDLS、WNM、SAE)
- 导出为 hashcat(.hc22000)、John、asleap 格式
- 直接输入 [metal-crack](https://github.com/RLabs-Inc/metal-crack) 在 Apple Silicon 上进行 GPU 破解
### TX 反馈
- 注入帧的 ACK/NACK 回显——确认数据包是否真正送达
- 速率优化(CCK 1M 测距、LDPC、STBC)
- TX 功率控制最高 31 dBm(依赖适配器)
## 支持的硬件
wifikit 包含完整的用户态驱动,以下芯片组无需内核模块或 airmon-ng——即插即用。
| 芯片组 | 标准 | 频段 | 状态 | 适配器 |
|--------|------|------|------|--------|
| **RTL8812BU** | 802.11ac | 2.4 + 5 GHz | 正式发布 | TP-Link Archer T4U V3、ASUS USB-AC53 Nano、Netgear A6100 |
| **RTL8812AU** | 802.11ac | 2.4 + 5 GHz | 正式发布 | Alfa AWUS036ACH/AC、TP-Link Archer T4U V1/V2 |
| **RTL8852AU** | 802.11ax(WiFi 6) | 2.4 + 5 GHz | 正式发布 | Comfast CF-953AX、BrosTrend AX4L、ASUS USB-AX56 |
| **MT7921AU** | 802.11ax(WiFi 6E) | 2.4 + 5 + 6 GHz | 正式发布 | Fenvi FU-AX1800、COMFAST CF-952AX、Netgear A8000 |
| **MT7612U** | 802.11ac | 2.4 + 5 GHz | 基础功能——接收正常,特性有限 | COMFAST CF-WU785AC、Netgear A6210 |
识别 40+ 具体的 USB VID/PID 组合。如果你的适配器使用这些芯片组之一,理论上应该可以工作。
**推荐首选适配器**:基于 RTL8812BU(TP-Link Archer T4U V3 或类似)。测试最充分、最稳定、广泛可用,约 20 美元。
## 编译与运行
### 依赖
- macOS(已测试 Apple Silicon,Intel 上应也可工作)
- Rust 工具链(`rustup`——稳定通道)
- 支持的 USB WiFi 适配器
### 编译与运行
```
git clone https://github.com/RLabs-Inc/wifikit.git
cd wifikit
cargo build --release
./target/release/wifikit
```
仅此而已,无需安装驱动、无需加载内核扩展、无需关闭 SIP。
### 固件
RTL8852AU 驱动需要固件文件(`rtl8852au_fw.bin`)包含在仓库中。其他芯片组的固件已嵌入或从片上 ROM 加载。
## 使用方式
wifikit 启动后会进入交互式 TUI。工作流如下:
1. **适配器选择**——自动检测已插入的适配器,选择一个(或同时使用多个)
2. **扫描器**——启动跳频扫描,构建 AP 与客户端地图
3. **攻击**——选择目标,选择攻击模块,开始
4. **捕获**——握手自动捕获,准备就绪后导出
### 常用命令
```
/scan Start/stop scanning
/attack Launch attack module (pmkid, wps, dos, ap, eap, krack, frag, wpa3, fuzz)
/export Export captures (hc22000, pcap, john, asleap)
/adapter Switch adapter or view adapter info
/spectrum MT7921AU spectrum analyzer (hardware MIB survey)
/help Show all commands
```
### 多适配器支持
wifikit 支持同时运行多个适配器。可用一个进行扫描,另一个进行攻击——扫描器不会停止。
## 尚未支持(或不完整)
以下功能缺失或未完成:
- **40/80/160 MHz 信道**——所有扫描与注入均为 20 MHz 模式。你能看到所有 AP,但依赖带宽的攻击受限。
- **KRACK 完整中间人模式**——测试模式可用(握手捕获 + 重放 + PN 检测),但基于双适配器的信道级中间人引擎尚未实现。
- **FragAttacks 中间人变体**——设计缺陷类 CVE(A-MSDU、密钥混合、缓存中毒)需要中间人引擎支持。
- **MAC 地址伪造**——部分实现。某些芯片组可用,其他为无操作。
- **WEP 攻击**——在分类学中已定义但未实现。毕竟现在是 2026 年。
- **MT7612U**——接收基本正常,但驱动极简,不建议用于严肃用途。
- **6 GHz 扫描**——MT7921AU 硬件支持,但接收较弱,相关研究仍在进行中。
- **Windows/Linux**——理论上可行(rusb 跨平台),但未测试也未构建。
## 架构
```
┌─────────────────────────────────────────────────┐
│ CLI (TUI) │
│ prism-rs framework + crossterm │
├─────────────────────────────────────────────────┤
│ Attack Engines (10) │
│ PMKID · WPS · DoS · AP · EAP · KRACK │
│ FragAttacks · WPA3 · Fuzz · Spectrum │
├─────────────────────────────────────────────────┤
│ Frame Pipeline │
│ FrameGate → Parse → FrameStore → Subscribers │
│ ↓ │
│ pcap writer │
├─────────────────────────────────────────────────┤
│ Scanner + Channel Hopper │
│ SharedAdapter (Arc) │
├─────────────────────────────────────────────────┤
│ Protocol Stack (802.11) │
│ IEEE 802.11 · WPA/RSN · EAP · WPS · SAE │
├─────────────────────────────────────────────────┤
│ Chip Drivers (userspace) │
│ RTL8812AU · RTL8812BU · RTL8852AU · MT7921AU │
├─────────────────────────────────────────────────┤
│ rusb (USB) │
└─────────────────────────────────────────────────┘
```
约 24.5 万行 Rust 代码。1,027 个测试。应用代码中零个 unsafe 块。纯 Rust 加密(RustCrypto)。
## 相关项目:metal-crack
[metal-crack](https://github.com/RLabs-Inc/metal-crack) 是配套工具首款在 Apple Metal GPU 上运行的 WPA/WPA2 密码破解器。使用 wifikit 捕获握手,用 metal-crack 破解。M1 Max 上峰值 200K PMK/s,无 CUDA、无 OpenCL,仅需 `swift build && swift run`。
## 贡献
这是一个 MVP(最小可行产品)。仍有大量改进空间:
- **新芯片组驱动**——如果你有 USB WiFi 适配器并拥有 Linux 驱动源码,很有可能可以移植
- **40/80 MHz 支持**——厂商驱动中已存在 PHY 寄存器序列,需要移植
- **中间人引擎**——支持 KRACK 完整模式与 FragAttacks 设计缺陷类 CVE
- **更好的 6 GHz 支持**——MT7921AU 硬件支持,但固件配置仍需完善
- **错误报告**——尤其来自尚未测试的硬件
如果你对 macOS 上的 WiFi 安全研究感兴趣,这可能是唯一一款无需 Linux 即可完成此类工作的工具。
## 法律声明
本工具仅供**授权的安全测试与研究使用**。未经明确授权的 WiFi 渗透测试在大多数司法管辖区属于违法行为。你需对自身使用方式负责。
## 许可证
MIT
标签:2.4GHz, 5GHz, 6GHz, Rust, SEO, USB无线网卡, WiFi, WiFi 6E, 云存储安全, 信道跳频, 关键词优化, 单二进制, 原生应用, 可视化界面, 命令行界面, 握手捕获, 攻击引擎, 无root, 无内核驱动, 无线侦察, 注入攻击, 用户态, 终端UI, 网络扫描, 网络流量审计, 通知系统