Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
gps-sdr-sim — Software-Defined GPS Signal Simulator | Kitploit
Outils/GitHubGitHub/osqzss/gps-sdr-sim
Embedded Systems SecurityWireless SecurityPenetration TestingHardware & IoT SecurityArchived
GitHubosqzss/gps-sdr-sim

gps-sdr-sim

Software-Defined GPS Signal Simulator

Voir le dépôt
3.5k972il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

GPS-SDR-SIM

GPS-SDR-SIM génère des flux de données de signal en bande de base GPS, qui peuvent être convertis en RF à l'aide de plateformes radio définies par logiciel (SDR), telles que ADALM-Pluto, bladeRF, HackRF, et USRP.

Instructions de compilation sous Windows

  1. Lancez Visual Studio.
  2. Créez un projet vide pour une application console.
  3. Dans l'Explorateur de solutions à droite, ajoutez « gpssim.c » et « getopt.c » au dossier Fichiers sources.
  4. Sélectionnez « Release » dans la liste déroulante Configurations de la solution.
  5. Générez la solution.

Compilation avec GCC

root@kitploit:~
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim

Utilisation de fichiers de mouvement utilisateur plus volumineux

Afin d'utiliser des fichiers de mouvement utilisateur contenant plus de 30000 échantillons (à 10 Hz), la variable USER_MOTION_SIZE peut être définie au temps maximum du fichier de mouvement utilisateur en secondes. Il est conseillé de le faire via make afin que gps-sdr-bin puisse mettre à jour la taille si nécessaire. Exemple :

root@kitploit:~
$ make USER_MOTION_SIZE=4000

Cette variable peut également être définie lors de la compilation directe avec GCC :

root@kitploit:~
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim -DUSER_MOTION_SIZE=4000

Génération du fichier de signal GPS

Une trajectoire définie par l'utilisateur peut être spécifiée soit dans un fichier CSV contenant les positions utilisateur en coordonnées géocentriques fixes (ECEF), soit dans un flux NMEA GGA. La fréquence d'échantillonnage du mouvement utilisateur doit être de 10 Hz. L'utilisateur peut également attribuer un emplacement statique directement via la ligne de commande.

L'utilisateur spécifie la constellation des satellites GPS via un fichier d'éphémérides de diffusion GPS. Le fichier d'éphémérides de diffusion quotidien (brdc) est une fusion des fichiers de navigation individuels des stations. L'archive pour le fichier quotidien peut être téléchargée depuis : https://cddis.nasa.gov/archive/gnss/data/daily/. L'accès à ce site nécessite une inscription gratuite.

Ces fichiers sont ensuite utilisés pour générer le pseudo-distance et l'effet Doppler simulés pour les satellites GPS en vue. Ces données de distance simulées sont ensuite utilisées pour générer les échantillons I/Q numérisés du signal GPS.

L'interface en ligne de commande bladeRF et ADALM-Pluto nécessite des paires I/Q stockées sous forme d'entiers signés 16 bits, tandis que hackrf_transfer et gps-sdr-sim-uhd.py prennent en charge les octets signés.

HackRF, bladeRF et ADALM-Pluto peuvent accepter le taux d'échantillonnage par défaut de 2,6 MHz, tandis que l'USRP2 nécessite un décimateur entier pair de 100 MHz, soit 2,5 MHz.

L'heure de début de la simulation peut être spécifiée si l'ensemble correspondant d'éphémérides est disponible. Sinon, la première heure d'éphéméride dans le fichier de navigation RINEX est sélectionnée.

La durée maximale de simulation est définie par USER_MOTION_SIZE pour éviter que le fichier de sortie ne devienne trop volumineux.

La taille du fichier de sortie peut être réduite en utilisant l'option « -b 1 » pour stocker quatre échantillons I/Q 1-bit dans un seul octet. Vous pouvez utiliser bladeplayer pour bladeRF afin de lire le fichier compressé.

root@kitploit:~
Usage: gps-sdr-sim [options]
Options:
  -e <gps_nav>     Fichier de navigation RINEX pour les éphémérides GPS (requis)
  -u <user_motion> Fichier de mouvement utilisateur au format ECEF x, y, z (mode dynamique)
  -x <user_motion> Fichier de mouvement utilisateur au format lat, lon, hauteur (mode dynamique)
  -g <nmea_gga>    Flux NMEA GGA (mode dynamique)
  -c <location>    Coordonnées ECEF X,Y,Z en mètres (mode statique) p.ex. 3967283.15,1022538.18,4872414.48
  -l <location>    Lat, Lon, Hgt (mode statique) p.ex. 30.286502,120.032669,100
  -L <wnslf,dn,dtslf> Événement de saut de seconde futur pour l'utilisateur en numéro de semaine GPS, numéro de jour, prochaine seconde intercalaire p.ex. 2347,3,19
  -t <date,time>   Heure de début du scénario AAAA/MM/JJ,hh:mm:ss
  -T <date,time>   Remplace TOC et TOE par l'heure de début du scénario
  -d <duration>    Durée [s] (max dynamique : 300, max statique : 86400)
  -o <output>      Fichier de données d'échantillonnage I/Q (par défaut : gpssim.bin; utilisez - pour stdout)
  -s <frequency>   Fréquence d'échantillonnage [Hz] (par défaut : 2600000)
  -b <iq_bits>     Format des données I/Q [1/8/16] (par défaut : 16)
  -i               Désactiver le délai ionosphérique pour le scénario spatial
  -p [fixed_gain]  Désactiver l'affaiblissement de propagation et maintenir le niveau de puissance constant
  -v               Afficher les détails sur les canaux simulés

Le mouvement utilisateur peut être spécifié en mode dynamique ou statique :

root@kitploit:~
> gps-sdr-sim -e brdc3540.14n -u circle.csv
root@kitploit:~
> gps-sdr-sim -e brdc3540.14n -x circle_llh.csv
root@kitploit:~
> gps-sdr-sim -e brdc3540.14n -g triumphv3.txt
root@kitploit:~
> gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100

Transmission des échantillons

Le port TX d'une plateforme SDR particulière est connecté au récepteur GPS testé via un bloc DC et un atténuateur fixe de 50 à 60 dB.

BladeRF :

Le fichier de signal GPS simulé, nommé « gpssim.bin », peut être chargé dans le bladeRF pour lecture comme ci-dessous :

root@kitploit:~
set frequency 1575.42M
set samplerate 2.6M
set bandwidth 2.5M
set txvga1 -25
cal lms
cal dc tx
tx config file=gpssim.bin format=bin
tx start

Vous pouvez également exécuter ces commandes via l'option script de bladeRF-cli comme ci-dessous :

root@kitploit:~
> bladeRF-cli -s bladerf.script

HackRF :

Les données de sortie doivent être des échantillons I/Q signés 8 bits.

root@kitploit:~
> gps-sdr-sim -e brdc0010.22n -b 8

Vous pouvez utiliser l'outil hackrf_transfer du logiciel hôte HackRF.

root@kitploit:~
> hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0

Périphériques compatibles UHD (testé uniquement avec USRP2) :

root@kitploit:~
> gps-sdr-sim-uhd.py -t gpssim.bin -s 2500000 -x 0

Vous pouvez également utiliser l'outil tx_samples_from_file inclus dans les exemples UHD :

root@kitploit:~
> tx_samples_from_file --file gpssim.bin --type short --rate 2500000 --freq 1575420000 --gain 0

LimeSDR (dans le cas d'un fichier 1 Msps 1 bit, pour obtenir toute la dynamique en bande de base et une faible puissance RF) :

root@kitploit:~
> limeplayer -s 1000000 -b 1 -d 2047 -g 0.1 < ../circle.1b.1M.bin

ADALM-Pluto (PlutoSDR) :

Le périphérique ADALM-Pluto est censé avoir son interface réseau active et accessible via « pluto.local » par défaut.

Paramètres par défaut :

root@kitploit:~
> plutoplayer -t gpssim.bin

Définir l'atténuation TX :

root@kitploit:~
> plutoplayer -t gpssim.bin -a -30.0

Par défaut -20,0 dB. Plage applicable de 0,0 dB à -80,0 dB par pas de 0,25 dB.

Définir la largeur de bande RF :

root@kitploit:~
> plutoplayer -t gpssim.bin -b 3.0

Par défaut 3,0 MHz. Plage applicable de 1,0 MHz à 5,0 MHz.

Licence

Copyright © 2015-2025 Takuji Ebinuma
Distribué sous la Licence MIT.

Télécharger l’outil