news 2026/4/19 1:34:17

别再只输密码了!手把手带你用Wireshark抓包,亲手‘看见’WPA2的四次握手过程(含过滤技巧)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再只输密码了!手把手带你用Wireshark抓包,亲手‘看见’WPA2的四次握手过程(含过滤技巧)

无线网络安全实战:用Wireshark解析WPA2四次握手全流程

家里WiFi突然连不上?明明密码正确却反复提示认证失败?作为网络工程师,我遇到过太多次同事抱怨"路由器抽风",而真相往往藏在那些看不见的数据帧里。今天我们就用Wireshark这把"手术刀",解剖WiFi连接过程中最关键的四次握手环节,让你亲眼见证PTK密钥的诞生过程。

1. 实验环境准备:从监听模式开始

工欲善其事,必先利其器。不同于普通抓包,捕获无线帧需要特殊的监听模式(Monitor Mode)。我推荐使用性价比极高的Alfa AWUS036NHA网卡,它的Atheros AR9271芯片对Linux内核支持良好,实测在Kali 2023.3上即插即用。

必备工具清单

  • Wireshark 4.0.8(新增IEEE 802.11协议增强解析)
  • 支持监听模式的无线网卡(建议芯片组:Atheros/Realtek RTL8812AU)
  • 家用无线路由器(关闭WPA3以简化实验)

在Ubuntu系统下启用监听模式只需三条命令:

sudo airmon-ng check kill # 结束可能冲突的进程 sudo ip link set wlan0 down # 关闭网卡 sudo iwconfig wlan0 mode monitor # 切换模式

注意:部分Intel网卡需安装专用驱动补丁,遇到"Operation not supported"错误时可尝试git clone https://github.com/aircrack-ng/rtl8812au

2. 精准捕获握手帧:过滤策略详解

启动Wireshark后,常见的误区是直接开始抓包,结果被海量的Beacon帧淹没。我的私藏过滤公式能让你直击要害:

关键过滤表达式

(wlan.fc.type_subtype == 0x0b) || # 认证请求 (wlan.fc.type_subtype == 0x00) || # 关联请求 (eapol) # 四次握手帧

这个组合拳能捕获连接全过程的三类关键帧。特别提醒:在802.11标准中,四次握手属于EAPOL(Extensible Authentication Protocol over LAN)协议,而非普通的Data帧。

帧类型速查表

十六进制值类型说明在握手阶段的作用
0x0bAuthentication设备身份初步验证
0x00Association Req协商连接参数
0x08EAPOL-Key (Msg1)AP发送ANonce
0x0108EAPOL-Key (Msg2)STA回复SNonce和MIC
0x0308EAPOL-Key (Msg3)AP确认密钥安装
0x0408EAPOL-Key (Msg4)STA最终确认

3. 四次握手深度解析:从报文到密钥

现在来到最激动人心的环节——解剖抓取到的EAPOL帧。以第一次握手为例,在Wireshark中展开802.1X Authentication标签,你会看到类似这样的结构:

Key Descriptor Version: HMAC-SHA1-128 Key Type: Pairwise Key Key Information: 0x008a (Secure, Key MIC, Install, Ack) Key Length: 16 Replay Counter: 1 WPA Key Nonce: a1b2c3d4...(32字节ANonce) Key MIC: 0000...(初始为空) Key Data Length: 0

关键字段解读

  • ANonce/SNonce:AP和客户端各自生成的随机数,相当于密钥材料的"盐值"
  • MIC:第二次握手开始出现,像蜡封一样确保消息未被篡改
  • Key Information:比特位控制密钥协商流程,0x008a中的8a对应二进制10001010

用Python演示PTK生成过程(需安装hashlib):

import hashlib, hmac def generate_ptk(pmk, anonce, snonce, ap_mac, sta_mac): # 拼接所有材料 material = b"".join([pmk, anonce, snonce, ap_mac, sta_mac]) # 使用PBKDF2-HMAC-SHA1迭代生成 return hashlib.pbkdf2_hmac('sha1', material, b"Pairwise key expansion", 4096, 32)

4. 实战排错:典型握手失败案例

上周我遇到个经典案例:某会议室WiFi反复弹出密码错误提示,但管理员坚称密码未更改。通过抓包分析发现:

  1. 客户端能收到Msg1(含ANonce)
  2. 但Msg2中的MIC校验失败
  3. 比较发现AP的PMK与客户端不一致

最终定位到原因是键盘布局错误——用户在不同区域笔记本电脑上输入密码时,默认切换了键盘映射,导致实际发送的PSK与AP存储不符。

常见故障排查表

现象可能原因验证方法
收不到Msg1AP配置错误检查Beacon帧中的RSN信息
Msg2后无响应MIC校验失败对比两端PMK
反复重传Msg3组播密钥安装失败检查GTK相关字段
完成握手但无法上网四次握手后DHCP问题捕获DHCP流程

建议在测试环境故意输入错误密码,观察Wireshark中的表现:你会看到AP在Msg2后直接发送Deauthentication帧( subtype 0x0c),这是WPA2协议的安全特性——不透露具体错误原因以避免暴力破解。

5. 进阶技巧:Wireshark个性化配置

为了让分析更高效,我习惯自定义Wireshark的着色规则:

  1. 右键报文 →Colorize Conversation→ 选择EAPOL
  2. 在协议首选项中启用IEEE 802.11的"Reassemble fragmented packets"
  3. 创建自定义列显示Key Replay Counter

对于需要长期监测的场景,可以用Tshark命令行保存特定握手过程:

tshark -i wlan0 -Y "eapol && wlan.addr == 00:11:22:33:44:55" -w handshake.pcapng

最后分享一个冷知识:在Wireshark 4.0+中,你可以右键EAPOL帧选择Decode AsIEEE 802.11,这样能直接看到加密字段的原始值,这对调试企业级Radius认证特别有用。

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

MATLAB min函数进阶:从基础语法到多维度数据处理的实战解析

1. MATLAB min函数基础语法解析 第一次接触MATLAB的min函数时,我习惯性地以为它就是个简单的找最小值工具。直到在数据分析项目中踩了几个坑才发现,这个看似简单的函数藏着不少门道。先来看最基本的用法: A [3 7 2 8 5]; min_value min(A) …

作者头像 李华
网站建设 2026/4/19 1:28:35

OpenClaw(养龙虾) +关于Hadoop hive的Skills(Cloudera CDH、CDP)

前言 Kubernetes 本身并不复杂,是我们把它搞复杂的。无论是刻意为之还是那种虽然出于好意却将优雅的原语堆砌成 鲁布戈德堡机械 的狂热。平台最初提供的 ReplicaSets、Services、ConfigMaps,这些基础组件简单直接,甚至显得有些枯燥。但后来我…

作者头像 李华
网站建设 2026/4/19 1:28:29

STM32 QSPI双Flash实战:用HAL库轮询状态寄存器,确保两片W25Q256都就绪

STM32 QSPI双Flash实战:HAL库轮询状态寄存器的可靠性设计 在嵌入式系统开发中,外部存储器的稳定性和数据完整性往往是项目成败的关键。当我们需要扩展存储容量或实现数据镜像时,双Flash架构成为常见选择。然而,这种架构带来了新的…

作者头像 李华
网站建设 2026/4/19 1:23:17

【红队利器】Ehole实战指南:从指纹识别到精准打击

1. 红队信息收集的困境与破局之道 每次参与红队演练时,最让我头疼的就是初期信息收集阶段。面对客户提供的庞大IP段或杂乱无章的资产列表,传统方法就像在黑暗森林里打手电筒——既费时又容易遗漏关键目标。记得去年某次项目,客户给了200多个C…

作者头像 李华