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

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

相关推荐
见青..5 小时前
phpMyAdmin权限提升
web安全·网络安全·phpmyadmin
数据知道6 小时前
邮件安全实战:SPF/DKIM/DMARC 配置与钓鱼绕过
网络·安全·web安全·网络安全·邮件安全
世界尽头与你10 小时前
Android Root 检测原理
android·安全·网络安全·渗透测试
kp0000010 小时前
如何平衡模型输出的“有用性”和“安全性
人工智能·安全·网络安全·信息安全·ai安全
世界尽头与你12 小时前
iOS 越狱检测原理
安全·网络安全·ios·信息安全·渗透测试
kp000001 天前
大模型输出造成信息泄露类型
人工智能·网络安全·信息安全·ai安全
kp000001 天前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全
X7x51 天前
攻防对抗的结构化思维:深度拆解网络杀伤链(Kill Chain)与现代防御演进
网络安全·网络攻击模型·安全架构·网络杀伤链·kill chain
kp000001 天前
AI大模型,如何区分善意提问与Prompt注入攻击
人工智能·网络安全·信息安全·prompt·ai安全
kp000001 天前
AI系统输入安全基线
人工智能·安全·网络安全·信息安全·ai安全