伪造GPS信号多种方式尝试-HackRF

请在法律允许范围内复现本文内容, 复现后果作者不予承担

硬件平台

  • HackRFOne, 外部TCXO时钟模块, 40MHz-6GHz 拉杆天线

静态模拟

  • 使用项目

    • gps-sdr-sim-GPS信号仿真器

Clone 项目, 然后编译

bash 复制代码
git clone https://github.com/osqzss/gps-sdr-sim
cd gps-sdr-sim
gcc gpssim.c -lm -O3 -o gps-sdr-sim

HackRFOne 配置

  • HackRFOne 安装好外部TCXO时钟模块

    • 判断是否安装正确

      sh 复制代码
      hackrf_debug --si5351c -n 0 -r 
      • 如果输出 [ 0] -> 0x01

使用 gps-sdr-sim 生成二进制GPS数据

bash 复制代码
./gps-sdr-sim -e [GPS 星历文件] -l [坐标] -b [二进制数据类型] -o [输出文件, 默认为gpssim.bin]
  • -e GPS星历文件路径

    • 可以直接使用项目自带的星历, 也可以最新的广播星历
  • -l 经纬度坐标

    • 纬度, 经度, 高度
  • -b 二进制数据类型

    • 使用 HackRF 的话就填写 8

    • 使用 bladeRF 的话, 就填写 16

  • 比如

    bash 复制代码
    gps-sdr-sim -e brdc1660.25n -l 39.91232019878092,116.3910017124552,46 -b 8 -o gpssim.bin
  • 然后就会生成一个 gpssim.bin 文件

使用 HackRFOne 发射 GPS 信号

bash 复制代码
hackrf_transfer -t [GPS信号文件, 即gpssim.bin] -f [中心频率] -s [采样率] -a [是否开启功放] -x [发射功率] -R
  • -t GPS信号文件

    • 使用之前生成的 gpssim.bin 文件
  • -f 中心频率, 单位 Hz

    • 指定频率为 1575420000 即民用GPS L1波段频率
  • -s 采样率, 单位 Hz, 4/8/10/12.5/16/20 MHz,默认 10 MHz

  • -a 设置功放 ( 1 表示开启, 0 表示关闭)

  • -x 指定发射功率, 开启天线增益

    • 指定TX VGA(IF)为0、10、20不等(为了限制影响范围, 最大为47, 尽量不要使用)
  • -R 重复发送模式(默认为关闭)

    • 不过值得注意的是, 虽然是重复发送, 但是只做不到连贯的, 结束一轮后会断开信号, 然后再重新发送
  • 比如

    bash 复制代码
    hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 20 -R

动态模拟

使用 Google Earth 绘制路径

注意

  • Google Earth Pro 查看国内地图会存在火星偏移,即卫星图与显示地名、街道信息不对应, 应该以卫星图为准

  • 绘制好路径后, 选择导出为 kml文件
    • 这个时候, 文件中只有路径每个点的信息

kml文件 转为 NMEA文件

  • 这里需要使用 SatGen, 把谷歌地图生成的 kml文件 导入进去, 然后再进行导出为 NMEA文件

修改 gps-sdr-sim-GPS 的修改动态模式时间上限并编译

bash 复制代码
gcc gpssim.c -lm -O3 -o gps-sdr-sim -DUSER_MOTION_SIZE=3600
  • USER_MOTION_SIZE 单位是 秒(s)

生成 GPS 信号模拟文件

bash 复制代码
gps-sdr-sim -e [星历文件] -g [NMEA文件] -b 8

使用 HackRF 发射伪造 GPS 信号

bash 复制代码
hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 20 -R
  • 参数跟静态的是一样的

实时动态伪造

使用项目

搭建实时发射平台

  • 使用软件 GNURadio, 我这里使用的是3.10版本(或许你需要一点使用 GNURadio 的基础)

  • 如果使用低版本, 直接使用上述项目中的 tcp.grc 就可以了

  • 但是如果跟我一样使用较新的版本, 这需要把原本接收 IQ数据 的模块, 调换为新版的 TCP Source

    • 配置如图

  • 整体上看是这样的, 挺简单的

搭建实时获取位置平台

搭建 GPS-SDR-SIM

  • 上面我们只是搭建了发射信号和获取位置的平台, 但是位置要转为发射的IQ数据, 这就需要 GPS-SDR-SIM

  • 先编译 GPS-SDR-SIM

    bash 复制代码
    gcc gpssim.c -lm -O3 -o gps-sdr-sim -DUSER_MOTION_SIZE=3600
    • 同样需要修改 USER_MOTION_SIZE, 来增长模拟时间
  • 然后就是启动 GPS-SDR-SIM

    bash 复制代码
    ./gps-sdr-sim -e brdc1660.25n -w 5678 -n 1234
    • -e 对应着 星历

    • -w 对应着 搭建实时获取位置平台 发送数据的端口

    • -n 对应着 GNURadio 监听IQ数据的端口


  • 完事具备, 把三个服务都启动了, 就可以实时伪造GPS信号了, 不过欺骗还是需要等待 30s 左右, 而且延迟有 2-3s

如果出现超链接无法正确跳转或格式错误, 请前往原文链接查看

相关推荐
大方子10 小时前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha11 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络12 小时前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd14 小时前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你18 小时前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha2 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
liann1192 天前
3.1_网络——基础
网络·安全·web安全·http·网络安全
ESBK20252 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
旺仔Sec2 天前
一文带你看懂免费开源 WAF 天花板!雷池 (SafeLine) 部署与实战全解析
web安全·网络安全·开源·waf
七牛云行业应用2 天前
Moltbook一夜崩盘:150万密钥泄露背后的架构“死穴”与重构实战
网络安全·postgresql·架构·高并发·七牛云