伪造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

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

相关推荐
shenyan~12 小时前
关于 验证码系统 详解
网络安全
凉拌青瓜哈14 小时前
DVWA-LOW级-SQL手工注入漏洞测试(MySQL数据库)+sqlmap自动化注入-小白必看(超详细)
mysql·安全·网络安全
学习溢出18 小时前
【网络安全】理解安全事件的“三分法”流程:应对警报的第一道防线
网络·安全·web安全·网络安全·ids
安胜ANSCEN18 小时前
还在靠防火墙硬抗?网络安全需要从“单点防御“转向“系统化防护“!
网络安全·应急响应·威胁检测
浩浩测试一下1 天前
Windows 与 Linux 内核安全及 Metasploit/LinEnum 在渗透测试中的综合应用
linux·运维·windows·web安全·网络安全·系统安全·安全架构
周某人姓周2 天前
搭建渗透测试环境
网络安全·网络攻击模型
码农12138号2 天前
BUUCTF在线评测-练习场-WebCTF习题[GYCTF2020]Blacklist1-flag获取、解析
web安全·网络安全·ctf·sql注入·handler·buuctf
爱思德学术2 天前
CCF发布《计算领域高质量科技期刊分级目录(2025年版)》
大数据·网络安全·自动化·软件工程
小红卒2 天前
upload-labs靶场通关详解:第21关 数组绕过
web安全·网络安全·文件上传漏洞
kp000003 天前
GitHub信息收集
web安全·网络安全·信息收集