« Tools:HackRF One » : différence entre les versions
Aucun résumé des modifications |
|||
(22 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
== HackRF One == | == HackRF One == | ||
Le HackRF One | Le <b>HackRF One</b> ([https://greatscottgadgets.com/hackrf/one/ Great Scott Gadgets]) est une radio définie par logiciel (<b>SDR</b>) capable d'émettre ou de recevoir des signaux radio de 1 MHz à 6 GHz. | ||
Il a été conçu pour permettre le test et le développement de technologies radio modernes et de nouvelle génération. | |||
Le <b>HackRF One</b> est un matériel <b>open source</b> qui peut être utilisée en tant que périphérique USB ou programmée pour un fonctionnement autonome. | |||
*Fréquence de fonctionnement de 1 MHz à 6 GHz | *Fréquence de fonctionnement de 1 MHz à 6 GHz | ||
Ligne 18 : | Ligne 19 : | ||
*alimenté par USB | *alimenté par USB | ||
== Commandes | === Commandes === | ||
<b>Hackrf_info :</b> informations de version | <b>Hackrf_info :</b> informations de version | ||
Ligne 27 : | Ligne 28 : | ||
<b>hackrf_sweep :</b> balayer un champ de fréquences et l'analyser | <b>hackrf_sweep :</b> balayer un champ de fréquences et l'analyser | ||
<b>hackrf_spiflash :</b> | <b>hackrf_spiflash :</b> mettre à jour le firmware | ||
<b>hackrf_cpldjtag :</b> | <b>hackrf_cpldjtag :</b> mettre à jour le cpld | ||
== Installation == | == Installation == | ||
$ apt install hackrf | $ apt install hackrf | ||
== Mise à jour du micrologiciel == | === Mise à jour du micrologiciel === | ||
Les appareils HackRF sont livrés avec un micrologiciel sur la mémoire flash SPI. Le micrologiciel peut être mis à jour à l'aide d'un câble USB et d'un ordinateur hôte. | Les appareils <b>HackRF</b> sont livrés avec un micrologiciel sur la <b>mémoire flash SPI</b>. Le micrologiciel peut être mis à jour à l'aide d'un câble USB et d'un ordinateur hôte. | ||
=== Mise à jour du SPI Flash Firmware === | === Mise à jour du SPI Flash Firmware === | ||
$ hackrf_spiflash -w hackrf_one_usb.bin | $ hackrf_spiflash -w hackrf_one_usb.bin | ||
Vous pouvez trouver le binaire du firmware (hackrf_one_usb.bin) dans le répertoire firmware-bin de [https://github.com/mossmann/hackrf/releases/latest la dernière version] ou vous pouvez compiler le vôtre à partir [https://github.com/mossmann/hackrf/tree/master/firmware des sources]. Pour Jawbreaker, utilisez hackrf_jawbreaker_usb.bin. Si vous compilez à partir des sources, le fichier s'appellera hackrf_usb.bin. | Vous pouvez trouver le binaire du <b>firmware</b> (<b>hackrf_one_usb.bin</b>) dans le répertoire <b>firmware-bin</b> de [https://github.com/mossmann/hackrf/releases/latest la dernière version] ou vous pouvez <b>compiler le vôtre</b> à partir [https://github.com/mossmann/hackrf/tree/master/firmware des sources]. Pour <b>Jawbreaker</b>, utilisez <b>hackrf_jawbreaker_usb.bin</b>. Si vous compilez à partir des sources, le fichier s'appellera <b>hackrf_usb.bin</b>. | ||
Lorsque vous écrivez une image de micrologiciel sur la <b>mémoire flash SPI</b>, veillez à sélectionner un micrologiciel dont le nom de fichier se termine par <b>.bin</b>. | |||
Après avoir écrit le micrologiciel sur la mémoire flash SPI, vous devrez peut-être réinitialiser le dispositif HackRF en appuyant sur le bouton RESET ou en le débranchant et en le rebranchant. | Après avoir écrit le micrologiciel sur la <b>mémoire flash SPI</b>, vous devrez peut-être réinitialiser le dispositif <b>HackRF</b> en appuyant sur le bouton <b>RESET</b> ou en le débranchant et en le rebranchant. | ||
Si vous obtenez une erreur mentionnant HACKRF_ERROR_NOT_FOUND, il s'agit souvent d'un problème de permissions dans votre système d'exploitation. | Si vous obtenez une erreur mentionnant <b>HACKRF_ERROR_NOT_FOUND</b>, il s'agit souvent d'un <b>problème de permissions</b> dans votre système d'exploitation. | ||
Pour vérifier si la mise à jour a été correctement installée: | Pour vérifier si la mise à jour a été correctement installée: | ||
Ligne 58 : | Ligne 59 : | ||
Firmware Version: 2018.01.1 (API:1.02) | Firmware Version: 2018.01.1 (API:1.02) | ||
Part ID Number: 0xa000cb3c 0x00724357 | Part ID Number: 0xa000cb3c 0x00724357 | ||
=== Si nécessaire seulement: Récupération du SPI Flash Firmware === | |||
Si le <b>firmware</b> installé dans la <b>mémoire flash SPI</b> a été endommagé ou si vous programmez un <b>HackRF fait maison</b> pour la première fois, vous ne pourrez pas utiliser immédiatement le programme <b>hackrf_spiflash</b> comme indiqué dans la procédure ci-dessus. | |||
Suivez plutôt les étapes suivantes : | |||
*Suivez les <b>instructions de démarrage DFU</b> pour démarrer le <b>HackRF</b> en <b>mode de démarrage DFU</b> (<b>DFU Boot</b>). | |||
*Tapez <b>dfu-util --device 1fc9:000c --alt 0 --download hackrf_one_usb.dfu</b> pour charger le micrologiciel d'une version dans la RAM. Si vous avez un <b>Jawbreaker</b>, utilisez <b>hackrf_jawbreaker_usb.dfu</b> à la place. Alternativement, utilisez <b>make -e BOARD=HACKRF_ONE RUN_FROM=RAM</b> pour charger le <b>firmware</b> en RAM et le démarrer. | |||
*<b>Suivez la procédure de mise à jour du micrologiciel SPI flash</b> ci-dessus pour écrire l'image du micrologiciel <b>.bin</b> dans la <b>mémoire flash SPI</b>. | |||
=== Si nécessaire seulement: DFU Boot === | |||
Le <b>mode de démarrage DFU</b> (D<b>FU Boot</b>) n'est normalement nécessaire que si le micrologiciel ne fonctionne pas correctement ou n'a jamais été installé. | |||
Le microcontrôleur <b>LPC4330</b> du <b>HackRF</b> est capable de démarrer à partir de plusieurs sources de code différentes. Par défaut, le <b>HackRF One</b> démarre à partir de la <b>mémoire flash SPI</b> (<b>SPIFI</b>). Il est également possible de démarrer le <b>HackRF</b> en <b>mode DFU Boot</b> (USB). En <b>mode de démarrage DFU</b>, le <b>HackRF</b> procède à une énumération via USB, attend que le code soit fourni à l'aide de la norme <b>DFU</b> (<b>Device Firmware Update</b>) via USB, puis exécute ce code à partir de la RAM. Le <b>SPIFI</b> est normalement inutilisé et non modifié en <b>mode DFU</b>. | |||
Pour démarrer le <b>HackRF One</b> en <b>mode DFU</b>, maintenez <b>le bouton DFU</b> enfoncé tout en l'allumant ou en appuyant sur le bouton <b>RESET</b> et en le relâchant. Relâchez le bouton <b>DFU</b> lorsque le voyant 3V3 s'allume. Le voyant 1V8 doit rester éteint. À ce stade, le <b>HackRF One</b> est prêt à recevoir le <b>micrologiciel</b> par USB. | |||
Pour démarrer le <b>Jawbreaker</b> en <b>mode DFU</b>, court-circuitez deux broches sur l'une des <b>en-têtes "BOOT"</b> lorsque l'alimentation est fournie pour la première fois. Les broches qui doivent être court-circuitées sont les broches <b>1</b> et <b>2</b> de <b>l'en-tête P32</b> du <b>Jawbreaker</b>. <b>L'en-tête P32</b> est étiqueté <b>P2_8</b> sur la plupart des <b>Jawbreaker</b> mais peut être étiqueté <b>2</b> sur les <b>prototypes</b>. <b>La broche 1</b> est étiquetée <b>VCC</b>. <b>La broche 2</b> est <b>la broche centrale</b>. Après le <b>démarrage DFU</b>, vous devriez voir la LED VCC s'allumer et noter que la LED 1V8 ne s'allume pas. À ce stade, le <b>Jawbreaker</b> est prêt à recevoir un <b>micrologiciel</b> par USB. | |||
Vous ne devez utiliser qu'une image de <b>micrologiciel</b> dont le nom de fichier se termine par <b>.dfu</b>, et non un <b>micrologiciel</b> se terminant par <b>.bin</b>. | |||
=== Installer DFU-Util === | |||
$ apt install dfu-util | |||
Depuis les [http://dfu-util.sourceforge.net/build.html sources]: | |||
$ cd ~ | |||
$ sudo apt-get build-dep dfu-util | |||
$ sudo apt-get install libusb-1.0-0-dev | |||
$ git clone git://git.code.sf.net/p/dfu-util/dfu-util | |||
$ cd dfu-util | |||
$ ./autogen.sh | |||
$ ./configure | |||
$ make | |||
$ sudo make install | |||
=== Mise à jour du CPLD === | |||
Les anciennes versions du <b>firmware</b> du <b>HackRF</b> (prior to release 2021.03.1) nécessitent une <b>étape supplémentaire</b> pour programmer un flux binaire dans le <b>CPLD</b>. | |||
Pour mettre à jour l'image du <b>CPLD</b>, mettez d'abord à jour le <b>microprogramme flash SPI</b>, <b>libhackrf</b> et <b>hackrf-tools</b>. | |||
Ensuite : | |||
$ hackrf_cpldjtag -x firmware/cpld/sgpio_if/default.xsvf | |||
Trois LEDs devraient commencer à clignoter. Cela indique que le <b>CPLD</b> a été programmé avec succès. | |||
Réinitialisez le dispositif en appuyant sur le bouton <b>RESET</b> ou en le débranchant et en le rebranchant. | |||
== Replay Attaque == | == Replay Attaque == | ||
=== Portail === | === Portail === | ||
Nous devons déterminer sur quelle fréquence la télécommande va communiquer (autours des 433Mhz). | |||
Sur <b>GQRX</b>, nous allons pouvoir vérifier et ajuster notre fréquence d'écoute. Lorsque nous activons la télécommande, nous devons observer une variation du signal sur la fréquence écoutée. | |||
==== Enregistrement ==== | |||
$ hackrf_transfer -s 2 -f 433000000 -r file | |||
==== Émission ==== | |||
$ hackrf_transfer -s 2 -f 433000000 -t file -a 1 -x 24 | |||
==== Options ==== | |||
*<b>-s :</b> Taux d'echantillons en MHz | |||
*<b>-f :</b> Fréquence exacte enregistrée ou diffusée en Hz | |||
*<b>-r :</b> Nom du fichier à l'enregistrement | |||
*<b>-t :</b> Nom du fichier à la lecture | |||
*<b>-a :</b> Amplification | |||
*<b>-x :</b> Gain entre 0 et 47 dB (en Décibel) | |||
*<b>-h :</b> Pour le menu complet des options. | |||
=== Talkie-walkie === | === Talkie-walkie === | ||
Il s'agit exactement du même procédé vu ci-dessus pour les portail. | |||
== Car Key Replay Attack == | == Car Key Replay Attack == | ||
Pour ne pas que les voitures soit vulnérables à une attaque simple de <b>Replay Attack</b>, les constructeur ont équipé les nouvelles voitures d'un système de code roulant (<b>rolling code system</b>) chaque fois que vous appuyez sur le bouton de déverrouillage, la télécommande utilise un algorithme pour générer un nouveau code ce qui rend donc les ancien siganux inutilisables, un simple <b>Replay Attack</b> comme celui présenté ci-dessus n'est donc pas impossible. | |||
=== Étude du signal avec URH === | |||
[https://github.com/jopohl/urh URH] | |||
== Radio Jamming == | == Radio Jamming == | ||
Le <b>jamming</b> est une technique de brouillage visant à perturber les fréquences comportant des informations, en les submergeant avec du bruit. C'est <b>le rapport signal sur bruit</b>. | |||
=== Jamming Car Key === | === Jamming Car Key === | ||
En émettant du bruit sur la fréquence utilisé par une clé de voiture, le signal se retrouvera ainsi perdu et ne pourra ainsi pas être reconnu. | |||
=== RollJam Attack === | === RollJam Attack === | ||
Méthodologie de l’attaque : | |||
*Un brouillage radio est lancé sur la fréquence 433.92 qui est la fréquence de déverrouillage de notre voiture. | |||
*La victime tente de déverrouiller une première fois la voiture en appuyant sur la clef, et donc en émettant un signal. | |||
*Le signal est capturé et enregistré. | |||
*La victime tente donc une deuxième fois de déverrouiller la voiture, toujours sans réussite. | |||
*Le brouillage s’arrête et le premier signal est lancé ce qui déverrouille la voiture. | |||
Le 2eme signal (<b>Rolling Code</b>) émis par la victime est enregistré. Comme la voiture a reçu uniquement le premier signal, le rolling code du second signal est donc valide, l'attaquant pourra donc déverrouiller la voiture par la suite. | |||
=== Jamming Wifi === | === Jamming Wifi === | ||
Ligne 78 : | Ligne 157 : | ||
== Tempest SDR == | == Tempest SDR == | ||
=== Normes VGA/HDMI === | |||
=== Analyse d'une trame HDMI === | |||
=== Reconstitution d'une image === | |||
== GPS Spoofing == | == GPS Spoofing == | ||
== Références == | == Références == | ||
Ligne 88 : | Ligne 167 : | ||
*https://hackrf.readthedocs.io/en/latest/index.html | *https://hackrf.readthedocs.io/en/latest/index.html | ||
*https://github.com/PierreAdams/HackRF-One-French | *https://github.com/PierreAdams/HackRF-One-French | ||
[[Category:Tools]] |
Dernière version du 9 janvier 2024 à 02:12
HackRF One
Le HackRF One (Great Scott Gadgets) est une radio définie par logiciel (SDR) capable d'émettre ou de recevoir des signaux radio de 1 MHz à 6 GHz.
Il a été conçu pour permettre le test et le développement de technologies radio modernes et de nouvelle génération. Le HackRF One est un matériel open source qui peut être utilisée en tant que périphérique USB ou programmée pour un fonctionnement autonome.
- Fréquence de fonctionnement de 1 MHz à 6 GHz
- Émetteur-récepteur semi-duplex
- Jusqu'à 20 millions d'échantillons par seconde
- Échantillons en quadrature de 8 bits (8 bits I et 8 bits Q)
- Compatible avec GNU Radio, SDR#, etc.
- Gain RX et TX et filtre en bande de base configurables par logiciel
- Alimentation du port d'antenne contrôlée par logiciel (50 mA à 3,3 V)
- Connecteur d'antenne SMA femelle
- Entrée et sortie d'horloge SMA femelle pour la synchronisation
- Boutons pratiques pour la programmation
- En-têtes de broches internes pour l'expansion
- USB 2.0 haut débit
- alimenté par USB
Commandes
Hackrf_info : informations de version
Hackrf_transfer : capturer, transmettre
hackrf_debug : commande de debug du hackRF One
hackrf_sweep : balayer un champ de fréquences et l'analyser
hackrf_spiflash : mettre à jour le firmware
hackrf_cpldjtag : mettre à jour le cpld
Installation
$ apt install hackrf
Mise à jour du micrologiciel
Les appareils HackRF sont livrés avec un micrologiciel sur la mémoire flash SPI. Le micrologiciel peut être mis à jour à l'aide d'un câble USB et d'un ordinateur hôte.
Mise à jour du SPI Flash Firmware
$ hackrf_spiflash -w hackrf_one_usb.bin
Vous pouvez trouver le binaire du firmware (hackrf_one_usb.bin) dans le répertoire firmware-bin de la dernière version ou vous pouvez compiler le vôtre à partir des sources. Pour Jawbreaker, utilisez hackrf_jawbreaker_usb.bin. Si vous compilez à partir des sources, le fichier s'appellera hackrf_usb.bin.
Lorsque vous écrivez une image de micrologiciel sur la mémoire flash SPI, veillez à sélectionner un micrologiciel dont le nom de fichier se termine par .bin.
Après avoir écrit le micrologiciel sur la mémoire flash SPI, vous devrez peut-être réinitialiser le dispositif HackRF en appuyant sur le bouton RESET ou en le débranchant et en le rebranchant.
Si vous obtenez une erreur mentionnant HACKRF_ERROR_NOT_FOUND, il s'agit souvent d'un problème de permissions dans votre système d'exploitation.
Pour vérifier si la mise à jour a été correctement installée:
$ hackrf_info hackrf_info version: unknown libhackrf version: unknown (0.5) Found HackRF Index: 0 Serial number: 000000000000000057b068dc22451163 Board ID Number: 2 (HackRF One) Firmware Version: 2018.01.1 (API:1.02) Part ID Number: 0xa000cb3c 0x00724357
Si nécessaire seulement: Récupération du SPI Flash Firmware
Si le firmware installé dans la mémoire flash SPI a été endommagé ou si vous programmez un HackRF fait maison pour la première fois, vous ne pourrez pas utiliser immédiatement le programme hackrf_spiflash comme indiqué dans la procédure ci-dessus.
Suivez plutôt les étapes suivantes :
- Suivez les instructions de démarrage DFU pour démarrer le HackRF en mode de démarrage DFU (DFU Boot).
- Tapez dfu-util --device 1fc9:000c --alt 0 --download hackrf_one_usb.dfu pour charger le micrologiciel d'une version dans la RAM. Si vous avez un Jawbreaker, utilisez hackrf_jawbreaker_usb.dfu à la place. Alternativement, utilisez make -e BOARD=HACKRF_ONE RUN_FROM=RAM pour charger le firmware en RAM et le démarrer.
- Suivez la procédure de mise à jour du micrologiciel SPI flash ci-dessus pour écrire l'image du micrologiciel .bin dans la mémoire flash SPI.
Si nécessaire seulement: DFU Boot
Le mode de démarrage DFU (DFU Boot) n'est normalement nécessaire que si le micrologiciel ne fonctionne pas correctement ou n'a jamais été installé.
Le microcontrôleur LPC4330 du HackRF est capable de démarrer à partir de plusieurs sources de code différentes. Par défaut, le HackRF One démarre à partir de la mémoire flash SPI (SPIFI). Il est également possible de démarrer le HackRF en mode DFU Boot (USB). En mode de démarrage DFU, le HackRF procède à une énumération via USB, attend que le code soit fourni à l'aide de la norme DFU (Device Firmware Update) via USB, puis exécute ce code à partir de la RAM. Le SPIFI est normalement inutilisé et non modifié en mode DFU.
Pour démarrer le HackRF One en mode DFU, maintenez le bouton DFU enfoncé tout en l'allumant ou en appuyant sur le bouton RESET et en le relâchant. Relâchez le bouton DFU lorsque le voyant 3V3 s'allume. Le voyant 1V8 doit rester éteint. À ce stade, le HackRF One est prêt à recevoir le micrologiciel par USB.
Pour démarrer le Jawbreaker en mode DFU, court-circuitez deux broches sur l'une des en-têtes "BOOT" lorsque l'alimentation est fournie pour la première fois. Les broches qui doivent être court-circuitées sont les broches 1 et 2 de l'en-tête P32 du Jawbreaker. L'en-tête P32 est étiqueté P2_8 sur la plupart des Jawbreaker mais peut être étiqueté 2 sur les prototypes. La broche 1 est étiquetée VCC. La broche 2 est la broche centrale. Après le démarrage DFU, vous devriez voir la LED VCC s'allumer et noter que la LED 1V8 ne s'allume pas. À ce stade, le Jawbreaker est prêt à recevoir un micrologiciel par USB.
Vous ne devez utiliser qu'une image de micrologiciel dont le nom de fichier se termine par .dfu, et non un micrologiciel se terminant par .bin.
Installer DFU-Util
$ apt install dfu-util
Depuis les sources:
$ cd ~ $ sudo apt-get build-dep dfu-util $ sudo apt-get install libusb-1.0-0-dev $ git clone git://git.code.sf.net/p/dfu-util/dfu-util $ cd dfu-util $ ./autogen.sh $ ./configure $ make $ sudo make install
Mise à jour du CPLD
Les anciennes versions du firmware du HackRF (prior to release 2021.03.1) nécessitent une étape supplémentaire pour programmer un flux binaire dans le CPLD.
Pour mettre à jour l'image du CPLD, mettez d'abord à jour le microprogramme flash SPI, libhackrf et hackrf-tools.
Ensuite :
$ hackrf_cpldjtag -x firmware/cpld/sgpio_if/default.xsvf
Trois LEDs devraient commencer à clignoter. Cela indique que le CPLD a été programmé avec succès. Réinitialisez le dispositif en appuyant sur le bouton RESET ou en le débranchant et en le rebranchant.
Replay Attaque
Portail
Nous devons déterminer sur quelle fréquence la télécommande va communiquer (autours des 433Mhz).
Sur GQRX, nous allons pouvoir vérifier et ajuster notre fréquence d'écoute. Lorsque nous activons la télécommande, nous devons observer une variation du signal sur la fréquence écoutée.
Enregistrement
$ hackrf_transfer -s 2 -f 433000000 -r file
Émission
$ hackrf_transfer -s 2 -f 433000000 -t file -a 1 -x 24
Options
- -s : Taux d'echantillons en MHz
- -f : Fréquence exacte enregistrée ou diffusée en Hz
- -r : Nom du fichier à l'enregistrement
- -t : Nom du fichier à la lecture
- -a : Amplification
- -x : Gain entre 0 et 47 dB (en Décibel)
- -h : Pour le menu complet des options.
Talkie-walkie
Il s'agit exactement du même procédé vu ci-dessus pour les portail.
Car Key Replay Attack
Pour ne pas que les voitures soit vulnérables à une attaque simple de Replay Attack, les constructeur ont équipé les nouvelles voitures d'un système de code roulant (rolling code system) chaque fois que vous appuyez sur le bouton de déverrouillage, la télécommande utilise un algorithme pour générer un nouveau code ce qui rend donc les ancien siganux inutilisables, un simple Replay Attack comme celui présenté ci-dessus n'est donc pas impossible.
Étude du signal avec URH
Radio Jamming
Le jamming est une technique de brouillage visant à perturber les fréquences comportant des informations, en les submergeant avec du bruit. C'est le rapport signal sur bruit.
Jamming Car Key
En émettant du bruit sur la fréquence utilisé par une clé de voiture, le signal se retrouvera ainsi perdu et ne pourra ainsi pas être reconnu.
RollJam Attack
Méthodologie de l’attaque :
- Un brouillage radio est lancé sur la fréquence 433.92 qui est la fréquence de déverrouillage de notre voiture.
- La victime tente de déverrouiller une première fois la voiture en appuyant sur la clef, et donc en émettant un signal.
- Le signal est capturé et enregistré.
- La victime tente donc une deuxième fois de déverrouiller la voiture, toujours sans réussite.
- Le brouillage s’arrête et le premier signal est lancé ce qui déverrouille la voiture.
Le 2eme signal (Rolling Code) émis par la victime est enregistré. Comme la voiture a reçu uniquement le premier signal, le rolling code du second signal est donc valide, l'attaquant pourra donc déverrouiller la voiture par la suite.