Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
gps-sdr-sim — Software-Defined GPS Signal Simulator | Kitploit
工具/GitHubGitHub/osqzss/gps-sdr-sim
Embedded Systems SecurityWireless SecurityPenetration TestingHardware & IoT SecurityArchived
GitHubosqzss/gps-sdr-sim

gps-sdr-sim

Software-Defined GPS Signal Simulator

查看仓库
3.5k9721年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

GPS-SDR-SIM

GPS-SDR-SIM 生成 GPS 基带信号数据流,这些数据流可以使用软件定义无线电(SDR)平台转换为射频信号,例如 ADALM-Pluto、bladeRF、HackRF 和 USRP。

Windows 构建说明

  1. 启动 Visual Studio。
  2. 创建一个空的控制台应用程序项目。
  3. 在右侧的解决方案资源管理器中,将 "gpssim.c" 和 "getopt.c" 添加到源文件文件夹。
  4. 在解决方案配置下拉列表中选择 "Release"。
  5. 生成解决方案。

使用 GCC 构建

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

使用更大的用户运动文件

为了使用包含超过 30000 个样本(10Hz)的用户运动文件,可以将 USER_MOTION_SIZE 变量设置为用户运动文件的最大时间(秒)。建议使用 make 进行此操作,这样 gps-sdr-bin 可以在需要时更新大小。例如:

root@kitploit:~
$ make USER_MOTION_SIZE=4000

在直接使用 GCC 编译时也可以设置此变量:

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

生成 GPS 信号文件

用户定义的轨迹可以在 CSV 文件(包含地心地固(ECEF)用户位置)或 NMEA GGA 流中指定。用户运动的采样率必须为 10Hz。用户也可以通过命令行直接指定静态位置。

用户通过 GPS 广播星历文件指定 GPS 卫星星座。每日的 GPS 广播星历文件(brdc)是各个站点导航文件的合并。每日文件的归档可以从以下地址下载:https://cddis.nasa.gov/archive/gnss/data/daily/。访问此网站需要注册,注册是免费的。

这些文件随后用于生成视距内 GPS 卫星的模拟伪距和多普勒。这个模拟的距离数据随后用于生成 GPS 信号的数字化 I/Q 采样。

bladeRF 和 ADALM-Pluto 命令行界面要求 I/Q 对存储为有符号 16 位整数,而 hackrf_transfer 和 gps-sdr-sim-uhd.py 支持有符号字节。

HackRF、bladeRF 和 ADALM-Pluto 可以接受默认的 2.6MHz 采样率,而 USRP2 要求 100 MHz 的偶数积分抽取器,即 2.5MHz。

如果存在相应的星历集合,则可以指定模拟开始时间。否则,将选择 RINEX 导航文件中的第一个星历时间。

最大模拟持续时间由 USER_MOTION_SIZE 定义,以防止输出文件过大。

可以使用 "-b 1" 选项减少输出文件大小,将四个 1 位 I/Q 样本存储到一个字节中。 您可以使用 bladeplayer 在 bladeRF 上回放压缩文件。

root@kitploit:~
Usage: gps-sdr-sim [options]
Options:
  -e <gps_nav>     RINEX 导航文件,用于 GPS 星历(必需)
  -u <user_motion> 用户运动文件,ECEF x、y、z 格式(动态模式)
  -x <user_motion> 用户运动文件,纬度、经度、高度格式(动态模式)
  -g <nmea_gga>    NMEA GGA 流(动态模式)
  -c <location>    ECEF X、Y、Z(米)(静态模式)例如 3967283.15,1022538.18,4872414.48
  -l <location>    纬度、经度、高度(静态模式)例如 30.286502,120.032669,100
  -L <wnslf,dn,dtslf> 用户闰秒未来事件,GPS 周数、天数、下一个闰秒 例如 2347,3,19
  -t <date,time>   场景开始时间 YYYY/MM/DD,hh:mm:ss
  -T <date,time>   将 TOC 和 TOE 覆盖为场景开始时间
  -d <duration>    持续时间 [秒](动态模式最大:300 静态模式最大:86400)
  -o <output>      I/Q 采样数据文件(默认:gpssim.bin;使用 - 表示 stdout)
  -s <frequency>   采样频率 [Hz](默认:2600000)
  -b <iq_bits>     I/Q 数据格式 [1/8/16](默认:16)
  -i               禁用航天器场景的电离层延迟
  -p [fixed_gain]  禁用路径损耗并将功率电平保持恒定
  -v               显示模拟通道的详细信息

用户运动可以在动态或静态模式下指定:

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

传输采样

特定 SDR 平台的 TX 端口通过直流阻断器和固定 50-60dB 衰减器连接到被测 GPS 接收机。

BladeRF:

模拟的 GPS 信号文件(名为 "gpssim.bin")可以加载到 bladeRF 中进行回放,如下所示:

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

您也可以通过 bladeRF-cli 脚本选项执行这些命令,如下所示:

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

HackRF:

输出数据必须为 8 位有符号 I/Q 采样。

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

您可以使用 HackRF 主机软件中的 hackrf_transfer 工具。

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

UHD 支持的设备(仅用 USRP2 测试过):

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

您也可以使用 UHD 示例中附带的 tx_samples_from_file 工具:

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

LimeSDR(如果使用 1 Msps 1 位文件,以获得完整的基带动态范围和低射频功率):

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

ADALM-Pluto (PlutoSDR):

ADALM-Pluto 设备应具有正常运行的网络接口,并且默认可通过 "pluto.local" 访问。

默认设置:

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

设置 TX 衰减:

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

默认 -20.0dB。适用范围 0.0dB 至 -80.0dB,步进 0.25dB。

设置 RF 带宽:

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

默认 3.0MHz。适用范围 1.0MHz 至 5.0MHz。

许可协议

版权所有 © 2015-2025 Takuji Ebinuma
根据 MIT 许可证 发布。

下载工具