GNU-RADIO
Last updated
Last updated
Je vais essayer d'être le plus clair possible sur le fonctionnement du protocole GNU-RADIO.
Une transmission radio permet d’envoyer et de recevoir des informations d’un point A vers un point B à distance. Ce sont les ondes électromagnétiques qui vont permettre cette communication. Nous sommes donc en présence de deux appareils technologiques appelés émetteur/récepteur radio.
Voila un petit schéma pour illustrer la chose :
Voila à quoi ressemble en théorie une onde électromagnétique (c'est une onde sinusoïdale) :
Signal sinusoïdal
Ne vous inquiétez pas je ne vous ramène pas dans vos cours à dormir debout de lycée ou de mathSUP/mathSPE.
Pour arriver à transmettre des informations, il est nécessaire de modifier quelque chose à cette onde afin de différencier l’envoi d’une valeur d’une autre. Dans le cas le plus trivial le « 0 » et le « 1 » logique. En analysant un signal sinusoïdal, on peut constater qu’il est caractérisé par son amplitude, sa fréquence et sa phase. D’un point de vue mathématique :
Équation d’un signal sinusoïdal
On peut donc modifier son amplitude, sa fréquence, sa phase ou même combiner deux paramètres en fonction des données numériques à transmettre. On dit que l’on module le signal. C’est en fait la célèbre fonction « modulation » dont on entend parler pour toutes les communications radio.
Dans notre exemple, on peut imaginer une modulation très simple :
on transmet un 0 logique => A = 0, amplitude nulle
on transmet un 1 logique => A = 1, amplitude maxi
On obtient ainsi une modulation appelée ASK (Amplitude Shift Keying, modulation par sauts d’amplitude) et même plus exactement dans notre cas OO-ASK (On Off ASK), car on module en tout ou rien.
Modulation OO-ASK
Cette technologie est très facile à mettre en œuvre, mais présente quelques inconvénients comme la fiabilité, la vitesse et la portée.
L’écoute et le piratage sont très simples et rapides puisqu’il n’y a aucune difficulté structurelle dans le matériel utilisé.
Le débit binaire est faible puisqu’on ne transmet qu’un bit à la fois.
La distance entre l’émetteur et le récepteur est modeste puisque l’on est limité en puissance d’émission et qu’aucune technique d’étalement de spectre n’est utilisée ici.
La modulation ASK est encore utilisée dans beaucoup de communications où la sécurité au niveau de la liaison physique n’est pas vraiment la priorité.
Des outils tout faits sont disponibles et compatibles avec les émetteurs-récepteurs numériques. Ils sont développés avec ou en parallèle d’un projet très important appelé GNU-RADIO disponible sous LINUX.
Ce projet propose la gestion du matériel et les bibliothèques de traitement du flux radios.
Depuis les depots :
sudo apt install gnuradio
Depuis github
https://github.com/gnuradio/gnuradio
Depuis un script
Script d’installation build-gnuradio disponible à l’adresse http://www.sbrac.org/files/build-gnuradio. Quand tout se déroule sans problème, ce script installe tous les outils nécessaires.
Voici une liste de tutoriels pour prendre en mains les différents modules : https://wiki.gnuradio.org/index.php/Tutorials
Parmi les applications intéressantes, on trouve :
les outils RTL-SDR développés pour les clés récepteur DVB-T.
L’outil rtl_fm permet entre autre d’écouter une station radio FM, ou bien encore rtl_sdr qui, lui, permet d’enregistrer les signaux I/Q dans un fichier afin d’être analysés ultérieurement ou rejoués tels quels.
On va s'interesser ici à gnuradio-companion qui est un environnement de développement graphique dans lequel vous pouvez assembler des blocs . Il construit ensuite un script Python utilisant les modules liés aux librairies GNU-RADIO compilées. L’intérêt de gnuradio-companion est de pouvoir assez facilement adapter le traitement à vos besoins. On lance gnuradio-companion :
Prenons un exemple pour illustrer la chose :
Nous disposons d’une télécommande et l’objectif est de trouver le code émis pour éventuellement créer une télécommande copie. Pour faire cette simple opération, il existe des solutions logicielles comme l’application hackrf_transfer qui enregistre les signaux sur une fréquence et les rejoue à destination des récepteurs. Il existe aussi des « clôneurs » sous forme de petits circuits électroniques qui réalisent plus ou moins bien cette opération. Vous pouvez aussi utiliser gnuradio-companion pour créer un diagramme qui met en évidence les code de la télécommande.
On note deux chose :
Rapport cyclique < 10%
Fz : 433.92 MHz
Tout d’abord, vérifions la fréquence avec osmocom_fft :
La première pointe au centre est celle du HackRF, celle à droite est la transmission de la télécommande. On voit bien que la fréquence est de 433,945 MHz. La forme de la pointe nous indique que c’est probablement de la modulation d’amplitude.
Je vous laisse maintenant chercher comment créer un diagramme pour cette télécommande avec gnuradio-companion et trouver que la télécommande en question utilise le protocole HomeEasy spécialisé dans les objets domotiques.
La réalisation de la partie électronique peut être une opération envisageable, mais serait hors sujet. Il existe suffisamment de matériels disponibles, aux performances et aux prix variés, pour éviter l’étape de la fabrication. Une liste non exhaustive des plus utilisés est présentée ci-après.
Clé RTL SDR
Ses principales caractéristiques :
Bande de fréquence : 30 - 1700 MHz
Échantillonnage : 2 MHz
Grâce à ces paramètres, ce circuit permet l’écoute et le décodage de beaucoup de communications comme les radios AM/FM, les télécommandes 433Mhs 868MHz ou d'autres objets se trouvant dans la même bande de fréquence.
Cependant, sa limite en fréquence (environ 1,7-2,0 GHz) ne permet pas d’atteindre la bande ISM (Industrielle Scientifique et Médicale) des 2,4 GHz où beaucoup de communications se trouvent comme le Wi-Fi, le Bluetooth, NRF24, le ZigBee, etc.
Le HackRF One
Ses caractéristiques :
half-duplex transceiver (transmetteur half-duplex)
operating frequency : 10 MHz to 6 GHz (plage de fréquence de travail)
supported sample rates : 2 Msps to 20 Msps (quadrature) (fréquences d’échantillonnage)
resolution : 8 bits
interface : High Speed USB (with USB Micro-B connector)
power supply : USB bus power
Le hackRF est un transmetteur HALF-DUPLEX (émission ou réception, mais pas les deux en même temps), ce qui est un inconvénient pour certaines applications comme l’intégration dans un réseau ou la mise en place d’un Man in The Middle. Et oui il va falloir trouver un autre moyen !
Un autre inconvénient du HackRF c'est sa portée... Parfait pour des test locaux mais dès qu'il s'agit de communications éloignées il faudra penser à utiliser autre chose.
Le bladeRF de chez NUAND
Sa plage de fréquence n’est pas très étendue (inférieure à 1 GHz) et présente des zones mortes (fréquences non gérées). Le PandwaRF est toutefois émetteur et récepteur dans les fréquences les plus utilisées, 315/433/868/915 MHz pour les modulations ASK/OOK/MSK/2-FSK/GFSK. L’utilisateur ne peut pas configurer le traitement numérique des signaux reçus ou émis, mais dispose d’applications sous Linux ou smartphone, connectées en USB ou Bluetooth LE, permettant de recevoir, enregistrer et renvoyer des communications radio numériques avec ou sans modifications.
Cet émetteur-récepteur numérique est le best de sa catégorie. Mais... c''est cher... entre 1000 à 5000 euros suivant les versions.
RX/TX WBX 20 - 2200 MHz
Pret à hacker votre premier objet ?
Ce récepteur DVB-T est un « dongle » au prix est très abordable, 10 à 30 euros. Ses caractéristiques permettent déjà quelques manipulations. Son gros défaut est qu’il ne permet pas d’émission.
L’intérêt du HackRF par rapport au dongle SDR est qu’il permet d’émettre. Il permet d’écouter ou d’émettre des communications dans pratiquement toutes les bandes ISM classiques. Son prix est compris entre 300 et 400 euros. Un peu cher c'est vrai mais c'est un investissement indispensable si vous comptez devenir expert en radio !
Le bladeRF en FULL-DUPLEX (émission ou réception ou les deux en même temps) sur une largeur de canal de 28 MHz. Il est un peu plus cher que son concurrent hackRF, 400 à 500 euros.
Il permet de pirater très facilement toutes les télécommandes de base. Environ 200 euros.
L’USRP est composé d’une base regroupant les interfaces numériques (USB, Ethernet…). On doit ajouter à cette base (coût supplémentaire) des modules radio fréquence. L'USRP est un peu comme une voiture, vous pouvez lui ajouter des options, choisir sa version en fonction de vos besoin.
Pour recevoir et émettre dans une large bande on doit lui ajouter un circuit RF type :