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

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

相关推荐
777sea1 小时前
NSS-DAY17 2025SWPU-NSSCTF
网络安全·ctf
梦在深巷@14 小时前
sqli-libs通关教程(21-30)
数据库·网络安全
黑客思维者6 小时前
芯片后门安全分析与防御
安全·网络安全·芯片后面技术·a2攻击·后面检测
shandianchengzi9 小时前
【笔记】ROS1|5 ARP攻击Turtlebot3汉堡Burger并解析移动报文【旧文转载】
linux·运维·网络安全·机器人·arp·turtlebot
JQLvopkk15 小时前
2024年网络安全预防
网络安全
Bruce_Liuxiaowei15 小时前
融媒体中心网络安全应急预案(通用技术框架)
网络·web安全·网络安全·媒体
lingggggaaaa20 小时前
小迪安全v2023学习笔记(五十讲)—— 持续更新中
笔记·学习·安全·web安全·网络安全
学习溢出1 天前
【网络安全】日志文件格式
安全·网络安全·系统安全·日志分析·系统日志
周先森的怣忈1 天前
渗透高级-----应急响应
网络安全
Johny_Zhao2 天前
阿里云平台健康检查巡检清单-运维篇
linux·网络安全·阿里云·信息安全·云计算·shell·系统运维