Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
gps-sdr-sim — Simulador de señales GPS definido por software | Kitploit
Herramientas/GitHubGitHub/osqzss/gps-sdr-sim
Seguridad de Sistemas EmbebidosSeguridad InalámbricaPruebas de PenetraciónSeguridad de Hardware e IoTArchived
GitHubosqzss/gps-sdr-sim

gps-sdr-sim

Simulador de señales GPS definido por software

Ver Repositorio
3.5k972hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

GPS-SDR-SIM

GPS-SDR-SIM genera flujos de datos de señal de banda base GPS, que pueden convertirse a RF utilizando plataformas de radio definida por software (SDR), como ADALM-Pluto, bladeRF, HackRF, y USRP.

Instrucciones de compilación en Windows

  1. Inicie Visual Studio.
  2. Cree un proyecto vacío para una aplicación de consola.
  3. En el Explorador de soluciones a la derecha, agregue "gpssim.c" y "getopt.c" a la carpeta Souce Files.
  4. Seleccione "Release" en la lista desplegable de Configuraciones de solución.
  5. Compile la solución.

Compilación con GCC

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

Uso de archivos de movimiento de usuario más grandes

Para usar archivos de movimiento de usuario con más de 30000 muestras (a 10Hz), la variable USER_MOTION_SIZE se puede establecer al tiempo máximo del archivo de movimiento de usuario en segundos. Se recomienda hacer esto usando make para que gps-sdr-bin pueda actualizar el tamaño cuando sea necesario. ej:

root@kitploit:~
$ make USER_MOTION_SIZE=4000

Esta variable también se puede establecer al compilar directamente con GCC:

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

Generación del archivo de señal GPS

Se puede especificar una trayectoria definida por el usuario en un archivo CSV, que contiene las posiciones del usuario en coordenadas geocéntricas fijas (ECEF), o en un flujo NMEA GGA. La tasa de muestreo del movimiento del usuario debe ser de 10Hz. El usuario también puede asignar una ubicación estática directamente a través de la línea de comandos.

El usuario especifica la constelación de satélites GPS a través de un archivo de efemérides de transmisión GPS. El archivo de efemérides de transmisión GPS diario (brdc) es una fusión de los archivos de navegación de sitios individuales en uno solo. El archivo del archivo diario se puede descargar de: https://cddis.nasa.gov/archive/gnss/data/daily/. El acceso a este sitio requiere registro, que es gratuito.

Estos archivos se utilizan luego para generar el pseudorange simulado y el Doppler para los satélites GPS a la vista. Estos datos de rango simulados se utilizan luego para generar las muestras I/Q digitalizadas para la señal GPS.

La interfaz de línea de comandos de bladeRF y ADALM-Pluto requiere pares I/Q almacenados como enteros con signo de 16 bits, mientras que hackrf_transfer y gps-sdr-sim-uhd.py admiten bytes con signo.

HackRF, bladeRF y ADALM-Pluto pueden aceptar la tasa de muestreo predeterminada de 2.6MHz, mientras que el USRP2 requiere un decimador integral par de 100 MHz, es decir, 2.5MHz.

La hora de inicio de la simulación se puede especificar si el conjunto de efemérides correspondiente está disponible. De lo contrario, se selecciona la primera hora de efemérides en el archivo de navegación RINEX.

La duración máxima de la simulación está definida por USER_MOTION_SIZE para evitar que el archivo de salida se vuelva demasiado grande.

El tamaño del archivo de salida se puede reducir usando la opción "-b 1" para almacenar cuatro muestras I/Q de 1 bit en un solo byte. Puede usar bladeplayer para bladeRF para reproducir el archivo comprimido.

root@kitploit:~
Usage: gps-sdr-sim [options]
Options:
  -e <gps_nav>     Archivo de navegación RINEX para efemérides GPS (requerido)
  -u <user_motion> Archivo de movimiento de usuario en formato ECEF x, y, z (modo dinámico)
  -x <user_motion> Archivo de movimiento de usuario en formato lat, lon, altura (modo dinámico)
  -g <nmea_gga>    Flujo NMEA GGA (modo dinámico)
  -c <location>    ECEF X,Y,Z en metros (modo estático) ej. 3967283.15,1022538.18,4872414.48
  -l <location>    Lat,Lon,Alt (modo estático) ej. 30.286502,120.032669,100
  -L <wnslf,dn,dtslf> Evento de salto futuro de usuario en número de semana GPS, número de día, próximo segundo intercalar ej. 2347,3,19
  -t <date,time>   Hora de inicio del escenario AAAA/MM/DD,hh:mm:ss
  -T <date,time>   Sobrescribir TOC y TOE a la hora de inicio del escenario
  -d <duration>    Duración [seg] (modo dinámico máx: 300 modo estático máx: 86400)
  -o <output>      Archivo de datos de muestreo I/Q (predeterminado: gpssim.bin ; use - para stdout)
  -s <frequency>   Frecuencia de muestreo [Hz] (predeterminado: 2600000)
  -b <iq_bits>     Formato de datos I/Q [1/8/16] (predeterminado: 16)
  -i               Deshabilitar el retardo ionosférico para el escenario de nave espacial
  -p [fixed_gain]  Deshabilitar la pérdida de trayectoria y mantener el nivel de potencia constante
  -v               Mostrar detalles sobre los canales simulados

El movimiento del usuario se puede especificar en modo dinámico o estático:

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

Transmisión de las muestras

El puerto TX de una plataforma SDR específica se conecta al receptor GPS bajo prueba a través de un bloque de CC y un atenuador fijo de 50-60dB.

BladeRF:

El archivo de señal GPS simulado, llamado "gpssim.bin", se puede cargar en el bladeRF para su reproducción como se muestra a continuación:

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

También puede ejecutar estos comandos mediante la opción de script bladeRF-cli de la siguiente manera:

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

HackRF:

Los datos de salida deben ser muestras I/Q con signo de 8 bits.

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

Puede usar la herramienta hackrf_transfer en el software host de HackRF.

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

Dispositivos compatibles con UHD (probado solo con USRP2):

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

También puede usar la herramienta tx_samples_from_file incluida en los ejemplos de UHD:

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

LimeSDR (en caso de archivo de 1 Msps 1 bit, para obtener dinámica de banda base completa y baja potencia RF):

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

ADALM-Pluto (PlutoSDR):

Se espera que el dispositivo ADALM-Pluto tenga su interfaz de red activa y funcionando, y sea accesible a través de "pluto.local" por defecto.

Configuración predeterminada:

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

Establecer atenuación TX:

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

Predeterminado -20.0dB. Rango aplicable de 0.0dB a -80.0dB en pasos de 0.25dB.

Establecer ancho de banda RF:

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

Predeterminado 3.0MHz. Rango aplicable de 1.0MHz a 5.0MHz.

Licencia

Copyright © 2015-2025 Takuji Ebinuma
Distribuido bajo la Licencia MIT.

Descargar herramienta