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 FilTop en Sécurité Bluetooth n°6
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
93017411il y a 3 moisVérifié par Kitploit
Site web

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

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