news 2026/10/2 11:26:31

wifit3去认证帧构造源码解析:无ACK广播突发与MAC伪装的3个核心细节

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
wifit3去认证帧构造源码解析:无ACK广播突发与MAC伪装的3个核心细节

wifit3去认证帧构造源码解析:无ACK广播突发与MAC伪装的3个核心细节

【免费下载链接】wifit3Wifite but USB-only & cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3

wifit3 是一款跨平台、仅依赖 USB 无线网卡的 Wi-Fi 安全审计工具,内置纯 Python 无线协议栈,无需 aircrack-ng 即可构造注入 802.11 去认证帧(Deauthentication Frame)。本文带你读懂它的去认证帧构造源码:一帧字节如何拼装、无 ACK 的广播突发为何能"撒网"、MAC 伪装又是如何做到的——只需掌握 3 个核心细节。

一帧去认证报文长什么样

所有去认证帧都由 src/wifit3/dot11/deauth.py 中的build_deauth()构造,整帧仅 26 字节:帧控制字段(Deauth 子类型 0x0C)+ Duration/NAV 域 + 三个 MAC 地址 + 2 字节原因码。

源码中内置了一张标准原因码表(REASON_CODES),如7: "class3-from-nonassoc"、3: "deauth-leaving"。wifit3 主动去认时统一用原因码 7,而 PMKID 收割结束时发"离开"帧则用原因码 3,见 src/wifit3/campaigns/pmkid.py。

无ACK广播突发的秘密:NAV 置零 + 即发即忘

细节 1 藏在 src/wifit3/dot11/deauth.py 的deauth_nav_bytes():

  • 广播/组播目的地→ NAV = 0,因为ff:ff:ff:ff:ff:ff永远不会回 ACK;
  • 单播目的地→ NAV = 0x013A(约 314 µs),即 SIFS + 一个 1 Mbps 长前导 ACK 的占用时间,告诉周围设备"这段信道我预占了"。

芯片不会为监听模式注入的原始帧自动填 NAV,所以 wifit3 在帧里手工写入。随后 src/wifit3/wlan/interface.py 的deauth_broadcast()执行"广播突发":以目标 AP 的 MAC 为源,向广播地址连发 20 帧(BCAST_COUNT),每帧间隔 10ms,走send_no_wait()即发即忘通道——不等 ACK、不重传、不阻塞,最大化信道覆盖概率。

单播去认证:双向突击 + ACK 统计

细节 2 在deauth_client()(src/wifit3/wlan/interface.py):对每个客户端双向各发一帧——

  1. 伪装 AP 源 MAC → 发给客户端(客户端 ACK,RA 是被伪装的 AP MAC);
  2. 伪装客户端源 MAC → 发给 AP(AP ACK,RA 是被伪装的客户端 MAC)。

每轮调用send_until_ack(),驱动层通过enable_rx_acks()打开 ACK 计数(record_ack()只统计 RA 命中本次注入源 MAC 的控制帧),统计结果汇总进DeauthResult,界面上显示的client acks: x/y就来自这里,便于实时判断目标是否在线。

MAC伪装的四级能力模型

细节 3 是 src/wifit3/chips/driver.py 定义的FakeMacSupport枚举,把每款芯片的 MAC 伪装能力分为四级:

级别含义
SPOOFABLE可对任意伪造 MAC 做硬件自动 ACK
FIXED_MAC只能 ACK 网卡自身的 MAC
NONE硬件根本不支持
UNIMPLEMENTED未移植(芯片也许支持)

伪造地址由 src/wifit3/dot11/mac.py 的random_client_mac()生成:首字节0x02(本地管理的单播地址)+ 5 字节随机数。网卡选择器(src/wifit3/wlan/array.py)按 SPOOFABLE → FIXED_MAC → NONE → UNIMPLEMENTED 的优先级挑选 TX 网卡,多网卡时自动选攻击能力最强的一张。去认证攻击本身不需要伪装(无需关联),但 PMKID、WPS 等主动攻击则依赖这一层"主动监听模式"(enter_active_monitor())让芯片替伪造 MAC 回 ACK。

攻击编排:DeauthCampaign 的循环节奏

所有帧最终由 src/wifit3/campaigns/deauth.py 的DeauthCampaign编排:

  • 前置检查:目标必须是 PSK 家族(AKM 0x02/0x04/0x06)且未强制 PMF(802.11w 会保护去认证帧);
  • 每轮:轮流对每个客户端双向突发 10 轮(BURST_ROUNDS)→ 等待 6 秒(SETTLE_SEC)让被动抓包捕获被"踢"出的重握手 → 再打 20 帧广播收尾;
  • 停止条件:监听端发现新增的可破解握手即自动停止,无需任何人工干预。

相关文件索引

模块作用
src/wifit3/dot11/deauth.py去认证/解除关联帧构造 + NAV 计算
src/wifit3/dot11/mac.pyMAC 头拼装、随机伪造地址
src/wifit3/wlan/interface.py广播/单播去认证注入、ACK 统计
src/wifit3/campaigns/deauth.py去认证攻击循环编排
src/wifit3/campaigns/pmkid.py使用"离开"去认证帧收尾的 PMKID 收割
docs/SUPPORTED-HARDWARE.md各芯片 MAC 伪装能力一览

一句话总结:wifit3 的去认证帧构造 =极简 26 字节帧 + 按目的地类型精确填充 NAV + 广播即发即忘突发,再叠加按芯片能力分级的 MAC 伪装,让被动抓包与主动注入在同一套纯 Python 协议栈里协同工作。

【免费下载链接】wifit3Wifite but USB-only & cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 11:24:47

从零到一构建AI工程:数据、训练、部署与监控全流程实战

从“收藏从未停止,行动从未开始”到真正写完一条 model.predict() ,我见过太多人卡在AI工程那道看不见的门槛上。 ai-engineering-from-scratch 这个标题看着像一份课程大纲,但真正动手去做的时候会发现,知识点散落成一百个碎…

作者头像 李华
网站建设 2026/10/2 11:22:42

嵌入式内存管理实战:从内存池到栈溢出,把每一字节花明白

干嵌入式这行,谁没被内存折磨过几回?我印象最深的一次,是给一个跑着RTOS的工业控制器排查问题,设备运行两三天就死机,复位后又能撑一阵。查了几周的业务逻辑愣是没发现毛病,最后用内存统计一查,…

作者头像 李华
网站建设 2026/10/2 11:22:34

告别GUI:用Lua脚本打造J-Link RTT命令行自动化调试工具

1. 为什么我要自己写一个 RTT 命令行工具嵌入式调试这件事,做过几年的人都有一个共同感受:IDE 里的调试器很好用,但一旦离开 IDE,事情就变得别扭起来。J-Link RTT 就是典型例子。SEGGER 官方的 RTT Viewer 是个 GUI 工具&#xff…

作者头像 李华
网站建设 2026/10/2 11:21:57

PyCharm 中文配置指南:解释器、venv、镜像源与远程开发实战

简介:这是一份系统讲解 PyCharm 使用技巧的中文电子手册,整理自资深云计算博主的实战总结,面向 Python 初学者和希望提升 IDE 效率的中级开发者。内容从版本选择与下载安装起步,依次讲解社区版、专业版、教育版的功能差异&#xf…

作者头像 李华
网站建设 2026/10/2 11:21:17

穿越系统迷雾:揭秘 Cursor 提示词的奥秘与 TaoToken 统一 Key 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华