====== Le B-A-BA du Bluetooth ====== ==== Utilisation, fréquences, BT Classique et Bluetooth Low Energy (BLE) ===== [[https://fr.wikipedia.org/wiki/Bluetooth|Page Wikipedia]] > Bluetooth est une norme de télécommunications permettant l'échange bidirectionnel de données à courte distance en utilisant des ondes radio UHF sur la bande de fréquence de 2,4 GHz. Version actuelle : 5.2 (mise en service en décembre 2019). [[https://www.echosdunet.net/dossiers/bluetooth|Echo du Net - Dossier Bluetooth (Avril 2021)]] > À partir de ce moment [sortie du BT 4.0 en 2010], les fabricants d’accessoires ont le choix d’implémenter le Bluetooth LE seul (en « single mode ») ou avec le Classic Bluetooth (en « dual mode ») des versions 1.0 à 3.0 et High Speed de la version 3.0, afin de conserver la compatibilité avec les anciennes versions du Bluetooth. [[https://www.youtube.com/watch?v=eZGixQzBo7Y|Ellisys Bluetooth Video 1: Intro to Bluetooth Low Energy]] (vidéo - anglais - 8') === BR/EDR et LE === * LE : //Low Energy// * BR/EDR : //Basic Rate// / //Enhance Data Rat//e = Bluetooth "classique" > Pour le débutant, le Bluetooth classique se compose de Bluetooth 1.0-3.0. Il s'agit notamment de Bluetooth BR (Basic Rate) autour de 1,2 Mbit / sec, Bluetooth EDR (Enhance Data Rate) à 3Mbits / Sec. ([[https://qastack.fr/engineering/12311/what-is-the-difference-between-bluetooth-low-energy-and-bluetooth-bredr-in-park-mode|source]]). ==== Types d'adresses ==== Selon la norme EUI-48 (//Extended Unique Identifier//), l'identité d'un objet connecté en BT est définie par une //adresse publique// **et/ou** une //adresse aléatoire statique//. Cependant, **cette identité peut-être masquée par une //adresse aléatoire privée//**, ce qui empêche un tiers intrus de tracer l'objet. __Remarque__ : **Cette variété n'est disponible que pour le BT LE. En BR/EDR, l'adresse est obligatoirement de type //"publique"//.** {{ :types_adresses_bt.png?400 |}} Le format de l'adresse qui est détectée est le même que celui d'une adresses MAC♦, c'est un code de la forme //XX:XX:XX:XX:XX:XX// où "X" est un chiffre (0 à 9) ou une lettre (de A à F uniquement) - //exemple : 0C:4F:23:12:AD:01//. Le type d'adresse peut être en partie distingué grâce au premier caractère : * **0, 1, 2, 3** : une telle adresse peut-être soit //"publique"// soit //"aléatoire non résolvable"//. Pour le savoir, il faut vérifier dans le registre des adresses publiques ; * **4, 5, 6, 7** : adresse //"aléatoire résolvable"// : une adresse de ce type change aléatoirement toutes les 10-15 min mais l'identité de l'appareil peut être reconnue par les dispositifs qui détiennent une clé de décryptage spécifique. * **8, 9, A, B** : adresse nécessairement //"publique"// : on peut retrouver le nom du fabriquant dans le registre des adresses publiques ; * **C, D, E, F** : adresse soit //"publique"// soit //"aléatoire statique"//. > ♦Tandis qu'une adresse MAC est unique et fixe pour chaque appareil électronique, l'adresse affichée peut-être une "couverture" qui masque l'adresse MAC. Ainsi, en toute rigueur, l'adresse qui s'affiche n'est pas une adresse MAC, même si elle en a l'apparence ! **Pour plus d'info sur les adresses BT** : * https://www.novelbits.io/bluetooth-address-privacy-ble/ * [[https://lmdb.ouvaton.org/lib/exe/fetch.php?media=core_v4.0.pdf|Spécifications techniques de la norme Bluetooth 4.0 (2010 - pdf - anglais)]]: faire une recherche sur "resolvable" pour trouver les pages qui traitent des types d'adresses * registre des identifiants des fabricants (//Organizationally Unique Identifier - **OUI**//) : http://standards-oui.ieee.org/oui/oui.txt ==== BLE Beacons ==== Qu’est-ce qu'un "beacon BLE" (une balise Bluetooth Low Energy) ? : [[https://blog.pandasuite.com/fr/technologie-beacon/]] __Principales normes__ : * **Eddystone** (open beacon format from Google) * **iBeacon** (Apple) - [[https://en.wikipedia.org/wiki/IBeacon|Détails du format des paquets]] (wikipedia) * **AltBeacon** (open source) : [[https://altbeacon.org/|AltBeacon]] [[https://ukbaz.github.io/howto/beacon_scan_cmd_line.html| Scanning for Bluetooth Beacons on the Linux command line]] ==== ManufacturerData Key ==== C'est une des informations clé émise par une balise : [[https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/|Répertoire des compagnies]] __Exemples__ : * 0x004C : Apple (balise générée par un iPhone) * 0x027D : Huawei (ex : Huawei Watch) ==== UUID 16 ==== C'est un autre type d'information contenu dans un paquet et permettant d'identifier le type d'appareil. * [[https://btprodspecificationrefs.blob.core.windows.net/assigned-values/16-bit%20UUID%20Numbers%20Document.pdf|Liste des UUID 16bit spécifiques]] __Exemples__ : * 0xFD64 : INRIA (ce code est un marqueur de l'application //Tous Anti-Covid// conçue par l'INRIA) * 0xFD69 : Samsung * 0xFD6F : Apple (ce code est un marqueur du framework de contact-tracing //Exposure Notification Framework// conçu par Apple et Google). ==== Autres sources d'info ==== * [[https://www.bluetooth.com/specifications/specs/core-specification/|Spécifications techniques de la norme Bluetooth 5.3 (2021 - anglais)]]. * [[https://lmdb.ouvaton.org/lib/exe/fetch.php?media=core_v4.0.pdf|Spécifications techniques de la norme Bluetooth 4.0 (2010 - pdf - anglais)]].