LV02-01-天猫精灵IOT-02-WiFi-03-WiFi帧抓包

本文主要是WiFi——WiFi帧抓包相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows版本 windows11
Ubuntu版本 Ubuntu22.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
点击查看本文参考资料
分类 网址 说明
官方网站 阿里云 阿里云官网主页
阿里生活物联平台 生活物联网平台(飞燕平台)主页
AliGenie 天猫精灵开放平台AliGenie主页
阿里物联网平台 阿里物联网平台主页
Bluetooth 技术网站 蓝牙协议规范什么的可以来这里找
Telink Telink | Chips for a Smarter IoT (telink-semi.com)
Telink中文官网
开发手册 AliOS Things开发指南 AliOS Things开发指南,这里是最新版本,可以直接从官网找到
AliOS Things开发指南 AliOS Things应用开发指南,这里应该是3.3版本的完整开发文档
AliOS Things开发指南(3.0) AliOS Things应用开发指南,这里应该是3.0版本的完整开发文档
生活物联网平台开发文档 生活物联网平台(飞燕平台)开发文档
《设备端开发指南》
Wi-Fi IoT品类定义与功能开发 天猫精灵IoT开放平台——Wi-Fi IoT品类定义与功能开发
硬件平台 mk3080 WiFi开发板 WiFi开发板使用指南-阿里云开发者社区
esp8266开发板 一个教程:ESP8266-NodeMCU开发板详解-太极创客 (taichi-maker.com)
TLSR8258 Datasheet Datasheet for Telink BLE + IEEE802.15.4 MultiStandard Wireless SoC TLSR8258
参考资料 AliOS Things 3.0 应用开发指南 这个只是一篇参考文章,里面是一些环境搭建相关的,可以参考
IP知识百科 - 华为 (huawei.com) IP的一些相关知识点
点击查看相关文件下载
分类 网址 说明
蓝牙规范相关文档 Core Specification 5.2 核心规格 5.2,该规范定义了创建可互操作的Bluetooth 设备所需的技术。
《Core_v5.2.pdf》
Mesh Model(v1.1) 本Bluetooth 规范定义了模型(以及它们所需的状态和消息),这些模型用于在mesh 网络中的节点上执行基本功能,超出了Bluetooth Mesh 配置文件 规范中定义的基础模型。
本规范包括定义跨设备类型标准功能的通用模型,以及支持关键mesh 场景的模型,如照明控制、传感器、时间和场景。
《MshMDL_v1.1.pdf》
Mesh Profile(v1.0.1) 该Bluetooth 规范定义了基本要求,以实现可互操作的mesh 网络解决方案,用于Bluetooth 低能量无线技术。
《MshPRFv1.0.1.pdf》
Mesh Device Properties 本规范包含Bluetooth Mesh 配置文件 和Bluetooth Mesh 模型规范所要求的设备属性的定义。
但是跟之前的有些区别,我主要看的之前的版本:《MMeshDeviceProperties_v1.2.pdf》
GATT Specification Supplement GATT Specification Supplement | Bluetooth® Technology Website。
好像可以在线看:《GATT Specification Supplement》
Assigned Numbers GATT的一些类型定义可以在这里找。
AliOS Things alios-things/AliOS-Things Gitee上的AliOSThings SDK源码仓库
alibaba/AliOS-Things GitHub上的AliOSThings SDK源码仓库
天猫精灵蓝牙Mesh协议栈 alibaba-archive/genie-bt-mesh-stack GitHub上的天猫精灵蓝牙Mesh协议栈源码仓库。
之前是在alibaba/genie-bt-mesh-stack这个仓库。
写笔记的时候最新提交为faf523618a6a2560090fc423222b9db80984bb7a
蓝牙Mesh设备开发指南 阿里云生活服务平台开发手册——蓝牙设备开发一节中的内容

这一节我们使用Omnipeek工具来对WiFi接入过程进行抓包。

一、Omnipeek

1. 软件简介

OmniPeek被誉为世界上功能最强大的网络协议分析器,原属于世界领先的数据包捕获和分析Savvius公司的产品,(以前称为WildPackets)在数据包捕获,深度数据包检测和网络诊断解决方案领域领先25年,现已被Liveaction收购。Liveaction之前主要针对网络数据流级别的分析,收购Savvius之后,两者整合形成互补实现了从流到数据包的全面的分析平台。

OmniPeek在世界上享有很高的知名度,备受网络分析工程师的喜爱。OmniPeek能对数据包进行深入的解析,分析上千种协议,从多个维度全方位的分析网络流量,提供数十种可直观的图表报告,提供专家级网络事件的分析和诊断。可以实现不依赖与研发设备进行抓包,抓包原理是omnipeek的网卡处于混杂模式,不断的监听空口包,然后进行采集。

说了那么多,我们可以用它来干嘛?只要我们电脑上有一个支持这个软件抓包的网卡(没有的话,那就没办法使用了),我们就可以使用这个软件抓取相关的包,例如我们的手机连接了路由器,我们就可以抓取手机和路由器之间的WiFi数据包,包括WiFi连接过程中的包,这一点是wireshark无法做到的。其实我们是可以抓取连接到路由器的所有设备的包的,只要我们知道设备的物理地址,都可以进行过滤,从而获取相关的数据包。

2. 下载安装

这个软件官网在这里:Network Protocol Analyzer | Omnipeek - LiveAction,它好像是收费的,但是肯定有办法的,这里的安装及相关过程就不再细说了,网上很多。安装完毕后,我安装后进行了汉化,打开界面如下:

image-20231216200629347

3. 支持哪些网卡?

这个软件抓包的话对网卡是有要求的,我们使用的网卡能不能用这个软件进行抓包分析,我们可以在这里查询:

二、抓包过程

1. 查询网卡是否支持抓包

我们打开软件后:【菜单栏Capture】→【Start Capture】会有以下弹窗:

image-20231216201243085

我们选择这个Adapter,然后就会显示我们现在的电脑上有哪些适配器啦,在下方会显示适配器的一些信息,很遗憾,我的电脑的无线网卡适配器并不能进行抓包。那后面我就直接从课程视频截图吧。

2. 选择信道

前面确保我们的网卡支持抓包的话,我们在相同的界面选择【802.11】→【select channel】来选择要抓包的信道:

image-20231216215502022

路由器是工作在一个信道,但是我们有13个信道,选择的信道不对的话,是抓不到包的,那怎么办?我们一开始的时候是不知道路由器在哪个信道工作的,我们可以选择下面的【scan】,然后勾选所有的信道:

image-20231216215833913

然后我们就可以在左侧的【Wireless】→【Channels】中看到我们所勾选的所有信道的信息:

image-20231216220108267

3. 确定信道

前面我们第一次抓包的时候不确定路由器是在哪个信道,所以选择了所有信道进行扫描,我们点击【Wireless】→【Channels】面板右上角的【start capture】按钮,软件就会开始逐个信道进行扫描:

image-20231216220321657

然后就会有这样一个箭头从上到下逐个移动,扫描每一个信道:

image-20231216220414655

信道上有信号,就会有数据,没有信号的信道所有的列都会是0:

image-20231216220503045

我们切换到【Wireless】→【signal】面板,就会发现信道中的信号信息:

image-20231216220753529

我们再切换到【Wireless】→【WLAN】面板,在这里我们会看到各个SSID下的数据包(这里课程中使用的WiFi为CU_zyFG):

image-20231216221126431

我们点开看一下这个CU_zyFG:

image-20231216222749852

从这里我们就可以确定,我们使用的这个WiFi的路由器工作在信道10,所以后面抓取数据的时候就可以只抓10信道的数据啦。要是不确定的话,还可以看一下路由器物理地址,以此确认,怎么看路由器物理地址?我们打开windows的CMD命令行,输入ipconfig命令可以查看电脑的IP地址:

image-20231216222252874

发现电脑的IP地址为192.168.1.8,那么路由器的IP地址一般就为192.168.1.1,然后我们在命令行中输入arp -a,可以看到192.168.1.1这个IP的物理地址为90-86-9b-ab-52-4b,与上面图中的路由器物理地址一致,就可以确认这个就是我们所要抓的WiFi的数据啦。

image-20231216222433331

4. 抓取固定信道的数据

上面我们确认了信道为10,所以我们可以修改【802.11】→【select channel】,配置为信道10:

image-20231216222845152

然后重新抓包就可以只抓信道10的包,我们打开【Capture】→【Packets】面板,就可以看到抓到的报文数据包啦:

image-20231216223013711

但是会发现数据报文非常多,因为还会有其他的电脑或者设备连接在此WiFi中,并且也使用10信道。

5. 清除抓取的数据

上面我们抓的数据怎么清除重抓?我们可以全选(好像不全选也行)这个数据包,然后菜单栏上【Edit】→【clear all packets】

image-20231216224627013

6. 过滤指定物理地址的报文

上面我们看到抓到的数据包非常多,不知道哪个是我们的电脑和路由器之间的数据包,我们可以在抓包前配置一个过滤器,只抓我们自己的电脑连接WiFi过程中的数据包:【Capture】→【Filters】→【Insert】

image-20231216223658082

然后重新抓取即可,还需要确认一下这里勾选使用了这个过滤器:

image-20231216223805933

然后我们再抓包,就会发现抓取的都是路由器90-86-9b-ab-52-4b相关的包:

image-20231216223934942

但是这个包还是很多,我们想要抓路由器和我们的电脑的包,我们看一下自己电脑的物理地址,我们使用ipconfig -all命令在命令行查看:

image-20231216224232547

我们可以编辑刚才的过滤器,添加我们电脑的物理地址:

image-20231216224346018

然后再抓包就会看到只抓我们的电脑和路由器之间的包啦。我们可以先断开WiFi连接,然后开启抓包,然后再点击WiFi进行连接,之后就可以抓到相关的包啦:

image-20231216225147503

可以看到,这一次就只抓了路由器90-86-9b-ab-52-4b和我们的电脑之间的包啦。我们单击这个报文,就可以看到详细的报文信息:

image-20231216225402943

7. 抓指定的WiFi帧

我们可以通过过滤器,来只抓WiFi的数据帧,控制帧,管理帧等:【Capture】→【Filters】→【Insert】→【勾选Protocol】→【选择要抓取的协议类型】

image-20231217082131148