Как подключиться к устройству BLE в режиме повышенной безопасности с помощью bluetoothctl? - PullRequest
0 голосов
/ 09 июля 2019

Мне нужно подключиться к удаленному BLE-устройству, используя Уровень безопасности Режим 1 Уровень 3 .Как мне это сделать, используя bluetoothctl, пожалуйста?

Я сделал:

  1. Подключите к устройству (успех)
  2. Pair устройство (успех)

Но, по-видимому, это не установило режим безопасности, как я хотел , потому что, когда я пытаюсь записать данную характеристику (эта характеристика доступна для записи;) Я получаю ошибку ATT «Недостаточная аутентификация (5)»

> ACL data: handle 70 flags 0x02 dlen 9
    ATT: Error (0x01)
      Error: Insufficient authentication (5)
      Write req (0x12) on handle 0x0014

Шаг за шагом, это то, что hcidump показывает после подключения:

< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7
    type 0x00 (passive)
    interval 60.000ms window 30.000ms
    own address: 0x00 (Public) policy: white list only
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Parameters (0x08|0x000b) ncmd 1
    status 0x00
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2
    value 0x01 (scanning enabled)
    filter duplicates 0x01 (enabled)
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    status 0x00
> HCI Event: LE Meta Event (0x3e) plen 43
    LE Advertising Report
      ADV_IND - Connectable undirected advertising (0)
      bdaddr D2:A7:4C:76:F3:E0 (Random)
      Flags: 0x06
      Unknown type 0x06 with 16 bytes data
      Unknown type 0xff with 8 bytes data
      RSSI: -75
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2
    value 0x00 (scanning disabled)
    filter duplicates 0x00 (disabled)
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    status 0x00
< HCI Command: LE Create Connection (0x08|0x000d) plen 25
    bdaddr D2:A7:4C:76:F3:E0 type 1
    interval 96 window 96 initiator_filter 0
    own_bdaddr_type 0 min_interval 6 max_interval 12
    latency 0 supervision_to 400 min_ce 0 max_ce 0
> HCI Event: Command Status (0x0f) plen 4
    LE Create Connection (0x08|0x000d) status 0x00 ncmd 1
> HCI Event: LE Meta Event (0x3e) plen 19
    LE Connection Complete
      status 0x00 handle 70, role master
      bdaddr D2:A7:4C:76:F3:E0 (Random)
< HCI Command: LE Read Remote Used Features (0x08|0x0016) plen 2
> HCI Event: Command Status (0x0f) plen 4
    LE Read Remote Used Features (0x08|0x0016) status 0x00 ncmd 1
> HCI Event: LE Meta Event (0x3e) plen 12
    LE Read Remote Used Features Complete
      status 0x00 handle 70
      Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
< ACL data: handle 70 flags 0x00 dlen 7
    ATT: MTU req (0x02)
      client rx mtu 517
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 70 packets 1
...

При спаривании больше не отображаются пакеты (!)

[D2A74C76F3E0]# pair D2:A7:4C:76:F3:E0
Attempting to pair with D2:A7:4C:76:F3:E0
[CHG] Device D2:A7:4C:76:F3:E0 Paired: yes
Pairing successful

Затем я делаю

[D2A74C76F3E0]# menu gatt
[D2A74C76F3E0]# select-attribute /org/bluez/hci0/dev_D2_A7_4C_76_F3_E0/service000c/char0013
[D2A74C76F3E0:/service000c/char0013]# write 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
Attempting to write /org/bluez/hci0/dev_D2_A7_4C_76_F3_E0/service000c/char0013

, и при этом выдаются следующие пакеты:

< ACL data: handle 70 flags 0x00 dlen 8
    ATT: Write req (0x12)
      handle 0x0014 value  0xFF
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 70 packets 1
> ACL data: handle 70 flags 0x02 dlen 9
    ATT: Error (0x01)
      Error: Insufficient authentication (5)
      Write req (0x12) on handle 0x0014
(loop)

Обратите внимание, что он отправляет только один байт + циклы ( это, вероятно, ошибка ).Но для меня важен ответ: «Ошибка: недостаточно аутентификации (5)», что, очевидно, означает, что уровень безопасности установлен неправильно.

Если мы посмотрим на информацию для устройства:

# info
...
    Paired: yes
    Trusted: no
    Blocked: no
    Connected: yes
    LegacyPairing: no

Итак, я считаю, что я подключился, но не в режиме 1 уровня 3. Это bluetoothctl версия 5.50 на хосте Linux Mint.Обратите внимание, что, однако, я получаю такое же поведение с bluetoothctl версии 5.43 на Raspberry Pi , за исключением того, что он правильно отправляет весь пакет записи.Но ответ тот же.

< ACL data: handle 64 flags 0x00 dlen 15
    ATT: Write req (0x12)
      handle 0x0014 value  0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
> ACL data: handle 64 flags 0x02 dlen 9
    ATT: Error (0x01)
      Error: Insufficient authentication (5)
      Write req (0x12) on handle 0x0014

1 Ответ

0 голосов
/ 09 июля 2019

<данные ACL: дескриптор 64 флага 0x00 dlen 15 ATT: запись req (0x12), дескриптор 0x0014 значение 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...