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

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

相关推荐
墨染 殇雪7 小时前
文件上传漏洞基础及挖掘流程
网络安全·漏洞分析·漏洞挖掘·安全机制
网络安全大学堂7 小时前
【网络安全入门基础教程】网络安全零基础学习方向及需要掌握的技能
网络·学习·安全·web安全·网络安全·黑客
君君思密达10 小时前
网络安全初级-渗透测试
安全·网络安全
网安INF11 小时前
【论文阅读】-《Besting the Black-Box: Barrier Zones for Adversarial Example Defense》
人工智能·深度学习·网络安全·黑盒攻击
jz_ddk12 小时前
[科普] 卫星导航系统的授时原理与精度分析
gps·北斗·卫星导航·授时同步
lingggggaaaa19 小时前
小迪安全v2023学习笔记(七十七讲)—— 业务设计篇&隐私合规检测&重定向漏洞&资源拒绝服务
笔记·学习·安全·web安全·网络安全
Suckerbin20 小时前
Corrosion: 1靶场渗透
笔记·安全·网络安全
Whoami!20 小时前
⸢ 肆 ⸥ ⤳ 默认安全:安全建设方案 ➭ b.安全资产建设
网络安全·信息安全·安全架构·安全资产
Bruce_Liuxiaowei20 小时前
基于BeEF的XSS钓鱼攻击与浏览器劫持实验
前端·网络安全·ctf·xss
汉堡包0011 天前
【网安干货】--计算机网络知识梳理总结(二)
计算机网络·安全·网络安全