Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/jiaoxianjun/btle
Sniffing e Analisi dei PacchettiSicurezza BluetoothSicurezza IoTSicurezza Wireless
GitHubjiaoxianjun/btle

BTLE

Sniffer di pacchetti e trasmettitore Bluetooth Low Energy (BLE) sia per standard che non standard (bit grezzi) basato su Software Defined Radio (SDR).

Vedi RepositorySito web
9271712 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

BTLE

BTLE è una suite software libera e open-source per Bluetooth Low Energy (BLE) basata su Software Defined Radio, insieme a un progetto open di chip BTLE.

Include:

  • Banda base BTLE: descrizione degli algoritmi, implementazione in Python e Verilog, risultati con FPGA e SkyWater 130 PDK (workflow OpenLane2).
  • Implementazione con Analog Devices AD9361 + Xilinx Zynq FPGA: FPGA Bluetooth
  • btle_rx - Sniffer BLE. Oltre allo sniffing di canali broadcast/fissi, può anche tracciare il channel hopping di un collegamento di comunicazione.
  • btle_tx - Trasmettitore universale di pacchetti BLE. Oltre allo standard BLE, supporta anche la modalità raw bit per generare pacchetti GFSK arbitrari. In questo modo puoi testare protocolli non standard, o standard ancora in discussione, prima che il chip sia sul mercato.

Caratteristiche

  • Il PHY e gli strati superiori sono implementati in software (linguaggio C). Piena flessibilità Software Defined Radio.
  • PHY GFSK BLE standard da 1 Mbps.
  • Sono supportati tutti i formati di pacchetto del link layer per i canali ADV e DATA in Core_V4.0 (Capitoli 2 e 3, Parte B, Volume 6).
  • Lo sniffer è in grado di analizzare e seguire automaticamente il pattern di channel hopping, non limitandosi al canale broadcast o a un canale fisso.

Hardware

  • HackRF
  • bladeRF
  • versione compatibile delle librerie HackRF e bladeRF

Compilazione e test rapido

Assicurati che l'ambiente hardware SDR (driver/lib) sia stato configurato correttamente prima di eseguire questo progetto.

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

Il comando precedente effettua lo sniffing sul canale 37. Dovresti vedere molti pacchetti sullo schermo se hai dispositivi BLE (telefono/tablet/portatile) nelle vicinanze.

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

Il comando precedente trasmette pacchetti discovery sul canale ADV. Dovresti vedere un dispositivo con nome "SDR/Bluetooth/Low/Energy" in un'altra app sniffer BLE (come LightBlue).

Per avere una sequenza di operazioni più veloce su HACKRF, usa quanto segue:

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

in hackrf/host/libhackrf/src/hackrf.c. Quindi ricompila la libreria HACKRF e reinstallala. Non dimenticare di ricompilare BTLE per applicare la modifica alla libreria HACKRF.

Oltre agli strumenti, la directory matlab include la valutazione degli algoritmi e altri script utili

Uso di btle_rx

root@kitploit:~
-h --help

Stampa tutti gli argomenti/gli usi.

root@kitploit:~
-c --chan

Numero del canale. Valore predefinito 37 (uno dei canali ADV). Valori validi 0~39 (tutti i canali ADV e DATA).

root@kitploit:~
-g --gain

Guadagno di ricezione in dB. HACKRF rxvga predefinito 6, valori validi 0 - 62. Il default di bladeRF è il guadagno rx massimo di 66dB (valido 0 - 66). Il guadagno deve essere regolato con molta attenzione per garantire le migliori prestazioni nella tua situazione. Si consiglia di provare partendo da un guadagno basso, perché un guadagno alto provoca sempre una forte distorsione e non ottieni nulla.

root@kitploit:~
-l --lnaGain

Guadagno LNA in dB (solo HackRF). Predefinito 32, valori validi 0 - 40. Il guadagno deve essere regolato con molta attenzione per garantire le migliori prestazioni nella tua situazione.

root@kitploit:~
-b --amp

Abilita l'amplificatore (solo HackRF). Predefinito: disattivato.

root@kitploit:~
-a --access

Access address. Predefinito 8e89bed6 per i canali ADV 37, 38, 39. Dovresti specificare il valore corretto per il canale dati in base alla procedura di setup della connessione catturata.

root@kitploit:~
-k --crcinit

Predefinito 555555 per il canale ADV. Dovresti specificare il valore corretto per il canale dati in base alla procedura di setup della connessione catturata.

root@kitploit:~
-v --verbose

Modalità verbose. Stampa più informazioni quando c'è un errore

root@kitploit:~
-r --raw

Modalità raw. Dopo il rilevamento dell'access addr, stampa i successivi 42 byte raw (senza de-scrambling né parsing)

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

Questa frequenza (Hz) avrà la precedenza sull'impostazione del canale (nel caso in cui si voglia lavorare su una frequenza diversa da BTLE. Scopo più generale).

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

Se un bit di questa maschera è 1, il bit corrispondente nell'access address verrà incluso nella decisione sull'esistenza del pacchetto (nel caso in cui si voglia una parola unica più corta/rada per il rilevamento dei pacchetti. Scopo più generale).

root@kitploit:~
-o --hop

Questo attiva il tracciamento del canale dati (frequency hopping) dopo che le informazioni di setup del collegamento vengono catturate nel pacchetto ADV_CONNECT_REQ sul canale ADV.

root@kitploit:~
-s --filename

Salva i pacchetti in un file pcap.

Uso di btle_tx

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

oppure

root@kitploit:~
btle_tx packets.txt

packets.txt è un file di testo che contiene i parametri della riga di comando (packet1 packet2 ... rN) come testo. Un parametro per riga. Una riga che inizia con "#" è considerata un commento. Vedi esempio packets.txt

root@kitploit:~
packetX 

è una stringa che descrive un pacchetto. Tutti i pacchetti compongono una sequenza di pacchetti.

root@kitploit:~
rN

significa che la sequenza verrà ripetuta N volte. Se non viene specificato, la sequenza verrà inviata una sola volta.

Formato della stringa packetX

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

Ogni stringa descrittiva inizia con il numero del canale BTLE (0~39), seguita dal packet_type (RAW/iBeacon/ADV_IND/ADV_DIRECT_IND/etc. Vedi tutti gli esempi di formato ALLA FINE: Appendice), quindi dalla coppia campo-valore specifica del packet_type; alla fine c'è la coppia Space-value (opzionale), in cui il valore specifica quanti millisecondi attendere dopo l'invio di questo pacchetto.

NON usare il carattere spazio " " in un descrittore di pacchetto da riga di comando. PUOI usare lo spazio nel descrittore di pacchetto nel file txt.

NON usare "-" all'interno di ciascun campo. "-" è un carattere magico usato per separare i diversi campi nel descrittore di pacchetto.

  • esempio btle_tx: Pacchetti Discovery

Apri l'app LightBlue (o un altro sniffer BLE) sul tuo iPhone/dispositivo prima di questo comando:

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

Vedrai un dispositivo chiamato "SDR Bluetooth Low Energy" nella tua app LightBlue.

Riga di comando corrispondente:

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

Nota: lo spazio " " è sostituito da "/" perché lo spazio " " non è supportato nella riga di comando.

  • esempio btle_tx: Stabilimento della connessione
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

Quanto sopra simula una procedura di stabilimento della connessione tra il dispositivo 1 e il dispositivo 2. File descrittore corrispondente BTLE/host/btle-tools/src/packets.txt.

Il 1° pacchetto -- il dispositivo 1 invia un pacchetto ADV_IND sul canale 37.

Il 2° pacchetto -- Dopo che il dispositivo 2 (in stato di scansione) riceve il pacchetto ADV dal dispositivo 1, il dispositivo 2 invia un pacchetto CONNECT_REQ per richiedere il setup della connessione con il dispositivo 1. In questo pacchetto di richiesta sono presenti l'indirizzo MAC del dispositivo 2 (InitA), l'indirizzo MAC di destinazione (indirizzo MAC del dispositivo 1, AdvA), l'access address (AA) che verrà usato dal dispositivo 1 per l'invio dei pacchetti successivi sul canale dati, il valore di inizializzazione del CRC per i successivi pacchetti inviati dal dispositivo 1, le informazioni sul channel hopping (ChM e Hop) per il canale dati usato dal dispositivo 1, ecc.

Il 3° pacchetto -- il dispositivo 1 invia un PDU dati vuoto del link layer sul canale 9 (deciso dallo schema di hopping) in base alle informazioni di richiesta di connessione ricevute dal dispositivo 2. ("XX" dopo il campo "DATA" significa che non ci sono dati per questo campo)

L'intervallo di tempo tra i pacchetti è di 1s (1000ms). Imposta il packet sniffer TI sul canale 37; la procedura di stabilimento sopra verrà così catturata.

  • esempio 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

Il comando precedente invia un pacchetto iBeacon e lo ripete 100 volte con un intervallo di 100ms. File descrittore corrispondente BTLE/host/btle-tools/src/packets_ibeacon.txt. Puoi usare un dongle sniffer BLE per vedere il pacchetto.

La stringa descrittiva del pacchetto:

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

canale 37 (uno dei canali Advertising BTLE: 37, 38, 39)

root@kitploit:~
iBeacon

parola chiave del formato di pacchetto che indica il formato iBeacon. (In realtà è il formato ADV_IND in Core_V4.0.pdf)

root@kitploit:~
AdvA

indirizzo Advertising (indirizzo MAC) impostato a 010203040506 (Vedi Core_V4.0.pdf)

root@kitploit:~
UUID

qui lo specifichiamo come UUID fisso di Estimote: B9407F30F5F8466EAFF925556B57FE6D

root@kitploit:~
Major

numero major del formato iBeacon. (Qui è 0008)

root@kitploit:~
Minor

numero minor del formato iBeacon. (Qui è 0009)

root@kitploit:~
Txpower

parametro della potenza di trasmissione del formato iBeacon (Qui è C5)

root@kitploit:~
Space

Quanti millisecondi attendere dopo l'invio di questo pacchetto. (Qui è 100ms)

Demo

Vedi un confronto con il packet sniffer TI qui: http://sdr-x.github.io/BTLE-SNIFFER/

Guarda la demo video di btle_rx o la demo video di btle_rx (in Cina) e la demo video 1 di btle_tx o la demo video 2 di btle_tx (in Cina)

Appendice: Esempi di descrittori di pacchetto di btle_tx per tutti i formati


Pacchetti RAW: (Tutti i bit verranno inviati direttamente al modulatore GFSK)

root@kitploit:~
37-RAW-aad6be898e8dc3ce338c4cb1207730144f9474e0e15eedb378c3bc

PACCHETTI SU CANALE ADVERTISING (ad esempio canale 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

PACCHETTI SU CANALE DATA (ad esempio canale 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

Pacchetti Discovery: (che possono mostrare qualsiasi nome o servizio in app scanner, come 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 32-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
Scarica lo strumento