Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/jiaoxianjun/btle
Сниффинг и анализ пакетовБезопасность BluetoothБезопасность IoTБезопасность беспроводных сетей
GitHubjiaoxianjun/btle

BTLE

Сниффер пакетов и передатчик Bluetooth Low Energy (BLE) для стандартных и нестандартных (сырых битов) на основе программно-определяемого радио (SDR).

Репозиторий
9271712 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

BTLE

========

BTLE — это бесплатный и открытый программный комплекс Software Defined Radio (SDR) для Bluetooth Low Energy (BLE), а также открытая разработка BTLE-чипа.

Включает в себя:

  • Описание алгоритмов BTLE baseband, реализацию на Python и Verilog, результаты для FPGA и SkyWater 130 PDK (рабочий процесс OpenLane2).
  • Реализацию на базе Analog Devices AD9361 + Xilinx Zynq FPGA: FPGA Bluetooth
  • btle_rx — BLE-сниффер. Помимо прослушивания широковещательного/фиксированного канала, он также может отслеживать перескок частоты (hopping) канала связи.
  • btle_tx — универсальный передатчик BLE-пакетов. Помимо стандарта BLE, он также поддерживает режим raw bit для генерации произвольных GFSK-пакетов. Таким образом, вы можете тестировать нестандартный протокол или обсуждаемый стандарт до появления чипа на рынке.

Возможности

  • PHY и верхние уровни реализованы в программном обеспечении (язык C). Полная гибкость Software Defined Radio.
  • Стандартный BLE PHY с GFSK 1 Мбит/с.
  • Поддерживаются все форматы пакетов канального уровня для ADV и DATA каналов из Core_V4.0 (главы 2 и 3, часть B, том 6).
  • Сниффер способен автоматически анализировать и отслеживать схему перескока частоты, не ограничиваясь широковещательным или фиксированным каналом.

Оборудование

  • HackRF
  • bladeRF
  • совместимая версия библиотек HackRF и bladeRF

Сборка и быстрая проверка

Убедитесь, что ваше SDR-оборудование (драйвер/библиотека) настроено правильно, прежде чем запускать этот проект.

root@kitploit:~
git clone https://github.com/JiaoXianjun/BTLE.git
cd BTLE/host
mkdir build
cd build
cmake ../                   (default. for HackRF)
cmake ../ -DUSE_BLADERF=1   (only for bladeRF)

make
./btle-tools/src/btle_rx

Приведённая выше команда выполняет сниффинг на канале 37. Если рядом есть BLE-устройства (телефон/планшет/ноутбук), на экране должно появиться множество пакетов.

root@kitploit:~
./btle-tools/src/btle_tx 37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-LOCAL_NAME09-SDR/Bluetooth/Low/Energy r500 

Приведённая выше команда передаёт discovery-пакеты в ADV-канале. В другом BLE-сниффере (например, LightBlue) вы должны увидеть устройство с именем "SDR/Bluetooth/Low/Energy".

Для более быстрой последовательности операций на HACKRF используйте следующее:

root@kitploit:~
#define TRANSFER_COUNT 4
#define TRANSFER_BUFFER_SIZE 4096

в hackrf/host/libhackrf/src/hackrf.c. Затем перекомпилируйте библиотеку HACKRF и переустановите её. Не забудьте перекомпилировать BTLE, чтобы изменения библиотеки HACKRF вступили в силу.

Кроме инструментов, в каталоге matlab содержатся сценарии оценки алгоритмов и другие полезные скрипты

Использование btle_rx

root@kitploit:~
-h --help

Вывести все аргументы/варианты использования.

root@kitploit:~
-c --chan

Номер канала. По умолчанию 37 (один из ADV-каналов). Допустимые значения 0~39 (все ADV- и DATA-каналы).

root@kitploit:~
-g --gain

Коэффициент усиления при приёме (Rx gain) в дБ. У HACKRF rxvga по умолчанию 6, диапазон 0–62. У bladeRF по умолчанию максимальный Rx gain 66 дБ (диапазон 0–66). Усиление следует подбирать очень тщательно, чтобы обеспечить наилучшую производительность в ваших условиях. Рекомендуется начинать с низкого усиления, потому что высокое усиление всегда вызывает сильные искажения и не даёт результата.

root@kitploit:~
-l --lnaGain

Коэффициент усиления LNA в дБ (только HackRF). По умолчанию 32, диапазон 0–40. Усиление следует подбирать очень тщательно, чтобы обеспечить наилучшую производительность в ваших условиях.

root@kitploit:~
-b --amp

Включить усилитель (amp) (только HackRF). По умолчанию выключен.

root@kitploit:~
-a --access

Адрес доступа (access address). По умолчанию 8e89bed6 для ADV-каналов 37, 38, 39. Для data-канала следует указывать правильное значение в соответствии с захваченной процедурой установки соединения.

root@kitploit:~
-k --crcinit

По умолчанию 555555 для ADV-канала. Для data-канала следует указывать правильное значение в соответствии с захваченной процедурой установки соединения.

root@kitploit:~
-v --verbose

Подробный режим. Выводить больше информации при ошибке

root@kitploit:~
-r --raw

Сырой режим. После обнаружения адреса доступа выводить следующие 42 сырых байта (без дескремблирования и разбора)

root@kitploit:~
-f --freq_hz (need argument)

Эта частота (Гц) переопределит настройку канала (если нужно работать на частоте, отличной от BTLE. Более универсально).

root@kitploit:~
-m --access_mask (need argument)

Если в этой маске бит равен 1, соответствующий бит адреса доступа будет учитываться при принятии решения о наличии пакета (если нужна более короткая/разреженная уникальная последовательность для обнаружения пакета. Более универсально).

root@kitploit:~
-o --hop

Включает отслеживание data-канала (перескок частоты) после того, как информация о настройке соединения захвачена в пакете ADV_CONNECT_REQ на ADV-канале.

root@kitploit:~
-s --filename

Сохранять пакеты в pcap-файл.

Использование btle_tx

root@kitploit:~
btle_tx packet1 packet2 ... packetX ...  rN

или

root@kitploit:~
btle_tx packets.txt

packets.txt — это текстовый файл, содержащий параметры командной строки (packet1 packet2 ... rN). Один параметр в строке. Строка, начинающаяся с "#", считается комментарием. См. пример packets.txt

root@kitploit:~
packetX 

это одна строка, описывающая один пакет. Все пакеты образуют последовательность пакетов.

root@kitploit:~
rN

означает, что последовательность будет повторена N раз. Если параметр не указан, последовательность будет отправлена только один раз.

Формат строки packetX

root@kitploit:~
channel_number-packet_type-field-value-field-value-...-Space-value

Каждая строка-дескриптор начинается с номера BTLE-канала (0~39), затем следует packet_type (RAW/iBeacon/ADV_IND/ADV_DIRECT_IND/и т. д. См. все примеры форматов В КОНЦЕ: Приложение), затем пара поле-значение, специфичная для packet_type, и в конце — пара Space-value (необязательная), где значение указывает, сколько миллисекунд ожидать после отправки этого пакета.

НЕ используйте пробел " " в дескрипторе пакета в командной строке. В дескрипторе пакета в txt-файле пробел использовать МОЖНО.

НЕ используйте "-" внутри каждого поля. "-" — это служебный символ, используемый для разделения полей в дескрипторе пакета.

  • btle_tx пример: Discovery-пакеты

Откройте приложение LightBlue (или другой BLE-сниффер) на iPhone/устройстве перед выполнением этой команды:

root@kitploit:~
./btle-tools/src/btle_tx ../btle-tools/src/packets_discovery.txt

В приложении LightBlue вы увидите устройство с именем "SDR Bluetooth Low Energy".

Соответствующая командная строка:

root@kitploit:~
./btle-tools/src/btle_tx 37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-LOCAL_NAME09-SDR/Bluetooth/Low/Energy r40

Примечание: пробел " " заменён на "/", поскольку пробел " " не поддерживается в командной строке.

  • btle_tx пример: установление соединения
root@kitploit:~
btle_tx 37-ADV_IND-TxAdd-0-RxAdd-0-AdvA-90D7EBB19299-AdvData-0201050702031802180418-Space-1      37-CONNECT_REQ-TxAdd-0-RxAdd-0-InitA-001830EA965F-AdvA-90D7EBB19299-AA-60850A1B-CRCInit-A77B22-WinSize-02-WinOffset-000F-Interval-0050-Latency-0000-Timeout-07D0-ChM-1FFFFFFFFF-Hop-9-SCA-5-Space-1     9-LL_DATA-AA-60850A1B-LLID-1-NESN-0-SN-0-MD-0-DATA-XX-CRCInit-A77B22-Space-1

Приведённый выше пример моделирует процедуру установления соединения между устройством 1 и устройством 2. Соответствующий файл дескрипторов: BTLE/host/btle-tools/src/packets.txt.

1-й пакет — устройство 1 отправляет пакет ADV_IND в канале 37.

2-й пакет — после того как устройство 2 (в состоянии сканирования) получает ADV-пакет от устройства 1, устройство 2 отправляет пакет CONNECT_REQ для запроса установления соединения с устройством 1. В этом запросе содержатся MAC-адрес устройства 2 (InitA), целевой MAC-адрес (MAC-адрес устройства 1 — AdvA), адрес доступа (AA), который будет использоваться устройством 1 при последующей отправке пакетов в data-канале, значение инициализации CRC для последующих пакетов устройства 1, информация о перескоке канала (ChM и Hop) для data-канала, используемого устройством 1, и т. д.

3-й пакет — устройство 1 отправляет пустой PDU данных канального уровня в канале 9 (выбранном схемой перескока) в соответствии с информацией о запросе соединения, полученной от устройства 2. ("XX" после поля "DATA" означает, что в этом поле нет данных)

Интервал между пакетами — 1 с (1000 мс). Настройте пакетный сниффер TI на канал 37, и приведённая выше процедура установления соединения будет захвачена.

  • btle_tx пример: iBeacon
root@kitploit:~
./btle-tools/src/btle_tx 37-iBeacon-AdvA-010203040506-UUID-B9407F30F5F8466EAFF925556B57FE6D-Major-0008-Minor-0009-TxPower-C5-Space-100     r100

Эта команда отправляет iBeacon-пакет и повторяет его 100 раз с интервалом 100 мс. Соответствующий файл дескрипторов: BTLE/host/btle-tools/src/packets_ibeacon.txt. Для просмотра пакета можно использовать BLE-сниффер-донгл.

Строка-дескриптор пакета:

root@kitploit:~
37-iBeacon-AdvA-010203040506-UUID-B9407F30F5F8466EAFF925556B57FE6D-Major-0008-Minor-0009-TxPower-C5-Space-100
root@kitploit:~
37

канал 37 (один из рекламных BTLE-каналов 37, 38, 39)

root@kitploit:~
iBeacon

ключевое слово формата пакета, означающее формат iBeacon. (На самом деле это формат ADV_IND из Core_V4.0.pdf)

root@kitploit:~
AdvA

Рекламный адрес (MAC-адрес), заданный как 010203040506 (см. Core_V4.0.pdf)

root@kitploit:~
UUID

здесь задаётся фиксированный UUID Estimote: B9407F30F5F8466EAFF925556B57FE6D

root@kitploit:~
Major

старшее число (major) формата iBeacon. (Здесь 0008)

root@kitploit:~
Minor

младшее число (minor) формата iBeacon. (Здесь 0009)

root@kitploit:~
Txpower

параметр мощности передачи формата iBeacon (здесь C5)

root@kitploit:~
Space

Сколько миллисекунд ожидать после отправки этого пакета. (Здесь 100 мс)

Демо

Сравнение с пакетным сниффером TI смотрите здесь: http://sdr-x.github.io/BTLE-SNIFFER/

Смотрите видеодемонстрацию btle_rx или видеодемонстрацию btle_rx (для Китая) и видеодемонстрацию btle_tx 1 или видеодемонстрацию btle_tx 2 (для Китая)

Приложение: Примеры дескрипторов пакетов btle_tx для всех форматов


RAW-пакеты: (все биты отправляются непосредственно в GFSK-модулятор)

root@kitploit:~
37-RAW-aad6be898e8dc3ce338c4cb1207730144f9474e0e15eedb378c3bc

Пакеты рекламных каналов (ADVERTISING CHANNEL), например канал 37:

root@kitploit:~
37-IBEACON-AdvA-010203040506-UUID-B9407F30F5F8466EAFF925556B57FE6D-Major-0008-Minor-0009-TxPower-C5
37-ADV_IND-TxAdd-1-RxAdd-0-AdvA-010203040506-AdvData-00112233445566778899AABBCCDDEEFF
37-ADV_DIRECT_IND-TxAdd-1-RxAdd-0-AdvA-010203040506-InitA-0708090A0B0C
37-ADV_NONCONN_IND-TxAdd-1-RxAdd-0-AdvA-010203040506-AdvData-00112233445566778899AABBCCDDEEFF
37-ADV_SCAN_IND-TxAdd-1-RxAdd-0-AdvA-010203040506-AdvData-00112233445566778899AABBCCDDEEFF
37-SCAN_REQ-TxAdd-1-RxAdd-0-ScanA-010203040506-AdvA-0708090A0B0C
37-SCAN_RSP-TxAdd-1-RxAdd-0-AdvA-010203040506-ScanRspData-00112233445566778899AABBCCDDEEFF
37-CONNECT_REQ-TxAdd-1-RxAdd-0-InitA-010203040506-AdvA-0708090A0B0C-AA-01020304-CRCInit-050607-WinSize-08-WinOffset-090A-Interval-0B0C-Latency-0D0E-Timeout-0F00-ChM-0102030405-Hop-3-SCA-4

Пакеты DATA-каналов, например канал 9:

root@kitploit:~
9-LL_DATA-AA-60850A1B-LLID-1-NESN-0-SN-0-MD-0-DATA-XX-CRCInit-A77B22
9-LL_CONNECTION_UPDATE_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-WinSize-02-WinOffset-0e0F-Interval-0450-Latency-0607-Timeout-07D0-Instant-eeff-CRCInit-A77B22
9-LL_CHANNEL_MAP_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-ChM-1FFFFFFFFF-Instant-0201-CRCInit-A77B22
9-LL_TERMINATE_IND-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-ErrorCode-12-CRCInit-A77B22
9-LL_ENC_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-Rand-0102030405060708-EDIV-090A-SKDm-0102030405060708-IVm-090A0B0C-CRCInit-A77B22
9-LL_ENC_RSP-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-SKDs-0102030405060708-IVs-01020304-CRCInit-A77B22
9-LL_START_ENC_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-CRCInit-A77B22
9-LL_START_ENC_RSP-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-CRCInit-A77B22
9-LL_UNKNOWN_RSP-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-UnknownType-01-CRCInit-A77B22
9-LL_FEATURE_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-FeatureSet-0102030405060708-CRCInit-A77B22
9-LL_FEATURE_RSP-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-FeatureSet-0102030405060708-CRCInit-A77B22
9-LL_PAUSE_ENC_REQ-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-CRCInit-A77B22
9-LL_PAUSE_ENC_RSP-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-CRCInit-A77B22
9-LL_VERSION_IND-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-VersNr-01-CompId-0203-SubVersNr-0405-CRCInit-A77B22
9-LL_REJECT_IND-AA-60850A1B-LLID-3-NESN-0-SN-0-MD-0-ErrorCode-00-CRCInit-A77B22

Discovery-пакеты: (позволяют отобразить любое имя или сервисы в приложении-сканере, например LightBlue):

root@kitploit:~
37-DISCOVERY-TxAdd-1-RxAdd-0-AdvA-010203040506-FLAGS-02-LOCAL_NAME09-CA-TXPOWER-03-SERVICE03-180D1810-SERVICE_DATA-180D40-MANUF_DATA-0001FF-CONN_INTERVAL-0006 (-SERVICE_SOLI14-1811)

FLAGS: 0x01 LE Limited Discoverable Mode; 0x02 LE General Discoverable Mode
SERVICE:
0x02 16-bit Service UUIDs More 16-bit UUIDs available
0x03 16-bit Service UUIDs Complete list of 16-bit UUIDs available
0x04 32-bit Service UUIDs More 3a2-bit UUIDs available
0x05 32-bit Service UUIDs Complete list of 32-bit UUIDs available
0x06 128-bit Service UUIDs More 128-bit UUIDs available
0x07 128-bit Service UUIDs Complete list of 128-bit UUIDs available
Скачать инструмент