问题标签 [bluetooth-oob]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
12856 浏览

android - Android 上的蓝牙“带外”(OOB) 配对?

我一直在搜索互联网,但没有看到任何关于如何准确实现 OOB 配对的方法。我希望这里有人可以向我指出一些示例代码来帮助我。Android 开发者网站中的聊天示例根本没有真正深入探讨这种配对。

基本上,我有一个 Android 平板电脑,我想安全地与一个设备配对,用 C++ 编写,没有内置的显示/IO 机制。要配对的平板电脑将充当 GUI/IO 接口,我将通过蓝牙发送回消息和第四个消息。因此,我想通过 OOB 配对方案将平板电脑与每个设备安全配对。

我了解 OOB 的概念,但是在 android.developers.com 网站上查找我的 android 客户端代码时,我很难找到要调用的正确方法。此外,在查看 bluez 的东西时,我找不到太多可用于我的 C++ 编写服务器的内容。

基本用例是用户将通过 USB 连接将平板电脑连接到设备。USB 连接将有助于为每个设备传递密钥/mac 地址,然后使用该信息对蓝牙彼此。

我可以弄清楚 USB 部分,但是一旦我在客户端和服务器上获得了密钥和必要的信息,我似乎无法找到正确的方法来调用两端以成功和安全地配对。

我已经有一个客户端/服务器通过不安全的连接进行通信,所以我唯一遇到的问题是两端的实际配对。配对后,我可以使用secureRFComm 来处理我未来的所有消息传递。

0 投票
1 回答
9525 浏览

android - 蓝牙配对 - 如何显示简单的取消/配对对话框?

我在 GitHub 上为这个问题准备了一个简单的测试项目。

我正在尝试创建一个 Android 应用程序,该应用程序将扫描计算机屏幕上的二维码,然后使用数据(MAC 地址和 PIN 或哈希)轻松与蓝牙设备配对(绑定)。

类似于流行的InstaWifi 应用程序- 但适用于经典蓝牙。

出于测试目的,我还没有进行任何条码扫描,只是显示设备列表:

设备列表

用户触摸其中一台设备后,在MainActivity.java中尝试配对:

不幸的是,弹出窗口仍然要求输入 PIN:

固定对话框

因为我实际上已经在我的源代码中指定了一个 PIN,所以我实际上希望显示另一个更简单的系统对话框(在进行 NFC OOB 配对时会显示这个对话框):

配对对话

通过搜索解决方案,我知道有一个setPin()方法,但它在这里不适用(或者是吗?) - 因为我正在尝试将整个智能手机与蓝牙设备配对,而不仅仅是应用程序......

我的问题:如何让 Android 操作系统显示简单的取消/配对对话框?

在 GitHub 上搜索蓝牙配对请求字符串没有显示任何提示...

更新:根据 unrealsoul007 的建议(谢谢),我更新了MainActivity.java中的源代码,现在显示了简单的取消/配对对话框:

但是我不确定如何完成配对过程 - 因为甚至在对话框关闭之前onActivityResult调用:resultCode=0

0 投票
1 回答
6059 浏览

android - 使用 QR 码作为带外 (OOB) 通道的蓝牙安全简单配对 (SSP)

我有一个 Windows 7 应用程序,它使用Stollmann SDK成功地将 PC 与 Android 绑定。蓝牙 MAC 地址、哈希和随机器的双向交换通过 NFC在带外进行:

带有二维码的应用程序

遗憾的是,Windows 应用程序的源代码无法在此处共享。在 Android 端,不需要任何应用程序,一旦收到 NDEF 消息,操作系统(由HandoverManager ?)执行安全简单配对application/vnd.bluetooth.ep.oob

现在我正在尝试创建一个 Android 应用程序,它将使用单向身份验证通过扫描的 QR 码(而不是 NFC)执行 OOB 配对。

自定义二维码将显示在 PC 屏幕上(由ZXing.Net生成)并包含蓝牙 MAC 地址、哈希和随机数。

然而,OOB 绑定似乎尚未在 Android 中实现 -

蓝牙适配器.java

蓝牙设备.java

我的问题:

由于 OOB 蓝牙配对在 Android 上的 NFC 上运行良好 - 你认为有一种(hackish)方法可以通过 QR 码来做同样的事情吗?

也许(疯狂的想法)通过HandoverManager提供虚假的 NDEF 消息?

0 投票
0 回答
994 浏览

ios - iOS 设备和嵌入式 Linux 之间的带外配对

我正在通过 USB(iAP2 协议,CarPlay)在iOS 10设备(iPhone)和嵌入式 Linux设备(3.10 内核版本,5.35 BlueZ版本)之间实现 OOB 配对。

我的问题是:BlueZ 是否支持这种配对?在哪里可以找到这方面的一些信息?

我现在拥有的:

  • OBB 配对从 iOS 端完美运行(例如,在第一次建立 USB 连接后,我的 Linux 设备位于手机的“我的设备”蓝牙部分)。
  • 在 Linux 附件方面,我正在接收 iPhone 的mac 地址和链接密钥,并将其写入/var/lib/bluetooth/${self_mac_addr}/${recieved_iphones_mac_addr}/info文件。结果,我可以在重新启动bluetoothd服务时看到设备“配对”。

我想要完成的事情:

  • 将 iPhone 添加到 Linux 设备的 bluez“已配对”部分,而无需重新启动bluetoothd.
  • 接收 iPhone 的名称以写入上述文件(现在我使用 mac 地址作为名称)。
0 投票
1 回答
1838 浏览

ios - BlueZ:通过它的mac地址获取设备名称

背景:我正在研究iOS 设备和嵌入式 Linux板之间的 OOB 配对(通过 USB)。目前,在 Linux 方面,我正在接收蓝牙链接密钥(未来连接所需)和mac address
ps:如果您熟悉这个主题 - 请也看看这个问题

我当前的实现,使用 mac 地址作为设备名称(有关详细信息 - 请参阅上述问题的链接),该问题在第二次bluetoothd服务重启后得到解决。


问题:有没有办法在 BlueZ 的帮助下获取设备的蓝牙名称?我将在 C 代码中使用它来访问 BlueZ 的 DBus 接口。