一种方法是将应用程序安装在Android VM上,连接到扬声器并捕获交换的流量。
使用VirtualBox,我可能需要将蓝牙加密狗连接为USB设备,然后让VM控制它。
如何捕获扬声器和应用之间交换的串行流量?
#1 楼
根据这个StackOverflow答案,Android从4.4开始就在开发人员选项中进行了设置。首先,您需要启用“开发人员设置”(如果尚未启用),然后启用“启用蓝牙HCI监听日志”。我还没有尝试过,但是根据信息我可以找到:
通信应记录到名为
/sdcard/btsnoop_hci.log
的文件中。如果外部存储目录不是
/sdcard
,则相应地修改路径。有些风味Android可能会使用完全不同的路径。在
FileName
中查找/etc/bluetooth/bt_stack.conf
参数以找到正确的路径。 (某些版本的Android可能会将文件放在/system/etc
或/vendor/etc
中。)在某些版本的Android(包括Android x86_64 CM 14.1)上,上述方法均无效,但您会在
/data/misc/bluetooth/logs/btsnoop_hci.log
中找到日志(您需要具有root权限来获取文件)。然后可以使用Wireshark或类似工具分析生成的文件。
要从在VirtualBox上运行的Android VM获取蓝牙:
如果您使用Linux(在Ubuntu 18.04上试用):
将自己添加到
vboxusers
组,例如通过运行sudo usermod -a -G vboxusers your_user_name
注销并重新登录以使新的组成员身份生效。
启动Android VM。
在“设备”>“ USB”中设备,将蓝牙适配器连接到虚拟机。它的名称可能不太明显(我的名字叫Intel [0001])。
可选地,添加USB过滤器,以使VM在启动时自动自动抓住BT设备。
请注意主机系统当VM使用BT适配器时,它将失去对BT适配器的访问权限。如果您有BT鼠标或键盘,请用有线鼠标替换它,或获取一个额外的BT适配器并将其用于您的VM。
但是实际上,我无法从Android VM获得可靠的蓝牙连接。我可以扫描设备并设法与BT设备配对(尽管进行了多次尝试),但是我从未设法连接到该设备。我怀疑这是因为Android占用大量资源,并且虚拟化的开销以及对4个处理器内核中2个的限制(我已经以此方式设置,以防止VM占用整个CPU)没有足够的空间来容纳Android运行平稳。将需要在物理硬件上运行的USB记忆棒上使用Android x86_64重试。