【问题标题】:嗅探/记录您自己的 Android 蓝牙流量
【发布时间】:2014-07-15 16:16:29
【问题描述】:

我最近购买了通过蓝牙与安卓手机/平板电脑连接的中国设备。由于没有适用于 windows / linux 的应用程序,我想创建一个供个人使用。

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

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

谢谢。

【问题讨论】:

  • 它是激光测距仪。您从中收到的数据只是 d5 f0 ... ... milimiters_as_uint32 0d

标签: android bluetooth reverse-engineering


【解决方案1】:

在装有 Android 11 的小米手机上,在开发人员设置中启用“蓝牙 HCI Snoop log”后,文件似乎被写入

/data/misc/bluetooth/logs/btsnoop_hci.log(只能通过 root 访问)

/sdcard/MIUI/debug_log/common/com.android.bluetooth/btsnoop_hci.log

另外,可以通过在电脑上运行adb bugreport zipname来获取日志,写成here

请注意,日志记录仅在我重启后打开。

【讨论】:

    【解决方案2】:

    小米红米 Note 9s 这个配置文件也可以在/storage/emulated/0/MIUI/debug_log/common找到 命名为 hci_snoop20210210214303.cfa hci_snoop20210211095126.cfa

    启用“设置”->“开发人员选项”,然后选中“蓝牙 HCI 侦听日志”旁边的框。 '

    我曾使用 Total Commander 从内部存储中获取文件

    【讨论】:

      【解决方案3】:

      另外,这可能有助于找到保存 btsnoop_hci.log 的实际位置:

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

      【讨论】:

      • 当我尝试拉取这个文件时,我得到一个错误:adb: error: remote object '/data/misc/bluetooth/logs/btsnoop_hci.log' 不存在
      • 这个配置文件也可以在/system/etc//vendor/etc/等其他几个地方找到
      【解决方案4】:

      Android 4.4 (Kit Kat) 确实具有新的蓝牙嗅探功能。你应该试一试。

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

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

      一旦激活此设置,Android 将保存数据包捕获 到 /sdcard/btsnoop_hci.log 由分析师拉取并检查。

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

      adb shell echo \$EXTERNAL_STORAGE
      

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

      [source]

      您可以通过转到“设置”->“开发者选项”,然后选中“蓝牙 HCI Snoop Log”旁边的框来启用此功能。

      【讨论】:

      • @JackShultz 如果您没有看到创建的 btsnoop_hci.log,请在文本编辑器中打开 /etc/bluetooth/bt_stack.conf,它包含设备上文件的路径。对我来说,它存储在 /sdcard/Android/data/btsnoop_hci.log 中。
      • 我收到一个错误:adb: error: remote object '/sdcard/btsnoop_hci.log' 不存在
      • @IgorGanapolsky adb shell echo \$EXTERNAL_STORAGE
      • @StephanBranczyk 这种提取 hci.log 的方式在较新的设备(尤其是 Nexus 和 Pixel)上可能已过时。现在必须从开发人员设置中启用错误报告快捷方式才能手动获取此日志。
      • 您是否有幸使用错误报告功能在 Pixel 设备中检索日志?我似乎无法 adb pull .log 文件或通过电子邮件接收它。此外,打开和关闭 dev 选项对bt_stack.conf 的内容没有任何影响。是否在最新的 Android 版本中禁用了此功能?
      猜你喜欢
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多