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

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

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

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

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

Категории

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

BTLE

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

Репозиторий
930174113 месяцев назадПроверено 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
    
    Скачать инструмент