
Renifleur de paquets et émetteur Bluetooth Low Energy (BLE) pour les communications standard et non standard (bits bruts), basé sur la radio logicielle (SDR).
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 :
Assurez-vous que votre environnement matériel SDR (pilote/lib) a été correctement configuré avant d'exécuter ce projet.
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é.
./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 :
#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
-h --help
Affiche tous les arguments/utilisations.
-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).
-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.
-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.
-b --amp
Activer l'amplificateur (HackRF uniquement). Désactivé par défaut.
-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.
-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.
-v --verbose
Mode verbeux. Affiche plus d'informations en cas d'erreur.
-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).
-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).
-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).
-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.
-s --filename
Enregistre les paquets dans un fichier pcap.
btle_tx packet1 packet2 ... packetX ... rN
ou
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.
packetX
est une chaîne qui décrit un paquet. Tous les paquets composent une séquence de paquets.
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
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.
Ouvrez l'application LightBlue (ou un autre renifleur BLE) sur votre iPhone/appareil avant cette commande :
./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 :
./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.