第二十四节:通信之WLAN(Decrypt Pkg)

欢迎大家一起学习探讨通信之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 公众号。

谢谢大家支持~!

要确认 Perl 及其相关依赖项已正确下载并确保所需模块已安装,您可以按照以下步骤操作: --- ### **1. 检查 Perl 是否正常工作** 首先验证您的系统上是否正确安装了 Perl,并能正常使用: ```bash perl -v ``` 该命令会显示当前安装的 Perl 版本信息。如果没有返回任何输出或提示“perl不是内部或外部命令”,则说明 Perl 未正确安装。 --- ### **2. 列出已安装的 Perl 模块** 为了查看 `Filter::Crypto::Decrypt` 和其他相关模块是否已安装,可以运行以下命令: ```bash perldoc -l Filter::Crypto::Decrypt ``` 若返回具体的文件路径,则表明模块已安装;反之如果出现“No documentation found for 'Filter::Crypto::Decrypt'”这样的消息,则意味着尚未安装该模块。 另一种列出所有已安装模块的方式是借助于 cpanm 工具包管理器: ```bash cpanm --list | grep Filter::Crypto::Decrypt ``` --- ### **3. 使用 CPAN 安装模块及依赖** 假如检测结果显示目标模块不存在或者存在依赖缺失情况,那么就需要利用 CPAN 来完成自动化的安装过程: #### 步骤一:启动 CPAN Shell 打开终端输入以下指令进入交互式界面: ```bash cpan ``` #### 步骤二:强制更新 CPAN 配置(非必需) 初次使用前可能需要先刷新默认设置以便获取最新的索引数据库。 ```bash install Bundle::CPAN reload cpan exit ``` #### 步骤三:正式开始安装任务 现在可以直接针对特定需求发起请求啦~ 例如下面这条语句就会帮我们把包括但不限于主功能在内的全套东西拉下来哦~ ```bash force install Filter::Crypto::Decrypt ``` 这里采用 force 强制选项是因为有些时候因为网络原因或者其他因素造成初步尝试失败时,它可以忽略掉一些小警告继续前进直至结束为止! 同时注意观察整个流程打印出来的日志内容中有无提到类似 openssl 这样额外的关键字提醒用户去单独预处理好相应的前置条件哟~ --- ### **4. 核实底层支持库的存在状态 (以 OpenSSL 为例)** 对于涉及加密运算之类的高级特性而言,单单依靠纯 perl 编写的部分往往难以独立达成理想效果,这就离不开诸如openssl之流的专业组件协助咯~ 所以接下来就是排查机器本地有没有配置好此类基础服务设施喽: **Windows 平台:** - 下载官方发布的最新稳定版压缩包 [https://slproweb.com/products/Win32OpenSSL.html](https://slproweb.com/products/Win32OpenSSL.html). - 解压后记得调整 PATH 环境变量指向 bin 子目录下的可执行程序们. **Linux/MacOS 系统:** 一般来讲自带软件源仓库里面就包含了足够丰富的选择供挑选使用, 比如 ubuntu 用户仅需一条 apt-get 就搞定一切准备工作 : ```shell script sudo apt update && sudo apt upgrade -y && sudo apt install libssl-dev -y ``` 而在 mac 上可通过 homebrew 实现相似目的: ```ruby brew install openssl@3 # 当然也可以选别的版本号啦~视项目实际情况而定就好 ``` 最后别忘了再次回到最初的测试案例重新跑一遍验证最终成果是不是已经满足预期啦! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值