Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
BTLE — Renifleur de paquets et émetteur Bluetooth Low Energy (BLE) pour les communications standard et non standard (bits bruts), basé sur la radio logicielle (SDR). | Kitploit
Outils/GitHubGitHub/jiaoxianjun/btle
Sniffing et Analyse de PaquetsSécurité BluetoothSécurité IoTSécurité Sans Fil
GitHubjiaoxianjun/btle

BTLE

Renifleur de paquets et émetteur Bluetooth Low Energy (BLE) pour les communications standard et non standard (bits bruts), basé sur la radio logicielle (SDR).

Voir le dépôt
927171il y a 2 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

BTLE

BTLE est une suite logicielle de radio logicielle (SDR) Bluetooth Low Energy (BLE) gratuite et open-source ainsi qu'une conception de puce BTLE ouverte.

Il comprend :

  • description des algorithmes de bande de base BTLE, implémentation Python et Verilog, résultats FPGA et SkyWater 130 PDK (flux OpenLane2).
  • Implémentation Analog Devices AD9361 + FPGA Xilinx Zynq : FPGA Bluetooth
  • btle_rx - Renifleur BLE. En plus de renifler les canaux de diffusion/fixes, il peut également suivre le saut de canal d'une liaison de communication.
  • btle_tx - Émetteur universel de paquets BLE. Outre le standard BLE, il prend également en charge le mode bits bruts pour générer des paquets GFSK arbitraires. Ainsi, vous pouvez tester un protocole non standard ou un standard en cours de discussion avant sa mise sur le marché.

Fonctionnalités

  • La couche PHY et les couches supérieures sont implémentées en logiciel (langage C). Flexibilité totale de la radio logicielle (SDR).
  • PHY GFSK standard BLE 1 Mbps.
  • Tous les formats de paquets de la couche liaison des canaux ADV et DATA de Core_V4.0 (chapitres 2 et 3, partie B, volume 6) sont pris en charge.
  • Le renifleur est capable d'analyser et de suivre automatiquement le motif de saut de canal, sans se limiter au canal de diffusion ou à un canal fixe.

Matériel

  • HackRF
  • bladeRF
  • version compatible des bibliothèques HackRF et bladeRF

Compilation et test rapide

Assurez-vous que votre environnement matériel SDR (pilote/lib) a été correctement configuré avant d'exécuter ce projet.

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

La commande ci-dessus renifle sur le canal 37. Vous devriez voir de nombreux paquets à l'écran si vous avez des appareils BLE (téléphone/tablette/ordinateur portable) à proximité.

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

La commande ci-dessus transmet des paquets de découverte sur le canal ADV. Vous devriez voir un appareil nommé « SDR/Bluetooth/Low/Energy » dans une autre application de reniflage BLE (comme LightBlue).

Pour obtenir une séquence d'opérations plus rapide sur HACKRF, utilisez ce qui suit :

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

dans hackrf/host/libhackrf/src/hackrf.c. Recompilez ensuite la bibliothèque HACKRF et réinstallez-la. N'oubliez pas de recompiler BTLE pour prendre en compte la modification de la bibliothèque HACKRF.

Outre les outils, le répertoire matlab contient l'évaluation d'algorithmes et d'autres scripts utiles

Utilisation de btle_rx

root@kitploit:~
-h --help

Affiche tous les arguments/utilisations.

root@kitploit:~
-c --chan

Numéro de canal. Valeur par défaut 37 (un des canaux ADV). Valeur valide 0~39 (tous les canaux ADV et DATA).

root@kitploit:~
-g --gain

Gain de réception en dB. HACKRF rxvga par défaut 6, valide 0 - 62. bladeRF par défaut gain rx max 66 dB (valide 0 - 66). Le gain doit être réglé très soigneusement pour garantir les meilleures performances dans votre situation. Il est suggéré de tester à partir d'un gain faible, car un gain élevé provoque toujours une forte distorsion et ne vous apporte rien.

root@kitploit:~
-l --lnaGain

Gain LNA en dB (HackRF uniquement). Défaut 32, valide 0 - 40. Le gain doit être réglé très soigneusement pour garantir les meilleures performances dans votre situation.

root@kitploit:~
-b --amp

Activer l'amplificateur (HackRF uniquement). Désactivé par défaut.

root@kitploit:~
-a --access

Adresse d'accès. Par défaut 8e89bed6 pour les canaux ADV 37 38 39. Vous devez spécifier la valeur correcte pour le canal de données selon la procédure de configuration de connexion capturée.

root@kitploit:~
-k --crcinit

Par défaut 555555 pour le canal ADV. Vous devez spécifier la valeur correcte pour le canal de données selon la procédure de configuration de connexion capturée.

root@kitploit:~
-v --verbose

Mode verbeux. Affiche plus d'informations en cas d'erreur.

root@kitploit:~
-r --raw

Mode brut. Après la détection de l'adresse d'accès, affiche les 42 octets bruts suivants (sans désembrouillage ni analyse).

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

Cette fréquence (Hz) remplacera le réglage du canal (au cas où l'on souhaite travailler sur une fréquence autre que BTLE. Plus polyvalent).

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

Si un bit est à 1 dans ce masque, le bit correspondant de l'adresse d'accès sera pris en compte dans la décision de présence de paquet (au cas où l'on souhaite un mot unique plus court/plus clairsemé pour la détection de paquets. Plus polyvalent).

root@kitploit:~
-o --hop

Ceci active le suivi du canal de données (saut de fréquence) après que les informations de configuration de liaison ont été capturées dans le paquet ADV_CONNECT_REQ sur le canal ADV.

root@kitploit:~
-s --filename

Enregistre les paquets dans un fichier pcap.

Utilisation de btle_tx

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

ou

root@kitploit:~
btle_tx packets.txt

packets.txt est un fichier texte qui contient les paramètres de ligne de commande (packet1 packet2 ... rN). Un paramètre par ligne. Une ligne commençant par « # » est considérée comme un commentaire. Voir l'exemple packets.txt.

root@kitploit:~
packetX 

est une chaîne qui décrit un paquet. Tous les paquets composent une séquence de paquets.

root@kitploit:~
rN

signifie que la séquence sera répétée N fois. S'il n'est pas spécifié, la séquence ne sera envoyée qu'une seule fois.

Format de la chaîne packetX

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

Chaque chaîne descripteur commence par le numéro de canal BTLE (0~39), puis est suivie par le type de paquet (RAW/iBeacon/ADV_IND/ADV_DIRECT_IND/etc. Voir tous les exemples de formats À LA FIN : Annexe ), puis par une paire champ-valeur spécifique au type de paquet, et enfin par une paire Space-valeur (optionnelle) où la valeur indique combien de millisecondes seront attendues après l'envoi de ce paquet.

N'UTILISEZ PAS le caractère espace « » dans un descripteur de paquet en ligne de commande. Vous POUVEZ utiliser l'espace dans le descripteur de paquet du fichier txt.

N'UTILISEZ PAS « - » à l'intérieur de chaque champ. « - » est un caractère magique utilisé pour séparer les différents champs dans le descripteur de paquet.

  • Exemple btle_tx : Paquets de découverte

Ouvrez l'application LightBlue (ou un autre renifleur BLE) sur votre iPhone/appareil avant cette commande :

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

Vous verrez un appareil nommé « SDR Bluetooth Low Energy » dans votre application LightBlue.

Ligne de commande correspondante :

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

Remarque : le caractère espace « » est remplacé par « / » car l'espace n'est pas pris en charge en ligne de commande.

  • Exemple btle_tx : Établissement de connexion
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

Ce qui précède simule une procédure d'établissement de connexion entre le dispositif 1 et le dispositif 2. Fichier descripteur correspondant BTLE/host/btle-tools/src/packets.txt.

Le 1er paquet -- le dispositif 1 envoie un paquet ADV_IND sur le canal 37.

Le 2e paquet -- après que le dispositif 2 (en état de scan) a reçu le paquet ADV du dispositif 1, le dispositif 2 envoie un paquet CONNECT_REQ pour demander l'établissement de la connexion avec le dispositif 1. Dans ce paquet de demande, il y a l'adresse MAC du dispositif 2 (InitA), l'adresse MAC cible (adresse MAC du dispositif 1, AdvA), l'adresse d'accès (AA) qui sera utilisée par le dispositif 1 lors des envois de paquets suivants sur le canal de données, la valeur d'initialisation CRC pour les paquets suivants du dispositif 1, les informations de saut de canal (ChM et Hop) pour le canal de données utilisé par le dispositif 1, etc.

Le 3e paquet -- le dispositif 1 envoie une PDU de données de couche liaison vide sur le canal 9 (déterminé par le schéma de saut) conformément aux informations de demande de connexion reçues du dispositif 2. (« XX » après le champ « DATA » signifie qu'il n'y a pas de données pour ce champ.)

L'espace temporel entre les paquets est de 1 s (1000 ms). Réglez le renifleur de paquets de TI sur le canal 37, puis la procédure d'établissement ci-dessus sera capturée.

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

La commande ci-dessus envoie un paquet iBeacon et le répète 100 fois avec un espace temporel de 100 ms. Fichier descripteur correspondant BTLE/host/btle-tools/src/packets_ibeacon.txt. Vous pouvez utiliser une clé renifleur BLE pour voir le paquet.

La chaîne descripteur du paquet :

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

canal 37 (un des canaux de publicité BTLE 37 38 39)

root@kitploit:~
iBeacon

mot-clé de format de paquet qui signifie format iBeacon. (En réalité, il s'agit du format ADV_IND dans Core_V4.0.pdf)

root@kitploit:~
AdvA

adresse de publicité (adresse MAC) définie comme 010203040506 (voir Core_V4.0.pdf)

root@kitploit:~
UUID

nous la spécifions ici comme UUID fixe d'Estimote : B9407F30F5F8466EAFF925556B57FE6D

root@kitploit:~
Major

numéro majeur du format iBeacon. (Ici, il est 0008)

root@kitploit:~
Minor

numéro mineur du format iBeacon. (Ici, il est 0009)

root@kitploit:~
Txpower

paramètre de puissance d'émission du format iBeacon (ici, il est C5)

root@kitploit:~
Space

combien de millisecondes seront attendues après l'envoi de ce paquet. (Ici, c'est 100 ms)

Démos

Voir une comparaison avec le renifleur de paquets de TI ici : http://sdr-x.github.io/BTLE-SNIFFER/

Voir la démo vidéo btle_rx ou la démo vidéo btle_rx (en Chine) et la démo vidéo 1 btle_tx ou la démo vidéo 2 btle_tx (en Chine)

Annexe : Exemples de descripteurs de paquets de btle_tx pour tous les formats


Paquets RAW : (tous les bits seront envoyés directement au modulateur GFSK)

root@kitploit:~
37-RAW-aad6be898e8dc3ce338c4cb1207730144f9474e0e15eedb378c3bc

Paquets des canaux de publicité (canal 37 par exemple) :

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

Paquets des canaux de données (canal 9 par exemple) :

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

Paquets de découverte : (qui peuvent afficher n'importe quel nom ou service dans une application de scan, comme 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 mode découvrable limité LE ; 0x02 mode découvrable général LE SERVICE : 0x02 UUID de service 16 bits, d'autres UUID 16 bits disponibles 0x03 UUID de service 16 bits, liste complète des UUID 16 bits disponibles 0x04 UUID de service 32 bits, d'autres UUID 3a2 bits disponibles 0x05 UUID de service 32 bits, liste complète des UUID 32 bits disponibles 0x06 UUID de service 128 bits, d'autres UUID 128 bits disponibles 0x07 UUID de service 128 bits, liste complète des UUID 128 bits disponibles

Télécharger l’outil