Анализ сообщений данных Bluetooth
Анализ сообщений данных Bluetooth

1.Предисловие

По работе я впервые столкнулся с Bluetooth. Начните с самых базовых знаний. Цитирую введение из вики:

Bluetooth (англ. Bluetooth) — это стандарт технологии беспроводной связи, который позволяет стационарным и мобильным устройствам обмениваться данными на коротких расстояниях с образованием персональной сети (PAN). Он использует короткие радиоволны высокой частоты (УВЧ) для связи через диапазон ISM от 2,4 до 2,485 ГГц. Эта технология была разработана телекоммуникационной компанией Ericsson в 1994 году. Первоначально он был разработан с надеждой создать альтернативу беспроводной связи линии передачи данных RS-232. Он может подключать несколько устройств для решения проблем с синхронизацией. Технология Bluetooth в настоящее время поддерживается Альянсом Bluetooth Technology Alliance (SIG), который насчитывает более 30 000 членов в области телекоммуникаций, компьютеров, сетей и бытовой электроники [5]. IEEE когда-то стандартизировал технологию Bluetooth как IEEE 802.15.1, но этот стандарт больше не используется.

Стандарт Bluetooth — IEEE 802.15.1, а протокол Bluetooth работает в диапазоне частот ISM (Промышленная научная медицина) 2,45 ГГц, который не требует лицензии. Максимальная скорость может достигать 723,1 Кбит/с. Чтобы избежать помех другим протоколам, которые могут использовать частоту 2,45 ГГц, протокол Bluetooth делит полосу частот на 79 каналов (пропускная способность составляет 1 МГц), а преобразование каналов может происходить до 1600 раз в секунду.

2. Метод работы

Технология Bluetooth разделена на два типа: базовая скорость/повышенная скорость передачи данных (BR/EDR) и низкое энергопотребление (LE). Среди них тип BR/EDR использует топологию сети «точка-точка» для создания связи устройств «один-к-одному»; тип LE использует различные топологии сети, такие как «точка-точка» (один-к-одному); , широковещательная рассылка (один ко многим) и сетка (многие ко многим).

3. Разработка версии

version

4. Передача данных

Во время передачи данных модуль Bluetooth делится на два режима: ведущий и ведомый. В режиме хоста можно искать другие модули Bluetooth и активно устанавливать с ними соединения. В подчиненном режиме невозможно активно установить соединение, и подчиненное устройство находится в состоянии широковещания и ожидает запроса на соединение с хостом.

5. Пакет данных BLE Bluetooth

ИсследоватьUbertoothOne(Хотите знатьUbertoothOneВы можете прочитать предыдущие статьи)Прошло много времени,Проблем с пересадкой встроенного сегмента и запуском связанных с ubertooth команд нет. Есть еще некоторые вещи, которые я не понимаю в результатах вывода каждой команды.,Необходимо потратить время на детальный анализ и запись. Результат включает пакетный протокол Bluetooth.,Детальный анализ соответствующих полей пакета данных необходим для более эффективного ведения последующих дел.

  • каналBLEФизический канал есть“канал,Это ‘f=2402+k*2 MHz, k=0, … ,39’, 40 RF с полосой пропускания 2 МГц» Канал. Из них 3 канала рекламные канал (канал вещания), соответственно 37, 38, 39, используемый для обнаружения устройств (Сканирование устройства), инициализация соединений (инициация a соединение) и широковещательная передача данных (широковещательная передача дата); остальные 37 каналов — данные. канал (канал данных), используемый для связи между двумя подключенными устройствами.
  • Формат пакетаПри низком энергопотребленииBluetoothВ спецификации,Формат пакетаточкаШироковещательное сообщениеиДатаграммаДва вида。Широковещательное сообщение:Обнаружение устройства、Соединение установлено、передавать трансляциюДатаграмма:Адаптивная перестройка частоты и передача данных между устройствами Устройства используют широковещательные пакеты для обнаружения других устройств и подключения к ним, а после установления соединения начинают использовать пакеты данных. Будь то широковещательное сообщение или сообщение данных, канальный уровень использует только одно пакет. Состоит из «преамбулы», «кода доступа». код), «полезная нагрузка» и «проверка циклическим избыточным кодом» (Cyclical Redundancy Проверка, CRC) проверка состава кода. Среди них «код доступа» еще называют «адресом доступа/адресом доступа» (access address)。
  • преамбула:1длина байтов,Используется для синхронизации частоты, синхронизации скорости передачи данных и автоматической регулировки усиления во время приема. Преамбула представляет собой чередующуюся последовательность из 8 бит. Либо 01010101, либо 10101010.,Зависит от первого бита адреса доступа. Если первый бит адреса доступа равен 0: 01010101 Если первый бит адреса доступа равен 1: 10101010
  • Адрес доступа:4длина байтов,Адрес доступа有Два вида类型(транслировать Адрес доступаиданные Адрес доступа) Адрес широковещательного доступа: фиксированный номер 0x8E89BED6, используется при широковещании, сканировании и инициировании соединений. Адрес доступа к данным: случайный адрес, разные соединения имеют разные значения. Используется между двумя устройствами после установления соединения.
  • PDU1. PDU широковещательного сообщения: заголовок PDU широковещательного сообщения.

Тип ПДУ:

RFU: зарезервировано. TxAdd: поле адреса отправки. RxAdd: поле адреса получения. Поле адреса отправки и поле адреса получения указывают, использует ли устройство публичный адрес (публичный адрес) или случайный адрес (случайный адрес). Длина публичного адреса и случайного адреса одинакова: они содержат 6 байт и всего 48 бит. Устройство BLE должно иметь хотя бы один из этих двух типов адреса, и, конечно, оно также может иметь оба типа адреса одновременно. Длина: поле длины содержит 6 бит, допустимый диапазон значений — 6–37.

Широковещательное сообщение данных PDUданные:ВключатьNиндивидуальныйAD Структура каждого AD Структура: длина, AD Тип и AD Состав данных. Где: Длина: н.э. Тип и AD Длина данных. ОБЪЯВЛЕНИЕ Тип: указывает AD Данные Значение данных.

Язык кода:javascript
копировать
#define BLE_GAP_AD_TYPE_FLAGS                               0x01 /**< Flags for discoverability. */
#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE   0x02 /**< Partial list of 16 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE         0x03 /**< Complete list of 16 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE   0x04 /**< Partial list of 32 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE         0x05 /**< Complete list of 32 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE  0x06 /**< Partial list of 128 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE        0x07 /**< Complete list of 128 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME                    0x08 /**< Short local device name. */
#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME                 0x09 /**< Complete local device name. */
#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL                      0x0A /**< Transmit power level. */
#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE                     0x0D /**< Class of device. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C               0x0E /**< Simple Pairing Hash C. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R         0x0F /**< Simple Pairing Randomizer R. */
#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE           0x10 /**< Security Manager TK Value. */
#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS          0x11 /**< Security Manager Out Of Band Flags. */
#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE     0x12 /**< Slave Connection Interval Range. */
#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT       0x14 /**< List of 16-bit Service Solicitation UUIDs. */
#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT      0x15 /**< List of 128-bit Service Solicitation UUIDs. */
#define BLE_GAP_AD_TYPE_SERVICE_DATA                        0x16 /**< Service Data - 16-bit UUID. */
#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS               0x17 /**< Public Target Address. */
#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS               0x18 /**< Random Target Address. */
#define BLE_GAP_AD_TYPE_APPEARANCE                          0x19 /**< Appearance. */
#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL                0x1A /**< Advertising Interval. */
#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS         0x1B /**< LE Bluetooth Device Address. */
#define BLE_GAP_AD_TYPE_LE_ROLE                             0x1C /**< LE Role. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256            0x1D /**< Simple Pairing Hash C-256. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256      0x1E /**< Simple Pairing Randomizer R-256. */
#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID             0x20 /**< Service Data - 32-bit UUID. */
#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID            0x21 /**< Service Data - 128-bit UUID. */
#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA                 0x3D /**< 3D Information Data. */
#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA          0xFF /**< Manufacturer Specific Data. */

2. PDU сообщения данных

Заголовок PDU пакета данных

LLID (идентификатор логического канала): 0x01 указывает, что пакет данных является продолжением кадра, или это пустой пакет данных «Протокол управления логическим каналом и адаптации». пакет данных «Протокол» 0x03 указывает, что это содержимое пакета данных «Управление логическим каналом»; NESN: следующий ожидаемый порядковый номер, используемый для подтверждения полученного пакета. MD: больше полей данных, в основном для указания того, есть ли у отправителя еще данные для отправки получателю. RFU : Длина зарезервированного бита: используется для указания того, что он содержит «Код проверки целостности сообщения» (Сообщение Integrity Check,MIC)включено“有效载荷данные”длина。Данные PDU данныхтакой же Широковещательное сообщение данных PDU

  • Проверить код:3длина байтов,«Циклическая проверка избыточностью» (Циклическая Redundancy Check, CRC) для проверки правильности данных

Здесь начинается анализ пакетов Bluetooth, а затем конкретные выходные данные UbertoothOne анализируются в соответствии с протоколом.

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.