└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Présentation SDR W/ HackRF-One 2 | 3 | Table des matières : 4 | - [Présentation](https://github.com/PierreAdams/HackRF-One-French#pr%C3%A9sentation-sdr-w-hackrf-one) 5 | - [sdr](https://github.com/PierreAdams/HackRF-One-French#sdr) 6 | - [HackRF One](https://github.com/PierreAdams/HackRF-One-French#hackrf-one) 7 | - [Commandes HackRF One - Linux](https://github.com/PierreAdams/HackRF-One-French#commandes-hackrf-one-) 8 | - [PortaPack](https://github.com/PierreAdams/HackRF-One-French#portapack) 9 | - [Configuration PortaPack](https://github.com/PierreAdams/HackRF-One-French#premier-branchement--mise-%C3%A0-jour-du-firmware-) 10 | - [Démonstration](https://github.com/PierreAdams/HackRF-One-French#d%C3%A9monstration-) 11 | - [Replay Attaque](https://github.com/PierreAdams/HackRF-One-French#portail-) 12 | - [Portail](https://github.com/PierreAdams/HackRF-One-French/blob/master/README.md#portail-) 13 | - [Takie Walkie](https://github.com/PierreAdams/HackRF-One-French#talkie-walkie-) 14 | - [Car Key replay Attaque](https://github.com/PierreAdams/HackRF-One-French#car-key-replay-attack) 15 | - [RollJam Attack](https://github.com/PierreAdams/HackRF-One-French#rolljam-attack) 16 | - [Jamming](https://github.com/PierreAdams/HackRF-One-French#radio-jamming-) 17 | - [Car Key Jamming](https://github.com/PierreAdams/HackRF-One-French#jamming-car-key) 18 | - [Wifi Jamming](https://github.com/PierreAdams/HackRF-One-French#jamming-wifi--24ghz) 19 | - [PortaPack](https://github.com/PierreAdams/HackRF-One-French#manipulation---portapack-) 20 | - [Présenation du Firmware Havoc](https://github.com/PierreAdams/HackRF-One-French#fonctionnalit%C3%A9s-portapack-) 21 | - [Replay Attaque avec le PortaPack](https://github.com/PierreAdams/HackRF-One-French#manipulation---portapack-) 22 | - [SSTV](https://github.com/PierreAdams/HackRF-One-French#sstv-slow-scan-television-) 23 | - [Présentation](https://github.com/PierreAdams/HackRF-One-French#sstv-slow-scan-television-) 24 | - [Envoie d'une Image en SSTV avec le HackRF One](https://github.com/PierreAdams/HackRF-One-French#sstv-with-hackrf-one) 25 | - [Tempest SDR W/ HackRF One](https://github.com/PierreAdams/HackRF-One-French#tempest-sdr-avec-le-hackrf-one): 26 | - [GPS Spoofing](https://github.com/PierreAdams/HackRF-One-French#gps-spoofing-via-hackrf-one) 27 | - [GPS Attaque Spoofing Drone DJI](https://github.com/PierreAdams/HackRF-One-French#attaque-sur-drone-dji-mavic-mini-) 28 | 29 | ## SDR 30 | 31 | Le Software Defined Radio (Radio Logiciel) est un récepteur ( et parfois émetteur ) radio remplacé logicielement et matériellement, donc capable de réaliser de manière logicielle des traitements numériques. 32 | __Avantage__ : la puissance du pc permet de traiter les signaux 33 | 34 | Les radios logicielles permettent l'utilisation de multiples formes d'ondes, éventuellement dans différentes bandes spectrales, pour différents usages, voire même de façon simultanée. 35 | Depuis quelques années, la technologie des radios logiciels a fortement, entrainant la réduction des temps et des coûts de conception des produits radios. 36 | 37 | ## HackRF One 38 | Le HackRF est in émetteur-récepteur, crée par [Great Scott Gadget](https://greatscottgadgets.com) en 2014 39 | ![Scan](https://user-images.githubusercontent.com/39098396/79736639-6d92e600-82fa-11ea-8e76-a5e6a3ea749a.jpeg) 40 | __Prix__ : environ 300€ (Antenne comprise) 41 | __Réception / Emission__ : de 10Mhz à 6GHz 42 | 43 | ## Commandes HackRF One : 44 | 45 | __Hackrf_info__ : lors du branchement du hackRF One, cette commande permet d'avoir des informations sur sa version 46 | 47 | __Hackrf_transfer__ : permet de capturer un transfère et de le restransmettre par la suite 48 | 49 | __hackrf_debug__ : Commande de debug du hackRF One 50 | 51 | __hackrf_sweep__ : Commande qui va balayer un champ de fréquences et l'analyser 52 | 53 | __hackrf_spiflash__ : Mettre à jour le firmware 54 | 55 | __hackrf_cpldjtag__ : Mettre à jour le cpld 56 | 57 | 58 | ## PortaPack 59 | Le PortaPack est une coque rigide avec un écran LCD et des touches de navigation 60 | [lien github](https://github.com/furrtek/portapack-havoc) 61 | ![Scan](https://user-images.githubusercontent.com/39098396/79736658-72579a00-82fa-11ea-8692-116d2b8a5461.jpeg) 62 | __Prix__ : 200 € 63 | le portapack permet d'avoir une interface graphique, et d'effectuer des manipulation directement sur le hackRF One. 64 | - le firmware officiel, développé par sharebrained : https://github.com/sharebrained/portapack-hackrf/ 65 | - Havoc est un firmware __Non officiel__ pour le portapack développé par le grand [furrtek](https://github.com/furrtek/portapack-havoc) 66 | 67 | __Note :__ il existe des versions non officiels des portapacks pour hackRF One pour l'avoir testé, celui-ci fonctionne tout aussi bien ! : [Lien Amazon]( 68 | https://www.banggood.com/fr/2_4-Inch-PortaPack-H1-Updated-Version-+-HackRF-One-SDR-+-Metal-Shell-Kit-Software-Defined-Radio-1MHz-6GHz-p-1745547.html?utm_source=googleshopping&utm_medium=cpc_organic&gmcCountry=FR&utm_content=minha&utm_campaign=minha-fr-fr-pc¤cy=EUR&cur_warehouse=CZ&createTmp=1&utm_source=googleshopping&utm_medium=cpc_bgs&utm_content=sandra&utm_campaign=sandra-ssc-fr-css-all-20LP-0630&ad_id=445457608720) 69 | 70 | Pour installer le firmware __Havoc__ sur Windows, une vidéo youtube trés claire à été réalisée sur le sujet : 71 | [Lien Youtube](https://www.youtube.com/watch?v=f0S9jWkRaQU.gif) 72 | 73 | Lorsque le firmware de votre portapack sera installé il sera toujours possible de lancer le mode hackRF (sur pc) il suffit d'activer l'option __"HackRF Mode"__ dans le menu. 74 | 75 | ![Scan](https://user-images.githubusercontent.com/39098396/80219795-42363100-8643-11ea-89bd-fab7d90ed604.PNG) 76 | 77 | -------------------------------------------------------------------- 78 | 79 | 80 | ### Premier Branchement + Mise à jour du Firmware : 81 | 82 | Lorsque vous aurez reçu le HackRF, il faut d'abord mettre à jour le firmware et installer le paquet HackRF sur un PC: 83 | installer le paquet hackrf (Linux) : 84 | ``` apt install hackrf ``` 85 | 86 | Pour mettre à jour le firmware, se rendre sur le github de [Michael Ossmann](https://github.com/mossmann), l'un des menbres de Great Scott Gadget et le createur du Hackrf One. 87 | Télecharger son [Repo HackRF](https://github.com/mossmann/hackrf) 88 | 89 | * Installer l'image standard du firmware : 90 | ``` 91 | hackrf_spiflash -w hackrf_one_usb.bin 92 | ``` 93 | 94 | * Mettre à jour le CPLD (Complex Programmable Logic Device) : 95 | ``` 96 | hackrf_cpldjtag -x sgpio_if/default.xsvf 97 | ``` 98 | 99 | * Vérifier si la mise à jour à été appliquée : 100 | ``` 101 | hackrf_info 102 | ``` 103 | 104 | ``` hackrf_info 105 | hackrf_info version: unknown 106 | libhackrf version: unknown (0.5) 107 | Found HackRF 108 | Index: 0 109 | Serial number: 000000000000000057b068dc22451163 110 | Board ID Number: 2 (HackRF One) 111 | Firmware Version: 2018.01.1 (API:1.02) 112 | Part ID Number: 0xa000cb3c 0x00724357 113 | ``` 114 | 115 | ### Petit rappel utile - Convertion MHz - Ghz : 116 | ![Scan](https://user-images.githubusercontent.com/39098396/79741752-109b2e00-8302-11ea-80d2-f7132bdcff0b.png) 117 | 118 | 119 | # Démonstration : 120 | 121 | Passons maintenant à la pratique : 122 | pour se faire je vous conseille quelques logiciels de SDR sous linux : 123 | * [sdr angel](https://github.com/f4exb/sdrangel) 124 | * [Spectrum Analyzer](https://github.com/pavsa/hackrf-spectrum-analyzer) 125 | * [gqrx](https://gqrx.dk/) 126 | 127 | J'utilise gqrx que je trouve très pratique et simple d'utilisation. 128 | 129 | ## Replay Attaque : 130 | 131 | ### Portail : 132 | Nous allons pour commencer, essayer d'intercepter un signal d'une télécommande de portail : 133 | la première chose à faire est de trouver sur quelle fréquence la telecommande va communiquer avec le portail (en géneral au alentour de 433 Mhz), souvent indiquer soit sur la telecommande, soit sur le site du constructeur. 134 | Si ce n'est pas indiqué : 135 | > Internet est votre ami 136 | 137 | Avec gqrx nous allons pouvoir vérifier et ajuster la fréquence d'écoute (Assurez vous que le logiciel se base sur votre hackRF dans les paramètres de gqrx) 138 | Une fois sur la bonne fréquence, lorsque nous activons la télecommande nous appercevons bien le signal émis. 139 | 140 | ![Scan](https://user-images.githubusercontent.com/39098396/79851629-e0b55e80-83c5-11ea-8a63-2675dcfc38d9.png) 141 | 142 | Nous avons donc maintenant une fréquence précise : 433.910000 Mhz 143 | 144 | Passons ensuite à l'enregistrement : 145 | ``` hackrf_transfer -s 2 -f 433910000 -r open ``` 146 | 147 | Déclencher le signal pendant l'enregistrement : 148 | 149 | ``` hackrf_transfer -s 2 -f 433910000 -t open -a 1 -x 24 ``` 150 | 151 | Puis, réinvoquer le signal devant le portail pour l'ouvrir. 152 | Options utilisées : 153 | ``` 154 | -s : précise le taux d'echantillons en MHz 155 | -f : précise la fréquence exacte enregistrée ou diffusée 156 | -r : Nom du fichier ou sera stocké notre signal 157 | -t : Nom du fichier ou sera lu notre signal (afin de le retransmettre) 158 | -a : Amplifie le signal 159 | -x : le gain entre 0 et 47 dB (en Décibel) 160 | ``` 161 | 162 | On peut créer un script pour plus de professionnalisme : 163 | 164 | ``` 165 | figlet Sesame, Ouvre toi ! 166 | hackrf_transfer -s 2 -f 433910000 -t open -a 1 -x 24 167 | figlet C'est ouvert ! 168 | ``` 169 | 170 | https://user-images.githubusercontent.com/39098396/160092328-b8cd5d47-2db7-4164-aa0c-62ef67cae764.mp4 171 | 172 | 173 | 174 | ### Talkie-Walkie : 175 | 176 | Il s'agit du même procédé, nous trouvons la fréquence, capturons le signal, le stockons et le rediffusons à notre guise. 177 | 178 | Dans mon cas, je capte le signal sur la fréquence 446 Mhz. 179 | 180 | je capture une séquence d'apel par exemple : 181 | ```hackrf_transfer -s 2 -f 446000000 -r HackyWalkie``` 182 | et la rediffuse 183 | ```hackrf_transfer -s 2 -f 446000000 -t HackyWalkie``` 184 | 185 | 186 | https://user-images.githubusercontent.com/39098396/160098399-b75e2add-bfc1-4e97-bfc2-16dfcc39bf8a.mp4 187 | 188 | 189 | ## Car Key Replay Attack 190 | 191 | La plupart de nos voitures aujourd'hui sont livrées avec un porte-clé de déverouillage à distance, ce qui est incroyablement pratique, pratique certe, mais vulnérable... 192 | 193 | > Pour ne pas que les voitures soit vulnérables à une attaque toute simple de Replay Attack, les constructeur ont équipé leurs (nouvelles) voitures d'un systeme 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, une simple Replay Attack comme [celle ci](https://github.com/PierreAdams/HackRF-One-French/blob/master/README.md#portail-) est donc impossible. 194 | 195 | Je dois donc contourner ce problème si je veux effectuer mon attaque. Je vais donc émettre le signal de mon porte clé suffisamment loin de ma voiture pour pas que celle ci prenne en compte le signal. 196 | 197 | Pour la capture et la rediffusion du signal, je vais utiliser le merveilleux outil [URH](https://github.com/jopohl/urh) 198 | 199 | https://user-images.githubusercontent.com/39098396/160099098-f9f3192a-dbee-46c6-856f-f0ba3e265be1.mp4 200 | 201 | 202 | Etapes : 203 | 204 | * Connaitre la fréquence du signal de notre télécommande ( en Europe, la fréquence d'un signal de clé de voiture est autour de 433,9) je reglerais donc ma fréquence en conséquence 205 | * Record le signal ( enlever le surplus / Bruit parasite) 206 | ![Scan](https://user-images.githubusercontent.com/39098396/133303323-59f590eb-a2ff-40f2-8e46-bedf08757865.png) 207 | * Rejouer le signal sur la même fréquence 208 | ![Scan](https://user-images.githubusercontent.com/39098396/133305563-dfb4a63e-a045-40e1-8b3e-31b7b4d3e9eb.png) 209 | * Bonus 1 ) Avec URH, nous pouvons décoder le signal ( Manchester, Substitution, Morse Manchester I, Wireless Short Packet-WSP, ...) 210 | ![Scan](https://user-images.githubusercontent.com/39098396/133304338-aa5eeb69-8e4e-4c3f-9e53-382e25b08617.png) 211 | * Bonus 2) Cet outil nous permet aussi d'analyser le signal et d'extraire les données binaires, pour ensuite, faire un reverse du signal afin de comprendre ce qu'il fait 212 | ![Scan](https://user-images.githubusercontent.com/39098396/133304547-88aa74d9-4dc9-4198-ad24-1363f1e9f73b.png) 213 | 214 | 215 | ## Radio Jamming : 216 | 217 | Le jamming (Brouillage) est une technique (illégal bien sur) visant à perturber les fréquences comportant des informations, en submergant une fréquence avec du bruit. 218 | 219 | Il existe des appareils servant spécifiquement à effectuer ce genre d'actions ( Yard Stick One, ... ) 220 | 221 | Le brouillage se distingue généralement des interférences qui peuvent survenir en raison de dysfonctionnements de l'appareil ou d'autres circonstances accidentelles. 222 | 223 | ### Jamming Car Key 224 | 225 | En émettant du bruit sur la fréquence d'une clés de voiture,le signal de la télécommande est 'noyé' parmis les fausses ondes émises : 226 | 227 | ![Scan](https://user-images.githubusercontent.com/39098396/137524034-0bec7858-23dc-4b1e-baac-76b5eb74a0e0.png) 228 | Résultat de Sharp SDR pour la fréquence 433.9 MHz 229 | 230 | Le module Jamming du Portapack Havoc nous permet d'emettre ce genre de bruit : 231 | ![Scan](https://user-images.githubusercontent.com/39098396/137525873-80687a54-d7b5-4ab0-b550-12ec9fdd61af.PNG) 232 | 233 | https://user-images.githubusercontent.com/39098396/160119238-bb2879fa-e6a5-473a-83e2-37b8613054cb.mp4 234 | 235 | [Youtube Vidéo](https://www.youtube.com/watch?v=p4drw8csLSE) 236 | 237 | Cette attaque est certes très efficace, mais il est nécessaire de posséder la clé de voiture (tout du moins quelques instants afin de générer le signal). 238 | La plupart du temps nous avons aucune interaction avec la victime et donc aucun moyen de se procurer la clef de la voiture (à moins d’utiliser une attaque de social engineering...) 239 | 240 | ### RollJam Attack 241 | 242 | Il existe une méthode d’attaque qui ne nécessite en aucun cas la possession des clefs : Rolljam Attack 243 | Cette attaque nécessite beaucoup de compétences et possède un très faible ratio de réussite, elle mélange brouillage (jamming) et replay Code Rolling. 244 | 245 | ![Scan](https://user-images.githubusercontent.com/39098396/143575294-31ba22b7-e968-4d29-a995-4faae05a43a4.jpeg) 246 | 247 | Méthodologie de l’attaque : 248 | 1. Un brouillage radio est lancé sur la fréquence 433.92 qui est la fréquence du déverrouillage de la voiture. 249 | 2. La victime tente de deverouiller une première fois la voiture en appuyant sur la clef, et donc en émettant un signal. 250 | 3. Le signal est capturé et enregistré. 251 | 4. La victime tente donc une deuxième fois de déverrouiller la voiture, toujours sans réussite. 252 | 5. Le brouillage s’arrete et le premier signal est lancé ce qui déverrouille la voiture. 253 | 254 | Le 2eme signal ( Rolling Code) émis par la victime est enregistré. 255 | Comme la voiture a reçu uniquement le premier signal, le rolling code du second signal est donc valide. (l'attaquant pourra donc déverouiller la voiture par la suite) 256 | 257 | ### Jamming Wifi ( 2.4GHz) 258 | 259 | Les fréquences du WiFi sont les bandes 2,4 GHz et 5 GHz. 260 | 261 | > Les principales différences entre les deux fréquences sont la portée (couverture) et la bande passante (vitesse) fournies par les bandes. La bande 2,4 GHz offre une couverture sur une plus longue portée mais transmet les données à des vitesses plus lentes. La bande 5 GHz offre une couverture moindre mais transmet les données à des vitesses plus rapides. 262 | 263 | Sur la bande 2.4 Ghz Voici la liste des canaux (et fréquences associées) autorisés en Wi-Fi : 264 | 265 | ![Scan](https://user-images.githubusercontent.com/39098396/137624125-c0ada0c7-7322-48e5-80ac-ce672ae9685a.jpg) 266 | 267 | Une fois le canal déterminé, nous connaissons la fréquence exact sur laquelle un appareil communique avec le routeur. 268 | Nous pouvons ensuite construire un graph Gnuradio afin de génerer du bruit sur cette meme fréquence comme ceci : 269 | 270 | ![Scan](https://user-images.githubusercontent.com/39098396/137624826-89764ea5-6fc8-4482-8774-2fd966cc3c57.png) 271 | 272 | > pour réaliser ceci, je me suis fortement inspiré de [Ce repo Github](https://github.com/timkim0713/RFJamming-FMRadio-SDR) 273 | 274 | > Cette démonstration est en aucun cas à reproduire chez vous, elle nous sert uniquement à comprendre comment le jamming WIFI fonctionne : 275 | 276 | https://user-images.githubusercontent.com/39098396/160118715-cada10d4-1dab-441a-ad22-54f3752217e8.mp4 277 | 278 | [Youtube Vidéo](https://youtu.be/SNp44YsZjNo) 279 | 280 | 281 | ## Manipulation - Portapack : 282 | 283 | Avec le portapack, toutes les manipulations que nous avons effectuées précedemment, pourront desormais être réalisés directement sur le portapack. 284 | 285 | Voici le menu d'__Havoc__ : 286 | 287 | ![Scan](https://user-images.githubusercontent.com/39098396/80214273-d8b22480-863a-11ea-9671-3e846ce77b4f.PNG) 288 | 289 | Prenons par exemple, une lampe avec une télécommande Hertzienne, nous pouvons voir qu'elle communique avec celle-ci sur la fréquence 433.920 Mhz. 290 | ![Scan](https://user-images.githubusercontent.com/39098396/80212189-55430400-8637-11ea-9ea9-405f934ed19b.JPG) 291 | 292 | Sur le portapack, dans l'onglet "Capture" nous allons régler la fréquence sur 433.9 Mhz, écouter le signal puis l'enregistrer afin de le rediffuser : 293 | 294 | ![Scan](https://user-images.githubusercontent.com/39098396/80214995-08adf780-863c-11ea-871c-abbaafd03fc4.PNG) 295 | ![Scan](https://user-images.githubusercontent.com/39098396/80214019-6a6d6200-863a-11ea-8f5b-724de95f83ec.PNG) 296 | 297 | 298 | Une fois le signal capturé : se rendre dans la partie "Replay", ouvrir le fichier contenant le sginal capturé. (éventuellement régler la fréquence de diffusion) 299 | 300 | 301 | ![Scan](https://user-images.githubusercontent.com/39098396/80214776-b371e600-863b-11ea-8f68-dff7b8b85ac1.PNG) 302 | 303 | __et hop le signal est rediffusé !!__ 304 | 305 | ## Fonctionnalités Portapack : 306 | 307 | Le Wiki du Github de furrtek explique très bien toutes les options que nous offre le Portapack: https://github.com/furrtek/portapack-havoc/wiki 308 | 309 | L'onglet __Play Dead__ est une sorte de barrière pour empecher les néophytes d'utiliser le portapack : 310 | l'erreur Firmware suivante apparait lorsqu'on rentre dans l'onglet : 311 | 312 | ![Scan](https://user-images.githubusercontent.com/39098396/80584597-33b89280-8a12-11ea-81ae-130242bf418f.PNG) 313 | 314 | Pour sortir, il faut entrer la combinaison prédefinie dans l'onglet : __Settings__ > __Play dead__ 315 | Par defaut cette combinaison est : __Haut-Bas-Gauche-Droite__ (Le bouton __Reset__ marche aussi ^^) 316 | 317 | L'onglet __"Search/CLose Call"__ permet d'identifier exactement la fréquence d'un signal, on précise un fenêtre, et on déclenche l'émetteur : 318 | ![Scan](https://user-images.githubusercontent.com/39098396/80237787-9bab5980-865d-11ea-888f-cdbe48752591.PNG) 319 | 320 | L'onglet __Receivers__ permet de recevoir toutes sortes de fréquences : 321 | 322 | * __AD-B: Plane :__ système de surveillance pour le contrôle du trafic aérien (connaitre la position des avions) 323 | * __ACARS :__ système de communication/surveillance entre les aéronef et les sations au sol 324 | * __AIS :__ système d’échanges automatisés de messages entre navires par radio 325 | * __AFSk :__ audio frequency-shift keying, conçue pour véhiculer la voix ou de la musique, par exemple une liaison téléphone ou radio. 326 | * __AUDIO :__ Recpteur Audio capable de recevoir different mode de fréquences (AM et FM) ![lien Github sharebrained](https://github.com/sharebrained/portapack-hackrf/wiki/Audio-Modes) 327 | * __ERT :__ Paquet contenant les données d'un compteur éléctrique/Gaz pour faciliter la collecte de données. 328 | * __POCSAG :__ Protocole de transmission radio utilisé pour les réseaux de radiomessagerie. 329 | * __Radiosondes :__ 330 | * __TPMS :__ Tyre Pressure Monitoring System en anglais, Système de surveillance de la pression des pneumatiques. 331 | * __APRS :__ Automatic Packet Reporting System est un système de radiocommunication numérique utilisé par les radioamateurs, qui permet le partage d'informations d'intérêt local. 332 | * __DMR framing :__ Digital Mobile Radio, norme de radio numérique mobile ouverte et utilisée dans des produits commerciaux à travers le monde. 333 | * __SigFox :__ Sigfox est un opérateur de télécommunications français communiquant sur la fréquence 868 MHz. 334 | * __LoRa :__ LoRaWAN est un protocole de télécommunication permettant la communication à bas débit, par radio, d'objets à faible consommation électrique communiquant selon la technologie LoRa 335 | * __SSTV :__ Slow Scan Television, est une activité radioamateur qui vise à la transmission analogique d'images ([J'y consacre quelques lignes juste ici ](https://github.com/PierreAdams/HackRF-One-en-Francais/blob/master/README.md#sstv-slow-scan-television-)) 336 | * __TETRA framing :__ Terrestrial Trunked Radio, destinés aux équipes de sécurité : elle opére entre 380-400 MHz pour les services d’urgence et dans les bandes 410-430 MHz | 450-470 MHz | 870-880 MHz pour les applications civiles et privées. 337 | 338 | 339 | L'onglet __Transmitters__ permet de transmettre toutes ces fréquences. 340 | 341 | Quelques sigles que l'on va retrouver lors de l'utilisation du hackRF One couplé du Portapack : 342 | 343 | * __LNA :__ Amplificateur à faible bruit. 344 | * __AMP :__ Amplificateur. 345 | * __VGA :__ Gain. 346 | 347 | 348 | Info sur les Leds : 349 | 350 | ![Scan](https://user-images.githubusercontent.com/39098396/80587157-59e03180-8a16-11ea-8317-6111b7c383ff.jpg) 351 | 352 | Chaque led à une couleur differente : 353 | 354 | 355 | * __3V3, 1V8, RF :__ lorsque ces leds sont allumées, cela signifie que le Hackrf est allimenté (par une batterie externe par exemple) 356 | * __USB :__ connexion USB à un ordinateur, la communication est donc possible via les commandes __hackrf..__ 357 | * __TX :__ le hackRF Transmet 358 | * __RX :__ le hackRF Recoit 359 | 360 | * Le bouton __Reset__ : permet une remise à zero du Microcontrôleur 361 | * Le bouton __ISP / DFU__ : permet de modifier les données en cas de probleme sur le HackRF 362 | 363 | 364 | ## SSTV (Slow Scan Television) : 365 | 366 | SSTV est une activité qui merite d'être creusée tant elle est interressante, comme vu précedemment c'est un mode qui permet de recevoir / émettre des images 367 | 368 | ### SSTV with HackRF ONE 369 | Grace au HackRF One, nous pouvons également émettre des images via le mode SSTV : 370 | 371 | Démonstration en vidéo : 372 | 373 | [Vidéo SSTV Transmission](https://youtu.be/Pa1LIobzjHE) 374 | 375 | Voici l'image de base : (l'image doit etre en format Bitmap (320x256) 376 | ![Scan](https://user-images.githubusercontent.com/39098396/127194828-9e39c4d0-284b-42cf-a762-f22c090206b7.jpg) 377 | 378 | Voici la photo une fois recue : 379 | ![Scan](https://user-images.githubusercontent.com/39098396/127194769-ca636417-7380-4816-aceb-ef0caa8e4974.PNG) 380 | 381 | autre exemple : 382 | [HackRF_SSTV](https://twitter.com/i/status/846778098670616576) 383 | 384 | 385 | Logiciels permettant de decoder les images depuis un signal : 386 | - Windows : [MMSTV](https://hamsoft.ca/pages/mmsstv.php) (Gratuit) 387 | - Linux : [QSSTV](http://users.telenet.be/on4qz/qsstv/index.html) (Gratuit) 388 | - iOS : [“SSTV Slow Scan TV” by Black Cat Systems](https://apps.apple.com/app/sstv/id387910013) (Payant, 3,49€) 389 | - Mac OS X : [Multiscan 3B SSTV](https://www.qsl.net/kd6cji/) (gratuit) 390 | - Android : [Robot3](https://play.google.com/store/apps/details?id=xdsopl.robot36&hl=en) (Gratuit) 391 | 392 | 393 | source : [AMSAT](https://site.amsat-f.org/satellites/station-spatiale-internationale-i-s-s/ariss/recevoir-la-sstv-avec-liss/) 394 | 395 | Il existe des exemples de signaux SSTV à cette adresse afin de s'entrainer : [WIKI_SSTV](https://www.sigidwiki.com/wiki/Slow-Scan_Television_(SSTV)) 396 | 397 | *Fait interessant :* 398 | il existe un programme nommé **ARISS SSTV** (Amateur Radio on the International Space Station) precedemment SAREX crée en 2011, qui transmet des images depuis l'ISS (Station Spacial International) : 399 | Le mode utilisé pour recevoir les images SSTV de la station est le mode **PD120**. La reception d’une image prend environ 2 minutes sur la fréquence **145.800 Mhz** 400 | Nous pouvons aussi uplaoder les images que nous avons recus : [spaceflightsoftwaret](https://www.spaceflightsoftware.com/ARISS_SSTV/index.php) 401 | 402 | 403 | *Comment faire : * 404 | Dans un premier temps il est neccessaire de savoir où se situe la Station Spatial International : 405 | - [Orbitron](http://blog.f1src.org/page/orbitron.htm) (Software) 406 | - [n2yo](https://www.n2yo.com/?s=25544&df=1) (WebSite) 407 | - [SpotTheStation](https://spotthestation.nasa.gov/tracking_map.cfm) 408 | - [ISS Finder](https://apps.apple.com/fr/app/iss-finder/id670637083) 409 | 410 | Il faut que l'ISS se trouve a proximité de notre antenne, pour commencer à recevoir le signal SSTV : 411 | et que bien sur, un programme de diffusion de signaux SSTV soit en cours, pour être au courant des programmes de diffusions, nous pouvons nous rendre sur : https://ariss-sstv.blogspot.com ou sur le twitter de ARISSFR 412 | 413 | Vidéo youtube : [ISS_SSTV_Receive](https://www.youtube.com/watch?v=QGnGE2c9io4) 414 | 415 | 416 | ## Tempest SDR [avec le HackRF ONE] 417 | 418 | Tempest SDR est un [outil open source de Martin Marinov](https://github.com/martinmarinov/TempestSDR) qui permet, grace aux ondes émisent de façon non intentionelle, d'afficher le contenu d'un écran. Concretement : un cable HDMI émet des ondes 'garbage', celles ci peuvent être récuperées et grace à l'outil Tempest SDR, nous pouvons transformer ces ondes en affichage en temps réel. 419 | [source](https://www.rtl-sdr.com/?s=tempestSDR) 420 | 421 | ![SDR](https://user-images.githubusercontent.com/39098396/125200291-b7068280-e26a-11eb-8c93-a0ac73c8bc2e.jpeg) 422 | 423 | Il faut dans un premier temps connaître sur quelle fréquence radio notre port HDMI envoie son 'garbage' : 424 | nous pouvons la déterminer sur GQRX en faisant des tests de branchements / debranchements du cable. 425 | Je détermine donc que la 'fréquence d'émission' de mon cable est : 198 000 000 khz 426 | 427 | ![GQRX](https://user-images.githubusercontent.com/39098396/125199684-a1dc2480-e267-11eb-9803-69e3d6367335.png) 428 | 429 | Je branche mon hackRF, je pointe l'antenne vers le port HDMI de mon écran, puis je lance l'outil en écoutant sur la bonne fréquence, je dois aussi connaitre la résolution et le taux de rafraichissement de l'écran cible, et voila : 430 | 431 | ![TempestSDR](https://user-images.githubusercontent.com/39098396/125199259-a9023300-e265-11eb-867c-96a8a2418b7f.PNG) 432 | Vidéo demonstrative de l'outil et de ce qu'on peut faire avec cet outil : 433 | 434 | https://user-images.githubusercontent.com/39098396/148372911-a02e561f-b692-4e0d-9ed0-131611c9cb00.mp4 435 | 436 | 437 | ## GPS Spoofing via HackRF One 438 | 439 | Le GPS Spoofing est une technique qui consiste à envoyer de fausses informations à un systeme GPS afin d'afficher la mauvaise position. 440 | 441 | __Fonctionnement d'un GPS :__ Un recepteur GPS fonctionne grace au calcul de la distance entre sont capteur et plusieurs satellites émeteurs (4) via des ondes, il determine et affiche sa position telle que nous la voyons sur un GPS classique. 442 | 443 | ![Image](https://user-images.githubusercontent.com/39098396/129039739-0d750fc3-58a5-407b-bcb7-1504cb977551.png) 444 | 445 | la fréquence de signal d'un GPS basique est de 1575,42MHz 446 | 447 | GPS-SDR-SIM (Compatible Linux et Windows) est un outil (disponible sur ce [repo](https://github.com/osqzss/gps-sdr-sim)) permettant de mener ce genre d'action. 448 | 449 | ### Démonstration : 450 | 451 | - Dans un premier temps nous devons télécharger le fichier [BRDC du jour](https://cddis.nasa.gov/archive/gnss/data/daily/) (Broadcast Ephemeris Data) qui contient les posittions de chaque satelitte GPS. 452 | 453 | __Petit Script qui automatise le process :__ 454 | ``` 455 | #!/bin/bash 456 | 457 | # Declaration des Variables 458 | day=$(date +%j) 459 | year=$(date +%Y) 460 | yr=$(date +%y) 461 | RINEX_NAV_FILE="brdc${day}0.${yr}n" 462 | 463 | # Téléchargement & extraction du fichier 464 | wget -q ftps://gdc.cddis.eosdis.nasa.gov/pub/gps/data/daily/$year/brdc/$RINEX_NAV_FILE.gz -O brdc_file`date +%d_%m_%y`.gz 465 | gunzip brdc_file`date +%d_%m_%y`.gz 466 | 467 | echo -e " le fichier \033[32m"brdc_file`date +%d_%m_%y` "\033[00mest extrait" 468 | ``` 469 | 470 | - Trouver une position gps et avoir les infos suivantes : (Latitude,Longitude,hauteur) 471 | 472 | - Puis générer le fichier gpssim.bin executant cette commande en passant comme argument les positions GPS voulu : 473 | 474 | ``` 475 | $ ./gps-sdr-sim -e brdc_file -b 8 -l 48.859057,2.293276,30 476 | ``` 477 | 478 | ``` 479 | Usage: gps-sdr-sim [options] 480 | Options: 481 | -e RINEX navigation file for GPS ephemerides (required) 482 | -u User motion file (dynamic mode) 483 | -g NMEA GGA stream (dynamic mode) 484 | -c ECEF X,Y,Z in meters (static mode) e.g. 3967283.15,1022538.18,4872414.48 485 | -l Lat,Lon,Hgt (static mode) e.g. 30.286502,120.032669,100 486 | -t Scenario start time YYYY/MM/DD,hh:mm:ss 487 | -T Overwrite TOC and TOE to scenario start time 488 | -d Duration [sec] (dynamic mode max: 300 static mode max: 86400) 489 | -o I/Q sampling data file (default: gpssim.bin ; use - for stdout) 490 | -s Sampling frequency [Hz] (default: 2600000) 491 | -b I/Q data format [1/8/16] (default: 16) 492 | -i Disable ionospheric delay for spacecraft scenario 493 | -v Show details about simulated channels 494 | ``` 495 | 496 | - Exécuter la commande suivante en branchant le HackRF 497 | 498 | ``` 499 | $ hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 42 500 | ``` 501 | 502 | ``` 503 | Usage: hackrf_transfer [OPTIONS] 504 | Options : 505 | -r # Receive data into file. 506 | -t # Transmit data from file. 507 | -w # Receive data into file with WAV header and automatic name. 508 | # This is for SDR# compatibility and may not work with other software. 509 | [-f set_freq_hz] # Set Freq in Hz 510 | [-a set_amp] # Set Amp 1=Enable, 0=Disable. 511 | [-l gain_db] # Set lna gain, 0-40dB, 8dB steps 512 | [-i gain_db] # Set vga(if) gain, 0-62dB, 2dB steps 513 | [-x gain_db] # Set TX vga gain, 0-47dB, 1dB steps 514 | [-s sample_rate_hz] # Set sample rate in Hz (8/10/12.5/16/20MHz) 515 | [-n num_samples] # Number of samples to transfer (default is unlimited). 516 | [-b baseband_filter_bw_hz] # Set baseband filter bandwidth in MHz. 517 | Possible values: 1.75/2.5/3.5/5/5.5/6/7/8/9/10/12/14/15/20/24/28MHz, default < sample_rate_hz. 518 | ``` 519 | 520 | Si nous exécutons un GQRX sur les fréquences GPS nous voyons bien les ondes que le HackRF envoie : 521 | 522 | ![Image](https://user-images.githubusercontent.com/39098396/128635162-733e9233-48e7-4b09-9c0f-25af4831c5e2.png) 523 | 524 | Voici le résultat en vidéo : 525 | 526 | https://user-images.githubusercontent.com/39098396/148372714-4116378a-6219-47f0-b94b-b56c8e695303.mov 527 | 528 | Cet outil possède une puissante de portée de plusieurs mètres. 529 | Cela fonctionne aussi sur Iphone et son application intégrée : __Plans__ : 530 | 531 | ![Image](https://user-images.githubusercontent.com/39098396/128639774-73033997-319a-4aa2-9a6c-c1b1d208ea66.JPG) 532 | 533 | 534 | ### Attaque sur Drone (DJI Mavic Mini) : 535 | 536 | Les drones possedent une sécurité GPS qui bloque les vols lorsque les utilisateurs se situent dans certaines Zones (Militaire, Aéroport, Centre Ville) 537 | 538 | ![Image2](https://user-images.githubusercontent.com/39098396/128742786-bf17a5ed-7cb3-461e-8665-d5c9fb075072.png) 539 | 540 | ![Image](https://user-images.githubusercontent.com/39098396/128742210-63b51ac0-80b2-4621-8ba0-9b5edbb01256.jpeg) 541 | 542 | Voici une map qui répertorie les endroits Autorisés / Interdits partout dans le monde : [Drone-Spot](https://www.drone-spot.tech) 543 | 544 | Cependant, il faut savoir que le drone se fie au GPS du téléphone, ce qui veut donc dire que nous pouvons spoofer la positions GPS du téléphone afin de faire décoler notre drone dans des endroits non legitime. 545 | 546 | Exemple : 49.199544,5.470661,0 547 | 548 | Mais qu'en est t'il d'un spoofing d'endroits 'NO FLY ZONE' lors d'un vol de drone dans un endoit autorisé : 549 | Dans ce cas, je vais simuler un vol au dessus d'un aéroport pendant un vol légitime : 550 | 551 | la position va se changer et le message suivant apparait : (le pilote dispose de 90 secondes pour partir de la NON FLY ZONE) sinon le drone procedera à un aterissage automatique. 552 | 553 | 554 | ![Image](https://user-images.githubusercontent.com/39098396/129611809-87c16fdb-399d-4334-a379-bdf492f5191e.PNG) 555 | 556 | Puis impossible de faire redecoller le drone par la suite : 557 | 558 | 559 | ![Image](https://user-images.githubusercontent.com/39098396/129612565-74461bb0-c93d-4657-abf9-27c13c2f7f5d.PNG) 560 | 561 | --------------------------------------------------------------------------------