news 2026/9/30 14:27:58

wifit3 WPS PBC按钮监听:物理按键按下瞬间提取明文PSK的完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
wifit3 WPS PBC按钮监听:物理按键按下瞬间提取明文PSK的完整流程

wifit3 WPS PBC按钮监听:物理按键按下瞬间提取明文PSK的完整流程

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

wifit3 是一款跨平台、仅靠 USB 无线网卡即可工作的 Wi-Fi 审计工具,它的 WPS PBC 按钮监听功能,能在有人按下路由器 WPS 物理按键的约 120 秒窗口内,自动以入网者身份完成 WSC 握手,从 M8 报文中直接提取明文 PSK(Wi-Fi 密码)并保存。本文完整拆解这条"按键按下 → 密码到手"的链路,帮你看懂每个环节在做什么。

一、为什么按一次 WPS 按钮就能拿到密码?

传统观念里,WPS 按键是"安全地让设备连网"的捷径,但它的底层协议 WSC 有个关键特点:

  • 角色对调:按下按钮后,路由器变成 Registrar(登记者,持有凭证),任何在窗口内完成握手的设备都是 Enrollee(入网者);
  • 没有密码门槛:PBC 模式的"设备密码"是公开常量00000000,双方都能推导出相同的密钥,因此安全性完全依赖 Diffie-Hellman 密钥交换的私密性;
  • 必须主动参与:M8 中的凭证用 KeyWrapKey 加密,被动窃听者没有 DH 私钥、解不开它。所以 wifit3 的策略不是"旁听",而是抢在合法设备之前完成握手。

这意味着:只要你恰好"在场",谁按了 WPS 按钮,谁就等于把密码递给了完成握手最快的那个 Enrollee。

⚠️ 请仅在你拥有或已获授权的网络环境中使用,未授权的密码提取在多数地区属于违法行为。

二、被动监听:如何知道按钮被按下了?

wifit3 的检测是常驻且被动的——它不发送任何主动探测,只解析路由器广播的 Beacon / Probe Response 帧中的 WPS 厂商 IE:

信号含义
Device Password ID = 0x0004设备声明支持 Push-Button 模式
Selected Registrar = 1按钮已被按下,登记窗口开启

两者同时成立时,模型层属性AccessPoint.wps_pbc_active翻转为True(定义见 access_point.py)。这是边沿触发的信号:从 False 跳到 True 的那一刻,就是"有人刚按下按钮"的瞬间。

在 Scanner 界面底部你能看到WPS PushButton auto-invade is enabled (press w to toggle)——w键就是全局监听开关,状态分"关闭 / 选中目标 / 全局"三档(快捷键绑定见 screen.py)。

有个已知盲区:部分路由器只在长按按键期间才广播该信号,少数甚至从不广播。对这种情况,项目提供了主动探测脚本 pbc_probe.py(用--now立即探测)。

三、自动入侵:从窗口检测到发起握手的 3 秒

检测到窗口开启后,Focus 屏幕的每次刷新(tick)都会调用一次"自动入侵判定" _should_auto_invade_pbc,它依次检查:

  1. 目标wps_pbc_active为真,且全局 PBC 开关打开;
  2. 该路由器没有被用户静默、不是隐藏 SSID;
  3. 密码库里还没有它的 PSK(拿到过的就不重复打);
  4. 没有处于重试冷却期(3 秒,见_PBC_RETRY_COOLDOWN_S),也没有其它攻击正在占用无线网卡。

全部通过,_start_pbc_capture 启动WpsPbcCapture编排器(pbc.py),它做的事很干脆:

  • 租约(lease):把网卡切到目标信道,打开 active-monitor、注册伪造 MAC、打开 ACK 计数;
  • 伪装关联:以随机客户端 MAC 向目标完成 802.11 认证/关联,关联帧尾部带上WPS_REQ_ENROLLEE意图的 WPS IE;
  • 移交状态机:把收发通道交给WpsEnrollee,总超时 40 秒,单帧等待 ACK、最多重发 4 次——弱信号下的丢帧是 PBC 失败的头号原因;
  • 礼貌退场:无论成败,结束前发送 deauth 通知 AP 丢弃自己的 EAP 会话,释放网卡。

界面因此没有"开始 PBC"按钮——只有窗口开启时短暂出现的Stop PBC按钮(PBC 是自动入侵型攻击)。

四、M1→M8 握手:明文 PSK 诞生的完整报文流

WpsEnrollee(enrollee.py)是 PIN 暴力破解流程的"镜像角色":PIN 攻击里我们当 Registrar、路由器当 Enrollee;PBC 里方向完全反过来——

TX EAPOL-Start ← 敲门 RX WSC_Start / Identity-Req TX M1 (我们的 nonce + DH 公钥 PKe) RX M2 (路由器 nonce N2 + 公钥 PKr) → 双方此刻算出 DHKey = SHA256(g^ab mod p), 再派生 AuthKey / KeyWrapKey,并用 PBC 常量推出 PSK1/PSK2 TX M3 (E-Hash 承诺,路由器校验我们的身份) RX M4 → TX M5 (交出 E-S1) RX M6 → TX M7 (交出 E-S2) RX M8 ★ 内含 AES-128-CBC 加密的完整凭证 TX WSC_DONE → 用 KeyWrapKey 解开 M8,得到 SSID + network_key(明文密码)

关键就在最后两行:M8 的ENC{S}属性解开后是一个完整的 WSC 凭证结构,wifit3 从中取出ssid与network_key两个字段——network_key就是明文 PSK 本身(enrollee.py)。

期间还有两个工程细节值得注意:

  • 乱序/重传保护:维护highest_mt序号,收到比自己已处理阶段更早的 WSC 消息直接丢弃,防止 AP 重传旧帧把状态机带偏;
  • 重叠会话不认输:若 AP 因检测到多个 PBC 会话而 NACK(config error 12),wifit3 不主动放弃——真实设备才是"重叠方",抢跑完成握手的一方获胜。

上图是完整成功的样子:日志从WPS PushButton: Window Open — auto-capturing PSK一路推进到M8 → SUCCESS: credential decrypted,顶部亮起✓ WPS PSK recovered,明文密码同时写入captures/<SSID>__wps_pbc.txt。

五、结果落地:密码库、重试与保存

成功后WpsPbcCapture的结局被 Focus 屏幕的 _finish_pbc 收割:

动作说明
写入密码库app.vault.save_wps_pbc(ap, psk),之后该路由器不会再被重复攻击
回写模型AccessPoint.wps_pbc_psk记录已恢复的密码(与 PIN 破解结果wps_pin_psk分开存放)
失败重试窗口仍在、且失败源于网络抖动时,3 秒后自动再试一轮
用户终止Stop PBC 按钮置位_pbc_user_stopped,本窗口内不再自动入侵

六、新手上手清单

  1. 硬件:需要一张支持注入/监听的 USB 网卡(固件式芯片基本全能跑 WPS;最老的 RTL8187L、RT2500USB 等硬 MAC 芯片在长链路的 WPS 握手上较脆弱)。完整清单见 SUPPORTED-HARDWARE.md;
  2. 启动:装好后进入 Scanner,确认底部auto-invade is enabled(必要时按w切换);
  3. 触发:让目标路由器的 WPS 按钮被按下(真实环境即有人连网、装新设备、或执行 WPS 配对的瞬间);
  4. 收割:Focus 视图会自动完成握手并在 LOG 区显示Password for <SSID>: "..."。

延伸阅读

  • WPS 攻击架构与 PIN/PBC 双模式全解:wps/README.md
  • 攻击编排层总览:campaigns/README.md
  • WSC 报文编解码(M1~M8 构建与解析):dot11/wsc/
  • PBC 盲区主动探测脚本:scripts/wps/pbc_probe.py
  • 协议层细节与硬件验证结论:docs/planning/

一句话总结:wifit3 的 PBC 监听 = 被动解码 Beacon 里的 0x0004 信号(发现按钮被按)+ 边沿触发抢跑 WSC 握手(M1→M8)+ 用 KeyWrapKey 解开 M8 取回明文 PSK,全程自动,密码直接进库。

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

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

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

昇思 MindSpore 大模型单卡微调推理:自助搭建流程

一、摘要基于昇思 MindSpore 在单张昇腾 NPU&#xff08;310P/910B&#xff09;完成大模型微调 推理是轻量化落地常用方案。单卡流程包含&#xff1a;环境准备、权重加载、数据集构建、LoRA 微调、模型保存、离线推理全链路。相比于全参数微调&#xff0c;LoRA 低秩适配极大降…

作者头像 李华
网站建设 2026/9/30 13:53:19

ENSP校园网课程设计:VLAN划分、静态路由配置与排错全攻略

简介&#xff1a;这是一份基于华为ENSP模拟器完成校园局域网组建的完整课程设计报告&#xff0c;面向网络工程、计算机及相关专业学生&#xff0c;适用于课程设计、毕业设计、实训作业或网络技能竞赛备赛等场景。文档从项目概述和需求分析入手&#xff0c;梳理终端接入数量与位…

作者头像 李华
网站建设 2026/9/30 13:52:46

基于Python的新能源汽车数据分析:从数据清洗到可视化实战

简介&#xff1a;一份基于Python的新能源汽车数据分析系统设计与实现论文&#xff0c;面向新能源汽车行业研究人员、数据分析开发者及高校相关专业学生&#xff0c;围绕车辆运行、充电行为、销售趋势等多源数据&#xff0c;给出从数据整合、特征分析到可视化与预测建模的完整系…

作者头像 李华
网站建设 2026/9/30 13:45:46

Java Web核心知识全解析:从Servlet到JSP的复习指南

1. 复习前先建立全局观&#xff1a;一条 HTTP 请求在 Java Web 应用里到底经历了什么 每次带学生复习 Java Web&#xff0c;我都会先逼问一个问题&#xff1a;你从浏览器地址栏输入一个 URL 并按下回车&#xff0c;到页面刷新出结果&#xff0c;中间到底发生了什么&#xff1f;…

作者头像 李华
网站建设 2026/9/30 13:44:19

Switch Case 嵌套完全指南:语法、状态机实战与性能避坑

写了十几年代码&#xff0c;switch case这个结构我几乎天天都在碰&#xff0c;但真正把它用明白、尤其是嵌套写法用得干净不留坑&#xff0c;反倒是带新人那几年才系统梳理清楚的。很多人第一反应是"这玩意儿不就是个多分支判断吗&#xff0c;能有多难"&#xff0c;结…

作者头像 李华