尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
wifit3 WiFi 审计工具 WPA PSK 派生实现完整走读:从 PSK 字符串到 M2 的 MIC
wifit3 WiFi 审计工具 WPA PSK 派生实现完整走读从 PSK 字符串到 M2 的 MIC【免费下载链接】wifit3Wifite but USB-only cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3wifit3 是一个跨平台、仅依赖 USB 网卡的 WiFi 审计工具Wifite 的 USB-only cross-platform 版本可抓取 WPA2 四次握手并离线破密。本文完整走读它的 WPA PSK 派生实现WiFi 密码字符串如何一步步变成 PMK、PTK并最终算出四次握手中 M2 消息的 MIC——这是判断密码对不对的最后一道闸门。为什么 WiFi 密码不能直接当密钥在 WPA/WPA2-PSK 中你在路由器里设置的那串密码PSK并不直接参与加密。802.11i 规定了一条派生链PSK 字符串 → PMK32字节→ PTK48字节→ KCK16字节→ M2 的 MIC16字节其中 MICMessage Integrity Check是四次握手 M2 帧里的数字签名AP 用它验证客户端确实知道密码。反过来hashcat-m 22000破密时也是逐条猜测 PSK、重算 MIC、与抓到的 M2 对比——所以这套派生代码是 wifit3 破密管线的数学核心。四条消息中各自携带什么摘自 handshake.py 的模块注释消息方向Nonce 字段有 MIC对破密的价值M1AP→STAANonce无供体提供 ANonceM2STA→APSNonce有基石SNonce MIC EAPOL 全在这里M3AP→STAANonce 重复有供体M4STA→AP通常为 0有仅当 nonce 未清零时可用wifit3 把这条派生链放在一个零 I/O的纯函数模块里方便在任何场景在线应答、离线验证、单元测试复用。第一步PSK 字符串 → PMKPBKDF2-HMAC-SHA14096 轮入口是 wpa_psk.py 中的pmk()全部核心就一行def pmk(psk: str, ssid: str) - bytes: return hashlib.pbkdf2_hmac(sha1, psk.encode(), ssid.encode(), 4096, 32)三个值得注意的点算法是 PBKDF2-HMAC-SHA1固定 4096 次迭代输出 32 字节——这正是 IEEE 802.11i 对 PSK 类网络的 PMK 定义SSID 是盐同一个密码连不同 SSIDPMK 完全不同改 WiFi 名字就等于换了密钥基础这一步计算量最大4096 轮 HMAC破密工具也在这里最耗算力。第二步PMK → PTKPRF-512 与排序对的巧妙设计ptk() 用 PRF-512以 HMAC-SHA1 为基底把 32 字节 PMK 扩成 48 字节 PTK输入数据是两对 32/6 字节的配对值data min(aa, spa) max(aa, spa) min(anonce, snonce) max(anonce, snonce) return _prf(pmk_bytes, bPairwise key expansion, data, 48)aa/spa是AP 与客户端的 MACanonce/snonce是双方随机数妙处在于min/max 排序无论哪一方先写代码AP 端和客户端算出的 PTK 都相同天然消除谁先谁后的歧义48 字节 PTK 的前 16 字节即kck()截出的KCK专门用来计算 MIC。对应的单元测试test_wpa_psk.py直接断言了交换参数后结果不变验证了这个对称性。第三步KCK 与 M2 的 MICHMAC-SHA1 取前 16 字节MIC 的计算在 eapol_mic()return hmac.new(kck_bytes, eapol_payload_mic_zeroed, hashlib.sha1).digest()[:16]规则只有一条但两个细节容易踩坑先清零再签名对 EAPOL 载荷计算时MIC 字段本身必须先置 16 个零字节否则签名覆盖签名自引用偏移量是 81在 802.1X 载荷内MIC 固定从第 81 字节起、长 16 字节——这个常量定义在 eapol.py也是 hashcat 读取 MIC 的位置。上图中焦点页逐条列出 M1–M4 的 Nonce 与 MIC 字段并给出 Valid 4-Way Handshake (M2M3) 的判定——底层用的就是同一套偏移与长度常量。一条调用链打通实战mic_for()mic_for() 把整条链串成一次调用拥有这个 PSK 的客户端对这段 EAPOL 字节会算出什么 MICdef mic_for(psk, ssid, aa, spa, anonce, snonce, eapol_payload_mic_zeroed): k kck(ptk(pmk(psk, ssid), aa, spa, anonce, snonce)) return eapol_mic(k, eapol_payload_mic_zeroed)wifit3 用它做了两件性质相反的事在线伪造fake_auth.py 的受害者客户端模拟器收到 M1 后用已知 PSK 现场算出合法 MIC 并回发 M2——AP 只有在 MIC 正确时才会推进握手所以收到 M3 就等价于我们的 WPA2 密码学被真机验证正确离线验证crack.py 逐条读取.hc22000哈希行对每个候选密码重算 MIC 并与目标比对不依赖 hashcat 也能独立证明一条 EvilTwin 抓包可被破解EvilTwin 端到端测试 在无硬件环境下走通 M1 → 客户端 M2真实 MIC→ 解析 → 组装 hc22000 → 破解的全链路保证这条数学链自洽。用 IEEE 标准测试向量守住正确性密码学代码最怕差一字节。wifit3 在 test_wpa_psk.py 中直接内置了 IEEE 802.11i 附录 J 的官方向量如pmk(password, IEEE)必须等于f42c6fc5…9710a12e再加一个错误密码必须算出不同 MIC的反向断言——标准向量 对称性 反例三层验证覆盖了整条派生链。关键文件清单文件作用src/wifit3/crack/wpa_psk.pyPMK/PTK/KCK/MIC 纯函数派生链本文主角src/wifit3/dot11/eapol.pyEAPOL-Key 帧组装MIC 偏移 81 / 长度 16src/wifit3/crack/handshake.py握手可破解性判定 hc22000 哈希行生成scripts/ap/fake_auth.py在线用真实 MIC 应答 M2验证密码学scripts/ap/crack.py离线逐候选重算 MIC 验证哈希行tests/crack/test_wpa_psk.pyIEEE 802.11i 标准向量回归测试一句话总结wifit3 把 802.11i 附录 J 的四步密码学压缩进约 50 行纯函数——PBKDF2 出 PMK排序对出 PTKKCK 出 MIC——再用标准向量钉死正确性让验证握手与破密走的是同一套数学。【免费下载链接】wifit3Wifite but USB-only cross-platform.项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

如何为AI插件写评估测试?portal-ai-plugins的51个测试套件与Token节省基准方法论完整解析

如何为AI插件写评估测试?portal-ai-plugins的51个测试套件与Token节省基准方法论完整解析

如何为AI插件写评估测试?portal-ai-plugins的51个测试套件与Token节省基准方法论完整解析 【免费下载链接】portal-ai-plugins 项目地址: https://gitcode.com/gh_mirrors/po/portal-ai-plugins portal-ai-plugins 是 Spotify 官方开源的 AI 插件市场&#…

📅 2026/10/4 22:48:32
群聊高级配置实战:openclaw-lark 按群白名单、技能绑定与自定义系统提示词设置指南

群聊高级配置实战:openclaw-lark 按群白名单、技能绑定与自定义系统提示词设置指南

群聊高级配置实战:openclaw-lark 按群白名单、技能绑定与自定义系统提示词设置指南 【免费下载链接】openclaw-lark 飞书官方出品的 OpenClaw 飞书/Lark Channel 插件 项目地址: https://gitcode.com/gh_mirrors/op/openclaw-lark openclaw-lark 是飞书/Lark…

📅 2026/10/4 22:48:32
VueUse 函数详解:useArrayFindLast——响应式获取数组中最后一个匹配元素

VueUse 函数详解:useArrayFindLast——响应式获取数组中最后一个匹配元素

前端 【免费下载链接】vueuse Collection of essential Vue Composition Utilities for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vueuse 点击查看 免费下载 useArrayFindLast 是 VueUse 提供的一组响应式数组工具函数之一,它把原生 Array.p…

📅 2026/10/4 22:48:32
MORE NEWS

更多资讯

📰

小鼠体内PD-1阻断实验:抗体纯度、内毒素与用药全解

1. 那次"抗体翻车"让我重新认识了体内实验的选品门槛先讲一件真实发生过的事。几年前我做MC38结肠癌模型,打算上一组抗PD-1单药治疗,抗体是从某家国产供应商买的,标明了"体内级",体外流式结合曲线也做得很漂亮…

📰

Agent系列——MCP协议实战:把Cline MCP配置改到TaoToken

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

📰

CodeBot:基于OpenCode的AI助手,兼容Hermes和Obsidian

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

📰

华硕路由器变身AI边缘网关:提示流编排器部署实战

先说结论:这篇文章讲的不是把一个大模型权重塞进华硕路由器——那不可能,任何一台家用路由器的闪存和内存都装不下几 B 甚至几十 B 的参数。真正落地的是把AI 提示流编排器这种"大脑调度层"搬到路由器上,做一个轻量边缘网关&#x…

📰

新手必学:form-create-designer的8个拖拽操作技巧,快速提升表单搭建效率

新手必学:form-create-designer的8个拖拽操作技巧,快速提升表单搭建效率 【免费下载链接】FcDesigner 好用的Vue低代码可视化 AI 表单设计器,可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率。支持PC端和移动端&#…

📰

爬虫逆向心法:从抓包分析到JS逆向与反爬破解的实战细节

一个老爬虫的逆向心法:那些网上不说的细节,我一次性抖出来写爬虫最怕什么?不是被封IP,不是被识别,而是——你看得见数据在那里,却怎么也拿不出来。这种卡壳的感觉,凡是做数据采集的朋友都懂。今…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬