问题标签 [l2cap]
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.
c - 通过 HCI 建立 L2CAP 连接
我一直在尝试通过套接字在两个 NRF52-52840 USB 加密狗之间建立 BLE 连接并发送数据。此外,我对通过 HCI 层发送 L2CAP 数据感兴趣。
我能够从客户端在两个设备之间建立 LE 连接,为此我还获得了hci_handle来传输数据,但我不确定如何在服务器端获取句柄。
我尝试在服务器上同时打开 HCI 和 L2CAP 套接字。使用前一种方法时,listen()和accept()函数会出错,因为 HCI 套接字不支持这些操作。对于后一种方法,执行在accept()处停止。
我是在做一些概念上的错误还是由于错误的 PSM/CID 值(我在 BT 规范的帮助下尝试了一堆)?我希望你能指出一个明显的错误。
带有 HCI 套接字的客户端:
带有 L2CAP 套接字的服务器:
连接已正确建立,因为我可以通过bluetoothctl读取远程设备的服务和特征,但未返回句柄。
编辑#1
事实证明,您不能像这样直接写入套接字,这就是为什么btmon也没有捕获任何输出的原因。我已经实现了使用 L2CAP 标头封装数据并通过 HCI 套接字发送数据的功能。以下示例实现了“ATT:交换 MTU 请求”。
这现在被btmon这样捕获:
并被hcidump --raw这样捕获:
这也被目标系统上的btmon和hcidump捕获。
我正在继续对如何在服务器端打开句柄进行故障排除。欢迎任何想法。
编辑#2
所以我也设法在服务器端接收消息。事实证明,在尝试读取服务器端的任何信息之前,您必须首先为 HCI 套接字通道设置正确的过滤器。在这里,我为任何感兴趣的人创建了一个演示功能。客户端正在运行与编辑#1 中演示的代码类似的代码。
这个话题现在可以关闭了,因为我已经设法解决了这个问题。
android - 是否可以通过 L2CAP 连接 iOS (11.4) 和 Android (10+)
是否可以通过 L2CAP 连接 iOS (11.4) 和 Android (10+) ?
我知道通过 BLE 它可以工作,问题是针对 L2cap 交叉功能 ios/android - 有人吗?
ios - 是否可以使用 CBPeripheral 通过蓝牙从 iOS 连接到 macOS
我正在尝试使用蓝牙连接 iOS 和 macOS。它们已经通过蓝牙连接但是当我尝试使用 CBCentralManager 以编程方式快速检索它们时,didDiscover 外围设备它没有列出它。我正在尝试打开一个外围设备.openL2CAPChannel(0x1001 ) 使用 macOS 但我无法将外围设备识别为 macOS
ios - MacOS中IOBluetooth框架中的L2CapChannel能否用iOS中Core蓝牙框架中的L2capChannel进行评论
我正在尝试在 Mac OS 和 iOS 之间进行通信以来回发送数据。在 Mac OS IOBluetooth 框架中提供 L2cap 通道,但是当我打开它并使用 iOS Core Bluetooth L2CAP 时它不会连接到通道。我如何让它们像无论框架如何,l2capchannel 都应该相同。任何想法或建议
bluetooth - 如何在两个设备之间创建蓝牙 L2CAP 连接?
Android 10
发布了对BLE CoC 连接的支持,所以我想通过制作两个简单的应用程序来尝试这个android 10
,它们可以相互连接l2Cap
并交换“Hello World”。
我写了两个应用程序,服务器应用程序和客户端应用程序,它们在清单文件中都具有他们需要的所有权限,我在两部Android 10
手机上运行这些应用程序,但连接没有建立。
这是我的服务器应用程序代码的相关部分:
变量 int psm 是我在客户端应用程序中使用的 PSM 值。
这是我的客户端应用程序代码的相关部分:
其中字符串PAIRED_DEVICE_NAME
是预期设备的名称,由于设备已蓝牙配对,因此已成功找到。Int psm_value 是来自服务器应用程序的 PSM 值。我怀疑这可能是一个问题,因为我每次尝试测试时都从服务器硬编码了这个值(每次都是不同的值,因为这个值是动态分配的,它会持续到你关闭服务器套接字)。
所以我的问题是如何获得远程 PSM 值?以及如何连接这些设备,因为如果我使用 RFCOMM 连接,这段代码可以完美运行。使用此代码,我bluetoothSocket.connect()
从客户端应用程序中收到错误消息:
java.io.IOException:读取失败,套接字可能关闭或超时,读取 ret:-1
谢谢!
android - Android 10 L2CAP 连接 IOException 超时 Wii 平衡板
背景
很久以前,我的任务是为 Wii 平衡板制作一个 android 应用程序,经过一番折腾后,我发现 android 不再支持 L2CAP。更多的研究导致它被重新添加到 Android 10 中。随着 Android 10 的推出,我现在一直在尝试破解它。
问题
所以我现在的简单目标是与 Wii 平衡板建立连接。
我的连接方法是:
开始发现
将发现的蓝牙设备添加到列表
当您单击设备时,它会尝试打开一个套接字,如下所示:
bluetoothSocket = btDevice.createInsecureL2capChannel(port);
正如WiiBrew网站上提到的,我使用 psm 值 0x13 作为输入,使用 0x11 作为输出。
然后我使用
bluetoothSocket.connect
并继续接收 IOException(超时错误)我也尝试过使用两者
createL2capChannel
并createInsecureL2capChannel
获得相同的结果我能够成功地使用手机 BT 地址与设备配对
btDevice.createBond()
,然后向后使用手机 BT 地址.setpin()
,Wii 平衡板只是充当“哑”输入设备。(不确定是否需要配对/好主意)
以上是我尝试连接的简化流程。我还尝试使用BalanceBoard.java
Paul Burton 的fitscales repo 更新所有旧蓝牙代码,但我仍然会超时。
bluetooth - 发送 GAP ACL L2CAP 数据包
要提供有关此问题的一些背景知识,请尝试测试 CVE-2020-0022。
不知道最后怎么触发。
编写了发送分段 ACL L2CAP 数据包的代码,所以也许有人觉得它有用。
在您将 ACL MTU 更改为所需的之前,即
下面还尝试更改连接 MTU,但我不确定它是否有效以及是否需要这样做。来自的响应不是零散的,正在考虑前面提到的将实现这一点。
您可以在屏幕截图中看到它:
但是,无法触发该错误。
来自移动蓝牙的日志:
以某种方式触发它
如您所见,上面不是。
以为,一些棘手的碎片会导致它....
我将结束这个问题。
更新1:
重新开放...
好的,我想我明白了
以下是移动(Android)蓝牙子系统日志:
仍在努力使进程崩溃
仍在等待作者的官方 Writeup 和 PoC ......同时,如果我在这里进一步弄清楚,将会发布:
https://github.com/marcinguy/CVE-2020-0022/blob/master/README.md
android - 为什么 android.bluetooth.BluetoothAdapter#listenUsingL2capOn(int) 无法访问?
这可能是一个新手问题,因为我对 Android 的经验有限,但由于某种原因我无法访问该方法android.bluetooth.BluetoothAdapter#listenUsingL2capOn(int)
。它似乎是公开的,因此不确定为什么该符号未被识别。顺便说一句,如何在 android 上打开 L2CAP 蓝牙套接字服务器?我发现只有一个问题与此有关 -如何在 Android 中实例化 L2Cap 套接字?. 任何帮助,将不胜感激。
bluetooth-lowenergy - 为蓝牙低功耗设备实施 DTLS 握手
我正在尝试在两个 BLE 设备之间实现 DTLS 握手。为此,我想使用 BLE 的 L2CAP 通道与来自 DTLS 的消息进行通信。基本上,我想在 BLE 堆栈中的 L2CAP 的帮助下打开一个 DTLS 隧道。我为此使用了 mbedTLS 库。来自 MbedTLS 的文档(https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS),我知道我需要设置 mbed_tls_ssl_set_bio() 函数,该函数具有与 BLE 顶层 (L2CAP) 通信的读写回调函数。我正在使用对话框的 DA14695 加密狗来实现。我不太确定需要编写以与 BLE 的 L2CAP 通道通信的读写回调函数。有使用 BLE 顶层打开 TLS/DTLS 隧道经验的人可以提供帮助。
提前致谢