为什么使用 pyshark 使用 BLE PCAP 会给我不合适的结果

Why does using pyshark giving me inappropriate results with BLE PCAP

我在 pyshark/scapy 方面的经验有限,例如从嗅探器设备捕获蓝牙低功耗。我没有成功地寻找解决方案。欢迎任何关于如何实现这一目标的想法或建议。提前致谢。

设置:

我有两个嗅探器设备,分别是 Ubertooth 和 nrf51-DK。带有 BLE 4.1 和 Android smartphone 的智能手表。平台是ubuntu14.04。

目标:

我的目标是在应用程序(例如:相册或浏览器)运行期间捕获智能手表与 phone 之间的通信。我只需要数据包长度、源地址和目标地址。

当前状态:

最初,我是从nrf51-DK入手的。它没有从配对过程中捕获,所以我买了 Ubertooth 设备,它显示了配对过程,但没有显示两个设备之间通信的任何其他有用组件。但是,有一个叫做 "unknown" 的东西,如下图所示。

Wireshark with no Source and Destination in Unknown info

问题:

1. 智能手表和smartphone之间的传输能不能至少抓到90%?

  1. Wireshark 没有显示任何地址(源和目标)。我还能使用 pyshark/scapy 解码 "Unknow" 吗?

备注:

对于问题 1,我环顾四周发现了以下内容:

"This feature causes the MAC address within the advertising packets to be replaced with a random value that changes at timing intervals determined by the manufacturer. Any malicious device(s), placed at intervals along your travel route, would not be able to determine that the series of different, randomly generated MAC addresses received from your device actually relates to the same physical device. It actually looks like a series of different devices, thus, it will not be possible to track you using the advertised MAC address"

所以我不太确定 Ubertooth-one 或其他嗅探器设备是否能够捕获 90% 的传输。

对于问题2,我已经保存了PCAP文件并尝试使用pyshark和scapy在python中显示源地址和目标地址,但它不包含地址:

cap = pyshark.FileCapture('Test_1.pcap')
print(cap[2].ip.src)

输出:

pyshark.tshark.tshar.TsharkNotFoundException: Tshark not found. Try adding its location to the configuration file.

我想我的 Wireshark 版本低于 pyshark 要求。 (当前:1.12.1)。但是,我必须为我的嗅探器设备使用旧版本的 Wireshark。因此,我不确定是旧版本的 Wireshark 导致了问题,还是我使用 pyshark 的方式有误。

问题 2 更新:

apt install tshark

我想知道这样做是否是好的做法,如果不是,实现此目的的最佳方法是什么?

只要嗅探器捕获到CONNECT_IND数据包(以前称为CONNECT_REQ),它就能跟踪整个连接。当然,如果信号不够好,一些数据包可能会丢失。如果发生通道映射或连接参数更新,则嗅探器获取此数据包至关重要(否则它将与连接失去同步)。

并不是每个数据包都发送蓝牙设备地址。它仅在 CONNECT_IND 数据包(和广告数据包)中发送。

您使用 Wireshark 遇到的问题可能是因为您使用错误的 plugin/decoding 格式对其进行解码。请参阅您的嗅探器的文档。