Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
gps-sdr-sim — Simulador de Sinal GPS Definido por Software | Kitploit
Ferramentas/GitHubGitHub/osqzss/gps-sdr-sim
Segurança de Sistemas EmbarcadosSegurança Sem FioTestes de PenetraçãoSegurança de Hardware e IoTArchived
GitHubosqzss/gps-sdr-sim

gps-sdr-sim

Simulador de Sinal GPS Definido por Software

Ver Repositório
3.5k972há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

GPS-SDR-SIM

O GPS-SDR-SIM gera fluxos de dados de sinal de banda base GPS, que podem ser convertidos em RF usando plataformas de rádio definido por software (SDR), como ADALM-Pluto, bladeRF, HackRF, e USRP.

Instruções de compilação no Windows

  1. Inicie o Visual Studio.
  2. Crie um projeto vazio para uma aplicação de console.
  3. No Solution Explorer à direita, adicione "gpssim.c" e "getopt.c" à pasta Souce Files.
  4. Selecione "Release" na lista suspensa Solution Configurations.
  5. Compile a solução.

Compilando com GCC

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

Usando arquivos de movimento de usuário maiores

Para usar arquivos de movimento de usuário com mais de 30000 amostras (a 10Hz), a variável USER_MOTION_SIZE pode ser definida para o tempo máximo do arquivo de movimento de usuário em segundos. É aconselhável fazer isso usando make para que o gps-sdr-bin possa atualizar o tamanho quando necessário. Ex.:

root@kitploit:~
$ make USER_MOTION_SIZE=4000

Esta variável também pode ser definida ao compilar diretamente com GCC:

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

Gerando o arquivo de sinal GPS

Uma trajetória definida pelo usuário pode ser especificada em um arquivo CSV, que contém as posições do usuário em coordenadas centradas na Terra e fixas (ECEF), ou em um fluxo NMEA GGA. A taxa de amostragem do movimento do usuário deve ser de 10Hz. O usuário também pode atribuir uma localização estática diretamente pela linha de comando.

O usuário especifica a constelação de satélites GPS através de um arquivo de efemérides de transmissão GPS. O arquivo diário de efemérides de transmissão GPS (brdc) é uma mesclagem dos arquivos de navegação individuais dos sites em um único arquivo. O arquivo diário pode ser baixado de: https://cddis.nasa.gov/archive/gnss/data/daily/. O acesso a este site requer registro, que é gratuito.

Esses arquivos são então usados para gerar o pseudorange e o Doppler simulados para os satélites GPS visíveis. Esses dados de alcance simulados são então usados para gerar as amostras I/Q digitalizadas para o sinal GPS.

A interface de linha de comando do bladeRF e ADALM-Pluto requer pares I/Q armazenados como inteiros com sinal de 16 bits, enquanto o hackrf_transfer e gps-sdr-sim-uhd.py suportam bytes com sinal.

HackRF, bladeRF e ADALM-Pluto podem aceitar a taxa de amostragem padrão de 2.6MHz, enquanto o USRP2 requer um decimador inteiro par de 100 MHz, ou seja, 2.5MHz.

O horário de início da simulação pode ser especificado se o conjunto correspondente de efemérides estiver disponível. Caso contrário, o primeiro horário de efeméride no arquivo de navegação RINEX é selecionado.

O tempo máximo de duração da simulação é definido por USER_MOTION_SIZE para evitar que o arquivo de saída fique muito grande.

O tamanho do arquivo de saída pode ser reduzido usando a opção '-b 1' para armazenar quatro amostras I/Q de 1 bit em um único byte. Você pode usar o bladeplayer para bladeRF para reproduzir o arquivo compactado.

root@kitploit:~
Usage: gps-sdr-sim [options]
Options:
  -e <gps_nav>     RINEX navigation file for GPS ephemerides (required)
  -u <user_motion> User motion file in ECEF x, y, z format (dynamic mode)
  -x <user_motion> User motion file in lat, lon, height format (dynamic mode)
  -g <nmea_gga>    NMEA GGA stream (dynamic mode)
  -c <location>    ECEF X,Y,Z in meters (static mode) e.g. 3967283.15,1022538.18,4872414.48
  -l <location>    Lat,Lon,Hgt (static mode) e.g. 30.286502,120.032669,100
  -L <wnslf,dn,dtslf> User leap future event in GPS week number, day number, next leap second e.g. 2347,3,19
  -t <date,time>   Scenario start time YYYY/MM/DD,hh:mm:ss
  -T <date,time>   Overwrite TOC and TOE to scenario start time
  -d <duration>    Duration [sec] (dynamic mode max: 300 static mode max: 86400)
  -o <output>      I/Q sampling data file (default: gpssim.bin ; use - for stdout)
  -s <frequency>   Sampling frequency [Hz] (default: 2600000)
  -b <iq_bits>     I/Q data format [1/8/16] (default: 16)
  -i               Disable ionospheric delay for spacecraft scenario
  -p [fixed_gain]  Disable path loss and hold power level constant
  -v               Show details about simulated channels

O movimento do usuário pode ser especificado no modo dinâmico ou 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

Transmitindo as amostras

A porta TX de uma plataforma SDR específica é conectada ao receptor GPS em teste através de um bloqueio DC e um atenuador fixo de 50-60dB.

BladeRF:

O arquivo de sinal GPS simulado, chamado 'gpssim.bin', pode ser carregado no bladeRF para reprodução conforme mostrado abaixo:

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

Você também pode executar esses comandos através da opção de script bladeRF-cli como abaixo:

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

HackRF:

Os dados de saída devem ser amostras I/Q com sinal de 8 bits.

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

Você pode usar a ferramenta hackrf_transfer no software host do HackRF.

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

Dispositivos suportados pelo UHD (testado apenas com USRP2):

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

Você também pode usar a ferramenta tx_samples_from_file incluída nos exemplos do UHD:

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

LimeSDR (no caso de arquivo de 1 Msps e 1 bit, para obter dinâmica total da banda base e baixa potência de RF):

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

ADALM-Pluto (PlutoSDR):

Espera-se que o dispositivo ADALM-Pluto tenha sua interface de rede ativa e operacional e seja acessível via 'pluto.local' por padrão.

Configurações padrão:

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

Definir atenuação TX:

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

Padrão -20.0dB. Faixa aplicável de 0.0dB a -80.0dB em passos de 0.25dB.

Definir largura de banda RF:

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

Padrão 3.0MHz. Faixa aplicável de 1.0MHz a 5.0MHz.

Licença

Copyright © 2015-2025 Takuji Ebinuma
Distribuído sob a Licença MIT.

Baixar ferramenta