Мне интересно подключиться к устройствам на базе iOS через Bluetooth. Я вижу, что служба "Локальная сеть" разоблачена, но я не могу найти дополнительную информацию об этом. Свойство, хранящееся под ключом 0x0204, выглядит как ключ Bonjour.
Какой протокол используется? Как можно разговаривать с устройством iOS с помощью Linux, Mac или одного встроенного устройства, оснащенного чипом Bluetooth?
Здесь данные SDP, извлеченные с помощью Bluetooth Explorer под OS X, в то время как устройство iOS запускает батальон звезд Gameloft.
{
0x0000 = uint32(1330188565),
0x0200 = uint32(2),
0x0202 = string(004wD7l1A..0|0|0|ivucic-À'),
0x030a = uint32(0),
0x0009 = { { uuid16(11 15), uint16(256) } },
0x0201 = string(_657o30a6rmst07À),
0x0005 = { uuid16(10 02) },
0x0100 = string(Local Network),
0x0001 = { uuid16(11 15) },
0x0203 = string(004wd7l1a..0|0|0|ivucic-_657o30a6rmst07À
0xf000 = uint8(2),
0x0204 = string( txtvers=1state=A),
0x0008 = uint8(255),
0x0006 = { uint16(25966), uint16(106), uint16(256), uint16(26226), uint16(106), uint16(272), uint16(25701), uint16(106), uint16(288), uint16(27233), uint16(106), uint16(304) },
0x0004 = { { uuid16(01 00), uint16(15) }, { uuid16(00 0f), uint16(256), { uint16(2048), uint16(2054) } } },
0x0002 = uint32(0)
},
Другие частично актуальные вопросы:
- PAN с Linux, iOS, Bluetooth, Bonjour, GameKit - возможно? - Лицо может решить проблему с помощью Wi-Fi. Не решение здесь, потому что встроенное устройство не будет иметь более дорогой чип Wi-Fi.
- Bonjour через Bluetooth БЕЗ Gamekit? - Лучший ответ не дает технических подробностей.
- iOS bluetooth без GameKit - Предоставляет решение для взломанного устройства, которое здесь не применимо.
Изучая далее с Apple Bluetooth Explorer в OS X и sdptool
в GNU/Linux, я обнаружил, что ключ 0x0001
(стоящий для "класса протокола" ), содержащий значение 0x1115
, обозначает "PANU" вариант "PAN" - вариант peer2peer. Примечательно, что OS X не поддерживает поддержку протокола ( "хостинг" ) для этого протокола, несмотря на поддержку создания сети 0x1116
, которая представляет собой вариант "NAP" "PAN" - вариант клиент/сервер.
Это может быть хорошей новостью, но только если протокол сеанса GameKit не нужно использовать. Было бы идеальным захватить соединение медиа-уровня, установленное GameKit, чтобы отправить другой трафик UDP.
Мне все равно придется исследовать, действительно ли это соединение GameKit 0x1115
; то есть, если это действительно "PANU". У кого-нибудь есть дополнительная информация?
Обратите внимание, что Bonjour автоматически объявляет об этом услуге Bluetooth после iOS 3, это изменилось с iOS 5. См. ответ, который я опубликовал на как установить соединение Bluetooth без GameKit, где я легко документировал информацию от Apple Технический Q & A QA1753.
Небольшое количество исследований с GNU/Linux не привело к успешному соединению. Возможно, это связано с отсутствием знаний о том, как правильно использовать pand
. Это также может быть связано с блокировкой на основе MAC на MAC. Мне бы хотелось, чтобы кто-нибудь мог предложить. Если я буду исследовать это дальше и наткнуться на что-то интересное, я обновлю этот ответ.
Результаты под Ubuntu. Услуга появляется только в том случае, если активен Bluetooth Bonjour.
[email protected]:~$ sdptool browse $ADDR #relevant data only
Browsing ADDRESS_HERE ...
Service Name: Local Network
Service RecHandle: 0x4f491115
Service Class ID List:
"PAN User" (0x1115)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 15
"BNEP" (0x000f)
Version: 0x0100
SEQ8: 0 6
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
code_ISO639: 0x6672
encoding: 0x6a
base_offset: 0x110
code_ISO639: 0x6465
encoding: 0x6a
base_offset: 0x120
code_ISO639: 0x6a61
encoding: 0x6a
base_offset: 0x130
Profile Descriptor List:
"PAN User" (0x1115)
Version: 0x0100
... and so on ...
Здесь попытка подключения:
[email protected]:~$ pand --connect $ADDR -n
pand[3237]: Bluetooth PAN daemon version 4.98
pand[3237]: Connecting to ADDRESS_HERE
pand[3237]: Connect to ADDRESS_HERE failed. Connection refused(111)
Требуется ли какая-то авторизация? Включение шифрования, аутентификации, безопасного соединения и форсирования становится мастером, похоже, не имеет никакого значения (-AESM
options в различных комбинациях).
У кого-нибудь есть идеи?
Ха!
[email protected]:~$ sudo hcidump HCI sniffer - Bluetooth packet analyzer ver 2.2 device: hci0 snap_len: 1028 filter: 0xffffffff HCI Event: Command Status (0x0f) plen 4 Create Connection (0x01|0x0005) status 0x00 ncmd 1 > HCI Event: Role Change (0x12) plen 8 status 0x00 bdaddr ADDRESS_HERE role 0x01 Role: Slave > HCI Event: Connect Complete (0x03) plen 11 status 0x00 handle 12 bdaddr ADDRESS_HERE type ACL encrypt 0x00 HCI Event: Command Status (0x0f) plen 4 Read Remote Supported Features (0x01|0x001b) status 0x00 ncmd 1 > HCI Event: Read Remote Supported Features (0x0b) plen 11 status 0x00 handle 12 Features: 0xbf 0xfe 0x8f 0xfe 0x9b 0xff 0x79 0x83 HCI Event: Command Status (0x0f) plen 4 Read Remote Extended Features (0x01|0x001c) status 0x00 ncmd 1 > HCI Event: Max Slots Change (0x1b) plen 3 handle 12 slots 5 > HCI Event: Read Remote Extended Features (0x23) plen 13 status 0x00 handle 12 page 1 max 1 Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 HCI Event: Command Status (0x0f) plen 4 Remote Name Request (0x01|0x0019) status 0x00 ncmd 1 > HCI Event: Remote Name Req Complete (0x07) plen 255 status 0x00 bdaddr ADDRESS_HERE name 'Evil iPad' HCI Event: Command Status (0x0f) plen 4 Authentication Requested (0x01|0x0011) status 0x00 ncmd 1 > HCI Event: Link Key Request (0x17) plen 6 bdaddr ADDRESS_HERE HCI Event: Command Complete (0x0e) plen 10 Link Key Request Reply (0x01|0x000b) ncmd 1 status 0x00 bdaddr ADDRESS_HERE > HCI Event: Auth Complete (0x06) plen 3 status 0x00 handle 12 HCI Event: Command Status (0x0f) plen 4 Set Connection Encryption (0x01|0x0013) status 0x00 ncmd 1 > HCI Event: Encrypt Change (0x08) plen 4 status 0x00 handle 12 encrypt 0x01 HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 1 > ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Info rsp: type 2 result 0 Extended feature mask 0x02a8 Enhanced Retransmission mode FCS Option Fixed Channels Unicast Connectless Data Reception HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 1 > ACL data: handle 12 flags 0x02 dlen 20 L2CAP(s): Info rsp: type 3 result 0 Fixed channel list 0x00000006 L2CAP Signalling Channel L2CAP Connless HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 1 > ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Connect rsp: dcid 0x0000 scid 0x0040 result 2 status 0 Connection refused - PSM not supported > HCI Event: Disconn Complete (0x05) plen 4 status 0x00 handle 12 reason 0x13 Reason: Remote User Terminated Connection
Это?
> ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Connect rsp: dcid 0x0000 scid 0x0040 result 2 status 0 Connection refused - PSM not supported