嗅探/记录自己的Android蓝牙流量


76

我最近购买了通过蓝牙与Android手机/平板电脑连接的中文设备。由于没有适用于Windows / Linux的应用程序,因此我想创建一个供个人使用的应用程序。

通常,电话会连接到设备并交换一些数据。我将PC连接到设备,并查看了串行调试器,并设法发现了协议(仅一种方式)。电话仅向设备发送一个命令。但是这次我无法找出其中包含的内容。

是否有任何软件可以让我查看通过蓝牙发送的数据?我尝试反编译该应用程序,但它看起来确实不友好。

谢谢。


2
它是激光测距仪。您从其中收到的数据只是d5 f0 ... ... milimiters_as_uint32 0d
peku33 2014年

Answers:


83

Android 4.4(Kit Kat)确实具有针对蓝牙的新嗅探功能。您应该尝试一下。

但是,如果您不拥有嗅探设备,则不一定就没有运气。在许多情况下,我们可以通过Android 4.4中引入的新功能获得积极的结果:捕获所有蓝牙HCI数据包并将其保存到文件的能力。

当分析师通过运行正在测试的应用程序完成填充捕获文件的填充时,他可以将Android生成的文件提取到设备的外部存储中并进行分析(例如,使用 Wireshark)。

启用此设置后,Android会将数据包捕获保存到/sdcard/btsnoop_hci.log中,以供分析人员提取并检查。

如果/sdcard/您的特定设备上的路径不正确,请键入以下内容:

adb shell echo \$EXTERNAL_STORAGE

然后,我们可以打开一个外壳并拉出文件:$ adb pull /sdcard/btsnoop_hci.log并使用Wireshark进行检查,就像通过嗅探WiFi流量收集的PCAP一样,它非常简单并且得到了很好的支持:

使用Android HCI Snoop捕获Wireshark的屏幕截图

[资源]

您可以通过转到“设置”->“开发人员选项”,然后选中“蓝牙HCI监听日志”旁边的框来启用此功能。


9
@JackShultz如果看不到创建了btsnoop_hci.log,请在文本编辑器中打开/etc/bluetooth/bt_stack.conf,其中包含设备上文件的路径。对我来说,它存储在/sdcard/Android/data/btsnoop_hci.log中。
Bungle先生2015年

1
我收到一个错误:adb:错误:远程对象'/sdcard/btsnoop_hci.log'不存在
IgorGanapolsky

1
@IgorGanapolsky adb shell echo \ $ EXTERNAL_STORAGE
Stephan Branczyk

3
@StephanBranczyk在较新的设备(尤其是Nexus和Pixel)上,拉hci.log的方法可能已过时。现在必须启用开发人员设置的错误报告快捷方式,才能手动获取此日志。
IgorGanapolsky

1
您是否有使用错误报告功能在Pixel设备中检索日志的运气?我似乎无法到adb pull.log文件或通过电子邮件收到它。另外,打开和关闭dev选项对bt_stack.conf内容没有任何影响。最新的Android版本是否已禁用此功能?
尼古拉斯Fantone

7

同样,这可能有助于查找保存btsnoop_hci.log的实际位置:

adb shell "cat /etc/bluetooth/bt_stack.conf | grep FileName"

当我尝试拉该文件时,出现错误:adb:错误:远程对象'/data/misc/bluetooth/logs/btsnoop_hci.log'不存在
IgorGanapolsky

此配置文件也可以在其他一些地方,如发现/system/etc//vendor/etc/
DearVolt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.