Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
BTLE — Sniffer de pacotes e transmissor Bluetooth Low Energy (BLE) para formatos padrão e não padrão (bit bruto) baseado em Rádio Definido por Software (SDR). | Kitploit
Ferramentas/GitHubGitHub/jiaoxianjun/btle
Sniffing e Análise de PacotesSegurança BluetoothSegurança IoTSegurança Sem FioTop em Segurança Bluetooth nº6
GitHubjiaoxianjun/btle

BTLE

Sniffer de pacotes e transmissor Bluetooth Low Energy (BLE) para formatos padrão e não padrão (bit bruto) baseado em Rádio Definido por Software (SDR).

Ver Repositório
93017411há 3 mesesRevisado pelo Kitploit
Site

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

BTLE

========

BTLE é uma suíte de software livre e de código aberto de Rádio Definido por Software (SDR) para Bluetooth Low Energy (BLE) e um projeto aberto de chip BTLE.

Inclui:

  • Descrição dos algoritmos, implementação em Python e Verilog, resultados em FPGA e SkyWater 130 PDK (fluxo de trabalho OpenLane2) da banda base BTLE.
  • Implementação com Analog Devices AD9361 + Xilinx Zynq FPGA: FPGA Bluetooth
  • btle_rx - Sniffer BLE. Além de capturar (sniff) canal de broadcasting/fixo, também consegue rastrear o salto de canal de um link de comunicação.
  • btle_tx - Transmissor universal de pacotes BLE. Além do padrão BLE, também suporta o modo de bits brutos para gerar pacotes GFSK arbitrários. Dessa forma, você pode testar protocolos não padronizados ou padrões em discussão antes de o chip chegar ao mercado.

Funcionalidades

  • A camada PHY e as camadas superiores são implementadas em software (linguagem C). Total flexibilidade de Rádio Definido por Software.
  • PHY GFSK padrão BLE de 1Mbps.
  • Todos os formatos de pacote da camada de enlace dos canais ADV e DATA do Core_V4.0 (Capítulos 2 e 3, Parte B, Volume 6) são suportados.
  • O sniffer é capaz de analisar e rastrear automaticamente o padrão de salto de canal, não se limitando ao canal de broadcasting ou canal fixo.

Hardware

  • HackRF
bladeRF
  • versão compatível das bibliotecas HackRF e bladeRF
  • Compilação e teste rápido

    Certifique-se de que o ambiente de hardware SDR (driver/lib) foi configurado corretamente antes de executar este projeto.

    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
    

    O comando acima captura (sniff) no canal 37. Você deve ver muitos pacotes na tela se houver dispositivos BLE (celular/tablet/notebook) por perto.

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

    O comando acima transmite pacotes de descoberta no canal ADV. Você deve ver um dispositivo com o nome "SDR/Bluetooth/Low/Energy" em outro aplicativo sniffer BLE (como LightBlue).

    Para ter uma sequência de operação mais rápida no HACKRF, use o seguinte:

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

    em hackrf/host/libhackrf/src/hackrf.c. Em seguida, recompile a biblioteca do HACKRF e reinstale-a. Não se esqueça de recompilar o BTLE para aplicar a alteração na biblioteca do HACKRF.

    Além das ferramentas, o diretório matlab inclui avaliação de algoritmos e outros scripts úteis

    Uso do btle_rx

    root@kitploit:~
    -h --help
    

    Imprime todos os argumentos/usos.

    root@kitploit:~
    -c --chan
    

    Número do canal. Valor padrão 37 (um dos canais ADV). Valor válido 0~39 (todos os canais ADV e DATA).

    root@kitploit:~
    -g --gain
    

    Ganho de RX em dB. HACKRF rxvga padrão 6, válido 0 - 62. bladeRF padrão é o ganho máximo de RX 66dB (válido 0 - 66). O ganho deve ser ajustado com muito cuidado para garantir o melhor desempenho na sua situação. Sugere-se testar com ganho baixo, porque ganho alto sempre causa distorção severa e não traz nenhum resultado.

    root@kitploit:~
    -l --lnaGain
    

    Ganho do LNA em dB (somente HackRF). Padrão 32, válido 0 - 40. O ganho deve ser ajustado com muito cuidado para garantir o melhor desempenho na sua situação.

    root@kitploit:~
    -b --amp
    

    Habilita o amp (somente HackRF). Padrão desligado.

    root@kitploit:~
    -a --access
    

    Endereço de acesso. Padrão 8e89bed6 para os canais ADV 37, 38 e 39. Você deve especificar o valor correto para o canal de dados de acordo com o procedimento de estabelecimento de conexão capturado.

    root@kitploit:~
    -k --crcinit
    

    Padrão 555555 para canal ADV. Você deve especificar o valor correto para o canal de dados de acordo com o procedimento de estabelecimento de conexão capturado.

    root@kitploit:~
    -v --verbose
    

    Modo verboso. Imprime mais informações quando houver erro.

    root@kitploit:~
    -r --raw
    

    Modo bruto. Após o endereço de acesso ser detectado, imprime os 42 bytes brutos seguintes (sem desscrambling, sem análise).

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

    Esta frequência (Hz) substituirá a configuração de canal (caso alguém queira trabalhar em uma frequência diferente do BTLE. Uso mais geral).

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

    Se um bit nesta máscara for 1, o bit correspondente no endereço de acesso será considerado na decisão de existência de pacote (caso alguém queira uma palavra única mais curta/mais esparsa para detecção de pacotes. Uso mais geral).

    root@kitploit:~
    -o --hop
    

    Isso ativa o rastreamento do canal de dados (salto de frequência) após as informações de estabelecimento do link serem capturadas no pacote ADV_CONNECT_REQ no canal ADV.

    root@kitploit:~
    -s --filename
    

    Armazena pacotes em arquivo pcap.

    Uso do btle_tx

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

    ou

    root@kitploit:~
    btle_tx packets.txt
    

    packets.txt é um arquivo de texto que contém o texto dos parâmetros de linha de comando (packet1 packet2 ... rN). Um parâmetro por linha. Uma linha que começa com "#" é considerada comentário. Veja o exemplo packets.txt.

    root@kitploit:~
    packetX 
    

    é uma string que descreve um pacote. Todos os pacotes compõem uma sequência de pacotes.

    root@kitploit:~
    rN
    

    significa que a sequência será repetida N vezes. Se não for especificado, a sequência será enviada apenas uma vez.

    Formato da string packetX

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

    Cada string descritora começa com o número do canal BTLE (0~39), seguido pelo packet_type (RAW/iBeacon/ADV_IND/ADV_DIRECT_IND/etc. Veja todos os exemplos de formato NO FINAL: Apêndice), seguido por pares campo-valor específicos do packet_type e, por último, há o par Space-value (opcional), em que o valor especifica quantos milissegundos serão aguardados após o envio desse pacote.

    NÃO use o caractere de espaço " " em um descritor de pacote na linha de comando. Você PODE usar espaço no descritor de pacote no arquivo txt.

    NÃO use "-" dentro de cada campo. "-" é o caractere mágico usado para separar os diferentes campos no descritor de pacote.

    • Exemplo de btle_tx: Pacotes de descoberta

    Abra o aplicativo LightBlue (ou outro sniffer BLE) no seu iPhone/dispositivo antes deste comando:

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

    Você verá um dispositivo chamado "SDR Bluetooth Low Energy" no seu aplicativo LightBlue.

    Linha de comando correspondente:

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

    Nota: o espaço " " foi substituído por "/" porque o espaço " " não é suportado na linha de comando.

    • Exemplo de btle_tx: Estabelecimento de conexão
    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
    

    Acima simula um procedimento de estabelecimento de conexão entre o dispositivo 1 e o dispositivo 2. Arquivo descritor correspondente BTLE/host/btle-tools/src/packets.txt.

    O 1º pacote -- o dispositivo 1 envia o pacote ADV_IND no canal 37.

    O 2º pacote -- Após o dispositivo 2 (em estado de varredura) receber o pacote ADV do dispositivo 1, o dispositivo 2 envia o pacote CONNECT_REQ para solicitar o estabelecimento de conexão com o dispositivo 1. Neste pacote de solicitação estão o endereço MAC do dispositivo 2 (InitA), o endereço MAC de destino (endereço MAC do dispositivo 1, AdvA), o endereço de acesso (AA) que será usado pelo dispositivo 1 no envio dos pacotes seguintes no canal de dados, o valor de inicialização do CRC para os pacotes seguintes enviados pelo dispositivo 1, as informações de salto de canal (ChM e Hop) para o canal de dados usado pelo dispositivo 1, etc.

    O 3º pacote -- o dispositivo 1 envia um PDU de dados vazio da camada de enlace no canal 9 (decidido pelo esquema de salto) de acordo com as informações da solicitação de conexão recebidas do dispositivo 2. ("XX" após o campo "DATA" significa que não há dados para este campo).

    O intervalo de tempo entre os pacotes é de 1s (1000ms). Sintonize o packet sniffer da TI no canal 37 e o procedimento de estabelecimento acima será capturado.

    • Exemplo de 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
    

    O comando acima envia o pacote iBeacon e o repete 100 vezes com intervalo de 100ms. Arquivo descritor correspondente BTLE/host/btle-tools/src/packets_ibeacon.txt. Você pode usar um dongle sniffer BLE para ver o pacote.

    A string descritora do pacote:

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

    canal 37 (um dos canais de advertising do BTLE: 37, 38, 39)

    root@kitploit:~
    iBeacon
    

    palavra-chave do formato de pacote que significa formato iBeacon. (Na verdade, é o formato ADV_IND do Core_V4.0.pdf)

    root@kitploit:~
    AdvA
    

    endereço de advertising (endereço MAC) definido como 010203040506 (veja Core_V4.0.pdf)

    root@kitploit:~
    UUID
    

    aqui o especificamos como o UUID fixo da Estimote: B9407F30F5F8466EAFF925556B57FE6D

    root@kitploit:~
    Major
    

    número major do formato iBeacon. (Aqui é 0008)

    root@kitploit:~
    Minor
    

    número minor do formato iBeacon. (Aqui é 0009)

    root@kitploit:~
    Txpower
    

    parâmetro de potência de transmissão do formato iBeacon (aqui é C5)

    root@kitploit:~
    Space
    

    quantos milissegundos serão aguardados após o envio deste pacote. (Aqui é 100ms)

    Demonstrações

    Veja uma comparação com o packet sniffer da TI aqui: http://sdr-x.github.io/BTLE-SNIFFER/

    Veja demonstração em vídeo do btle_rx ou demonstração em vídeo do btle_rx (na China) e demonstração em vídeo do btle_tx 1 ou demonstração em vídeo do btle_tx 2 (na China)

    Apêndice: Exemplos de descritores de pacotes do btle_tx para todos os formatos


    Pacotes RAW: (Todos os bits serão enviados diretamente ao modulador GFSK)

    root@kitploit:~
    37-RAW-aad6be898e8dc3ce338c4cb1207730144f9474e0e15eedb378c3bc
    

    Pacotes do CANAL DE ADVERTISING (canal 37, por exemplo):

    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
    

    Pacotes do CANAL DE DADOS (canal 9, por exemplo):

    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
    

    Pacotes de descoberta: (que podem exibir qualquer nome ou serviço em um aplicativo de scanner, como 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
    
    Baixar ferramenta