欢迎大家一起学习探讨通信之WLAN。上节分享了Omnipeek工具分析WLAN MAC层帧交互的方法,针对实例问题,提供了分析思路。实际工作和生活中,WiFi网络基本都使用加密,Sniffer网卡工具抓取的报文只能看到MAC Header以下的报文信息,IP层及以上都为加密。但部分问题分析都需要检查IP层以上的报文信息,如下图所示。本节基于Wireshark和Omnipeek工具提供解密Sniffer抓包报文的方法。

1. Wireshark解密WLAN包方法
Sniffer工具抓取的报文,如加密方式为wpa/wpa2解密的前提条件有两个:
抓取到完整的4次握手交互报文
获取到wpa-psk的信息
Android中,可在保存网络信息的文件中获取解密需要的信息,如wificonfigstore.xml/p2p_supplicant.conf和wpa_supplicant对应的log日志。如wpa_supplicant中log日志所示。
P2P-GROUP-STARTED p2p0 client ssid="DIRECT-CM-Mi 10S" freq=2412 psk=e7feabb24ed6d2a16cba1a46574112c2615fecd5f461ad3e1e29308171e2963c go_dev_addr=72:96:73:c9:c0:1b
sniffer抓取报文未解密,如下图所示。

通过在Wireshark工具中“编辑->首选项->协议->IEEE 802.11”,编辑添加解密key,选择对应的key类型,点击ok。

Wireshark工具根据key和4次握手信息将加密的data包解密,如下图所示。

2. Omnipeek工具解密WLAN包方法
Sniffer工具抓取的报文,如加密方式为wpa/wpa2解密的前提条件有两个:
抓取到完整的4次握手交互报文
获取到密码和SSID的信息
如下图为抓取到得WLAN MAC层帧交互报文。

在工具菜单栏选择“Tools->Decrypt WLAN Packets”。选择key 类型,设置密码和网络名称,点击“OK”和“确认”,如下图所示。

如上加密协议交互帧解密后如下图所示。

以上我们分享了基于Wireshark和Omnipeek工具解析加密报文的方法。但在实际过程中,通过抓包网卡每次都要捕获到设备连接过程的4次握手信息,在开放环境还是有困难,下面分享获取4次握手的信息用于解包的方法。
做为一个Android设备,可以通过tcpdump工具抓取网络层的数据包。设备连接过程中,4次握手交互协议帧会被送到Linux系统。因此,通过tcpdump工具必可以获取到。如下图所示tcpdump工具抓取到的4次握手信息。

如下图是我们无线网卡抓取WLAN MAC层加密数据。

接下来我们通过Wireshark自带的mergecap.exe工具,将两个报文文件合并成为一个,如下图所示。则可通过工具协助解密加密报文。
mergecap.exe -w workspace/out.pcap workspace/*

注:
通过tcpdump工具获取到的4次握手信息,将其无线网卡抓包工具抓到的报文合并解包。会存在概率解析加密报文失败的情况,具体原因实际操作过程未找到根因。
本节分享了基于分析报文工具,简单分享了解析捕获到加密报文的方法,解析加密报文根据加密方式的不同,选择key类型不同,wpa/wpa2加密方式解密加密报文必须获得4次握手的报文信息,分析了通过tcpdump工具获取4次握手报文的方法。第二十四节探讨就到此,后续期待共同继续探讨学习。
注:
对以上所述专业知识有修正意见或建议,可随时留言反馈。如感兴趣更多通信知识,可关注“通信之WLAN” for WeChat 公众号。
谢谢大家支持~!