wifit3:用纯Python跨平台审计USB无线网络
一个给安全人员用的跨平台USB Wi-Fi审计工具,纯Python自带驱动,不依赖aircrack-ng。
GitHub derv82/wifit3 更新 2026-09-26 分支 master 星标 922 分叉 87
Python Shell USB Wi-Fi审计 PyUSB Textual Linux/macOS/Windows WPA/WPA2/WPA3 GNU GPL v2.0

🧭 决策指南

适合,如果你

  • 你有README支持的USB网卡,并要在Linux、macOS或Windows上统一审计流程。
    README“Supported Hardware”要求至少一枚支持的USB无线网卡;“Why?”声明三平台运行一致。
  • 你需要多网卡同时抓包,并指定一枚网卡执行注入。
    README“Multi-Card Aggregation”明确支持多适配器抓包和专用注入网卡。
  • 你的测试覆盖WPA/WPA2握手、PMKID、WPS或WEP产物导出。
    README“Attacks & Captures”列出握手、PMKID、WPS Recovery Suite和WEP Suite,并支持.pcap与.hc22000。

不适合,如果你

  • 你没有Supported Hardware列表中的USB无线网卡。
    README两处写明“At least one supported USB wireless adapter is required”。
  • 你需要稳定版而不能接受v0.3.3的BETA状态。
    项目元数据将最新版本标为“v0.3.3 (BETA)”。
  • 你的环境禁止直接操作USB硬件寄存器或安装WinUSB、udev规则。
    README“License & Disclaimer”说明直接操作USB寄存器;“One-Time Driver Setup”说明会安装WinUSB或写入udev规则。
  • 你要审计不属于自有或明确授权范围的网络和设备。
    README免责声明限定只能用于自有或明确授权审计的网络和设备。

前置条件

  • 至少一枚Supported Hardware中的USB无线网卡;At least one supported USB wireless adapter is required.
  • 操作系统为Linux、macOS或Windows;Runs identically on Linux, macOS, and Windows.
  • 源码运行使用Astral uv,README命令为uv sync和uv run wifit3;Source execution uses Astral's uv with uv sync and uv run wifit3.
  • Linux首次配置涉及pkexec/sudo、udev和modprobe;Windows首次配置涉及UAC与WinUSB;macOS需要在授权对话框选择Allow;Linux setup involves pkexec/sudo, udev, and modprobe; Windows setup involves UAC and WinUSB; macOS requires selecting Allow in the authorization dialog.

第一步命令(README 原文)

uv sync

要注意

  • Linux卸载还要删除wifit3写入的udev与modprobe规则。
    README“Uninstalling”明确说明Linux会删除这些规则。
  • Windows卸载会移除WinUSB绑定并触发PnP重新扫描。
    README“Uninstalling”对Windows行为有明确说明。
  • macOS预构建程序运行前需处理quarantine属性。
    README“Installation & Running”给出xattr -d com.apple.quarantine命令。
  • 不同USB型号能力和限制需查看SUPPORTED-HARDWARE.md。
    README“Supported Hardware”链接到docs/SUPPORTED-HARDWARE.md的详细说明。

替代方案

  • wifite2:当你要使用README致谢部分提到的wifite2生态,而不是wifit3的内置USB迷你驱动时。
    README“Thank you, Linux!”
  • aircrack-ng:当现有流程依赖README明确列出的aircrack-ng工具,而不是wifit3的Zero Runtime Dependencies方案时。
    README“Why?”与“Thank you, Linux!”

材料未说明

  • README没有说明Linux、macOS和Windows的最低版本要求;Minimum supported versions for Linux, macOS, and Windows are not specified.
  • README没有给出各USB芯片的实际吞吐、扫描速度或多网卡数量上限;Actual throughput, scan speed, and multi-card limits are not specified.
  • README没有说明v0.3.3 BETA的已知缺陷、测试覆盖率或回归策略;Known defects, test coverage, and regression practices for v0.3.3 BETA are not specified.
  • README没有说明WPA3 EvilTwin功能在不同芯片和操作系统上的兼容矩阵;Compatibility of WPA3 EvilTwin across chipsets and operating systems is not specified.
  • README没有说明PyUSB、Textual及固件的具体版本要求;Exact version requirements for PyUSB, Textual, and firmware are not specified.
  • README没有量化首次驱动配置所需权限的最小范围;The minimum privilege scope required for first-time driver setup is not quantified.

💡 深度解析

6
不适合 我在 Windows 上使用 TP-Link TL-WN722N,但可能是 V1、V2 或 V3;在需要监听模式和帧注入时,我能否直接把这几个版本视为同一硬件?
适合读者: 使用 TP-Link TL-WN722N 或外观相同但硬件版本不同 USB 网卡的 Windows 安全研究人员

不适合直接视为同一硬件,因为 README 明确按芯片和硬件版本区分能力,V1 与 V2/V3 并不属于同一条支持记录。

  • Supported Hardware 将 TP-Link TL-WN722N V1 列在 Atheros AR9271 下,仅标注 2.4 GHz。
  • 同一列表将 TL-WN722N v2/v3 列在 Realtek RTL8188EUS 下,说明外观相同的不同版本使用了不同芯片。
  • 项目洞察明确指出,外观相同但硬件版本不同的适配器能力可能完全不同;监听、注入、频段和稳定性不能仅按商品名判断。
  • Windows 首次配置还会通过 UAC 为设备安装 WinUSB,设备绑定本身也会改变日常 Wi-Fi 使用方式。

因此,先核对底部标签、USB 枚举信息和 Supported Hardware 文档是硬性前提;不能因为同为 TL-WN722N 就假设功能一致。

  • README「Supported Hardware」:"Atheros AR9271 ... TP-Link TL-WN722N V1"
  • README「Supported Hardware」:"Realtek RTL8188EUS ... TP-Link TL-WN722N v2/v3"
  • 项目洞察 user_experience.common_pitfalls:"外观相同但芯片版本不同的设备...能力可能完全不同"
  • README「One-Time Driver Setup」:"Windows: Prompts once via UAC to install WinUSB for the device"
材料未说明:README 未提供 Windows 下 TL-WN722N 各硬件版本的监听、注入和稳定性对比。;README 未说明如何仅通过系统工具确认该设备的真实芯片型号。
适合 我需要在 Linux、Windows 和 macOS 之间保持一致的无线审计流程,并且手头有一块 README 支持的 USB 网卡;wifit3 是否比依赖 aircrack-ng 和 reaver 的工具链更适合?
适合读者: 需要在 Linux、Windows 和 macOS 之间保持一致审计流程,并已持有受支持 USB 网卡的无线安全审计人员

适合,前提是你的网卡确实属于支持列表,并且接受它直接接管 USB 设备的方式。

  • README 将项目定义为面向 Linux、Windows 和 macOS 的独立 USB Wi-Fi auditor,目标是跨平台运行一致。
  • 项目内置 Mini-Drivers,通过 USB bulk/control transfers 直接控制设备,绕过原生 Wi-Fi 栈,因此不依赖 aircrack-ng 或 reaver。
  • 功能集中在同一界面,包括扫描、AP/客户端识别、WPA/WPA2 握手、PMKID、WPS、WEP 和 pcap/hc22000 导出。
  • 代价是首次运行可能修改 Linux 的 udev/modprobe 配置,Windows 会安装 WinUSB;日常使用结束后需要按 README 的 Uninstall 流程恢复绑定。

因此,它适合跨平台、USB 直连的审计工作流,但不是普通 Wi-Fi 连接工具。

  • README「Why?」:"Runs identically on Linux, macOS, and Windows"
  • README「Why?」:"No aircrack-ng or reaver, just pure Python with PyUSB & Textual libraries"
  • README「How it Works: Mini-Drivers」:"directly control wireless devices over USB bulk and control transfers"
  • README「One-Time Driver Setup」与「Uninstalling」
uv sync
材料未说明:README 没有说明每种支持芯片在 Linux、Windows、macOS 上的功能是否完全一致。;README 没有给出不同操作系统和网卡组合的稳定性或性能基准。
视情况 我需要在 Windows 和 Linux 实验室主机上反复切换审计模式与日常 Wi-Fi,并要求测试后恢复原生驱动;wifit3 的设备恢复流程是否足够明确?
适合读者: 需要把 USB 网卡在审计模式与日常 Wi-Fi 之间切换,并要求测试后恢复 Windows 或 Linux 驱动绑定的实验室管理员

视情况,README 给出了明确的恢复步骤,但它依赖用户在拔出设备前正确执行 Uninstall,且项目直接操作硬件寄存器带来额外恢复风险。

  • Linux 首次运行会写入 udev 权限和 /etc/modprobe.d/ blocklists;Windows 会安装 WinUSB 绑定。
  • Uninstall 流程要求在启动页选择网卡、点击 Uninstall、接受提权提示,再拔出并重新插入设备。
  • README 说明 Linux 会删除 wifit3 的 udev/modprobe 规则,Windows 会卸载 WinUSB 并触发 PnP 重新扫描,使旧驱动重新附着。
  • 项目洞察提醒,未执行卸载就拔出或恢复日常使用,可能导致系统 Wi-Fi 暂时不可用;README 的免责声明也说明缺少内核保护机制。

所以流程本身足够操作化,但若实验室要求零恢复风险或无人值守切换,项目资料不足以支持这种承诺。

  • README「One-Time Driver Setup」:Linux 写入 udev/modprobe 配置;Windows 安装 WinUSB
  • README「Uninstalling」:"Click the `Uninstall` button" 后拔出并重新插入
  • README「Uninstalling」:"triggers a PnP device rescan (old driver reattaches)"
  • README「License & Disclaimer」:"operates directly on USB hardware registers without kernel guardrails"
材料未说明:README 未说明恢复失败时的手工回滚命令或自动修复工具。;README 未说明设备在异常拔出、程序崩溃或系统重启后的恢复成功率。
适合 我只在授权实验室中测试 WPA3/SAE 过渡模式,同时需要导出 WPA/WPA2 握手和 PMKID 文件;wifit3 是否覆盖这条验证链路?
适合读者: 在授权实验室测试 WPA3/SAE 过渡模式、需要导出 WPA/WPA2 握手或 PMKID 证据的渗透测试人员

适合做这条实验室验证链路,但不能把功能存在等同于对所有 AP 和客户端都能成功捕获。

  • Scanner 会跟踪 encryption suites 与 WPA3/SAE transition modes,可用于识别目标的过渡模式。
  • WPA/WPA2 功能支持被动嗅探、定向去认证、可破解配对验证,并导出 .pcap 与 .hc22000。
  • PMKID 功能同时支持主动关联收集和被动嗅探,并导出 .hc22000。
  • EvilTwin WPA3 Downgrade 流程通过 CSA、BTM 和去认证驱逐客户端,以捕获握手,README 明确说明支持单卡和多卡。

因此,项目功能与证据格式匹配你的需求;但项目洞察指出成功率仍受 AP 配置、客户端行为、信号质量和厂商实现影响,主动流程还可能造成服务中断或触发检测。

  • README「Real-time Scanner」:"tracks signal strength, encryption suites, WPA3/SAE transition modes"
  • README「WPA/WPA2 Handshakes」:"exports `.pcap` and `.hc22000` files"
  • README「PMKID Harvesting」:"Active association harvest and passive sniffing"
  • README「EvilTwin WPA3 Downgrade」:"via CSA, BTM, and de-auths"
uv run wifit3
材料未说明:README 未说明已验证的 AP、客户端或厂商型号范围。;README 未提供 WPA3 降级、握手捕获或 PMKID 收集的成功率数据。
适合 我维护 Python 项目,希望使用 uv 管理依赖、审查纯 Python 与少量 Shell 代码,并自行生成 PyInstaller 二进制;wifit3 的源码构建路径是否适合我?
适合读者: 维护 Python 项目、希望从源码构建可审计二进制的安全工具开发者

适合,尤其是你愿意承担 USB 驱动移植和固件来源审查,而不是只把它当作普通 Python CLI。

  • 项目主语言是 Python,另有少量 Shell;README 明确说明运行时依赖主要是 PyUSB 和 Textual。
  • 源码路径使用 Astral 的 uv,README 给出了依赖同步、运行和 PyInstaller 构建命令,生成物位于 dist/。
  • Mini-Drivers 位于 src/wifit3/chips/*,直接处理 USB bulk/control transfers;这使代码可审查,但也意味着错误可能影响设备状态。
  • 代码采用 GPLv2,固件 blob 按厂商许可重新分发;如果你的发布流程要求逐项核验许可证,这两部分不能只看 Python 源码。

它适合有 Python、uv 和 USB 调试能力的维护者;若团队只接受经过广泛验证的商用二进制,README 本身无法证明其成熟度。

  • 项目核心数据:main_language 为 Python;语言分布包含 Python 与 Shell
  • README「Why?」:"just pure Python with PyUSB & Textual libraries"
  • README「Option 2: Run from Source」与「Option 3: Build your own binary」
  • README「How it Works: Mini-Drivers」与「License & Disclaimer」
uv sync
材料未说明:README 未说明源码构建是否会自动锁定或验证固件 blob 的完整性。;项目数据没有提供测试覆盖率、构建可复现性或各芯片驱动的自动化测试结果。
视情况 我在实验室使用多块 USB 网卡,希望把信道拆分到不同适配器,并指定一块专用注入卡;wifit3 是否能满足这个多卡约束?
适合读者: 在实验室中使用两块或多块 USB 网卡,需要同时覆盖 2.4GHz、5GHz 并分离扫描与注入职责的无线审计人员

视情况,软件明确支持多卡聚合,但最终效果取决于具体芯片、频段和 USB/射频条件。

  • Features 章节提供 Multi-Card Aggregation,可同时从多个适配器捕获,并选择专用注入卡。
  • Real-time Scanner 支持 2.4GHz 与 5GHz 信道跳转,并在多卡场景下拆分信道。
  • 支持列表中既有仅 2.4GHz 的 Atheros AR9271、Realtek RTL8187L,也有支持双频的 MT7610U、MT7612U、MT7921AU 和多种 Realtek 芯片,因此混用时能力不会天然相同。
  • 项目洞察指出 USB 带宽、供电、天线位置、信道规划和设备冲突都会影响采集效果;增加网卡数量并不保证结果同步提升。

所以它能覆盖你的架构需求,但要先确认每块卡的 Supported Hardware 文档限制,而不能只按型号数量规划。

  • README「Features」:"Multi-Card Aggregation" 与 "pick a dedicated card to inject"
  • README「Features」:"2.4GHz & 5GHz channel-hopping (split for multi-cards)"
  • README「Supported Hardware」:Atheros AR9271 为 2.4 GHz;MediaTek MT7610U 为 2.4 / 5 GHz
  • 项目洞察 user_experience.common_pitfalls:USB 带宽、供电、天线、信道拆分与设备冲突
材料未说明:README 未给出不同多卡组合的最大稳定卡数或吞吐基准。;README 未说明多卡同时使用时各操作系统对 USB 带宽和设备调度的具体差异。

✨ 核心亮点

  • Linux、macOS、Windows三平台运行一致
  • 纯Python依赖PyUSB与Textual
  • 支持多网卡抓包与专卡注入
  • 扫描2.4GHz、5GHz与WPA3过渡模式
  • 必须连接至少一枚支持的USB网卡
  • 直接操作USB寄存器,缺少内核保护

🔧 工程化

  • 用内置Python迷你驱动绕过Linux内核与Windows NDIS。
  • Textual仪表盘显示信标、数据、注入和去认证速率。
  • 支持WPA/WPA2握手、PMKID、WPS与WEP捕获。
  • 预构建程序覆盖Windows、Linux和macOS运行方式。

⚠️ 风险

  • README警告直接操作USB硬件寄存器且无内核保护。
  • Linux首次运行会写入udev和modprobe规则。
  • Windows首次运行会通过UAC安装WinUSB绑定。
  • 功能依赖支持列表中的USB芯片与型号。
  • 最新版本仍标注为v0.3.3 BETA。

👥 适合谁?

  • 需要跨Linux、macOS、Windows审计USB Wi-Fi的工程师。
  • 拥有AR9271、MT7612U或RTL8812AU网卡的安全团队。
  • 需要PyUSB抓包、WPA握手和PMKID导出的测试人员。
  • 希望摆脱aircrack-ng与reaver运行时依赖的用户。