连接WiFi时Wireshark如何对捕获的数据包进行解密?
Wireshark WiFi加密流量解密原理说明
核心逻辑如下:
- WPA/WPA2个人级(PSK模式)下,所有连接同个AP的客户端共用相同的PMK(成对主密钥),PMK直接由WiFi密码和WiFi名称(SSID)通过PBKDF2算法哈希生成,你将WiFi密码输入Wireshark后,Wireshark会先计算出该SSID对应的PMK。
- 每个客户端独有的PTK(成对临时密钥)可通过公开捕获的参数推导:PTK由PMK、AP的BSSID、客户端MAC地址、AP四次握手中明文发送的ANonce、客户端四次握手中明文发送的SNonce共五个参数拼接后哈希生成。只要你捕获了某台客户端和AP通信时的完整四次握手包,Wireshark就能从握手包中提取到后四个参数,结合已经算出的PMK直接推导出该客户端专属的PTK。
- 解密的前提是你抓包时完整捕获了目标客户端与AP关联时的四次握手包,要是没有握手包提供的Nonce、MAC地址等参数,Wireshark就算有正确的WiFi密码也无法推导出PTK,也就无法解密流量。
- CCMP解密无额外私密参数要求:CCMP采用AES-CTR加密模式,每个加密的802.11帧头中都自带了加密所用的PN(数据包序列号)、地址字段等公开参数,Wireshark拿到PTK之后,结合每个帧里的这些公开参数就能直接解密出帧的明文载荷,上层的HTTP、TCP等内容都会被完整还原。
- 你捕获到的HTTP GET请求里的明文密码,并不是在空中传输时就未加密,而是Wireshark完成解密操作后展示的还原后内容。
内容的提问来源于stack exchange,提问作者user11613775
相关产品推荐
相关产品推荐

