狗汪汪玩转无线电——GPS Hacking
字数 1565 2025-08-22 18:37:22

GPS信号伪造技术详解

0x00 前言

GPS信号伪造技术在过去几年已成为安全研究的热点领域。随着开源工具如GPS-SDR-SIM的出现,这项技术变得更加平民化。本文将详细介绍如何使用软件定义无线电(SDR)设备伪造GPS信号,包括硬件选择、软件配置和实际应用案例。

0x01 硬件准备

SDR设备选择

设备 价格范围 收发能力 采样率 备注
USRP \(700-\)3000 收发 最高64MS/s 专业级,价格高
BladeRF \(420-\)650 全双工 40MS/s 性价比高
HackRF $300 半双工 20MS/s 入门级
RTL-SDR $20 仅接收 3.2MS/s 无法用于发射

推荐选择:BladeRF或HackRF,因其支持信号发射且价格适中。

0x02 软件环境搭建

BladeRF环境配置(Ubuntu 14.04.3)

  1. 添加PPA并安装基础工具:
sudo add-apt-repository ppa:bladerf/bladerf
sudo apt-get update
sudo apt-get install bladerf
  1. 安装开发头文件:
sudo apt-get install libbladerf-dev
  1. 安装固件和FPGA镜像:
sudo apt-get install bladerf-firmware-fx3
sudo apt-get install bladerf-fpga-hostedx40
  1. 验证安装:
bladeRF-cli -p

成功时应显示设备信息。

GPS-SDR-SIM安装

  1. 克隆并编译项目:
git clone https://github.com/osqzss/gps-sdr-sim.git
cd gps-sdr-sim
gcc gpssim.c -lm -O3 -o gps-sdr-sim
  1. 生成GPS信号样本:
./gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100 -b 16

参数说明:

  • -e: 星历文件
  • -l: 经纬度和高度(格式:纬度,经度,高度)
  • -b: I/Q数据位数(16或8)

0x03 技术细节

GPS信号组成

  1. 伪随机码(Pseudorandom code): 用于识别每颗卫星的唯一ID
  2. 星历数据(Ephemeris data): 包含卫星运行状态和时间信息,对定位至关重要
  3. 历书数据(Almanac data): 包含卫星轨道信息和位置预测

信号频率

  • 民用L1频段: 1575.42MHz (未加密)
  • 军用L2频段: 1227.60MHz (加密)

运行时间限制解决方案

默认情况下,GPS-SDR-SIM只能连续工作约5分钟。可通过修改源代码中的USER_MOTION_SIZE参数(默认3000,约300秒)来延长工作时间。

0x04 实战案例

案例1: 伪造微信"附近的人"位置

  1. 选择目标位置(如海南三亚)
  2. 生成对应GPS信号:
./gps-sdr-sim -e brdc3540.14n -l 18.252847,109.511909,100 -b 16
  1. 通过BladeRF发射信号
  2. 约5分钟后,微信"附近的人"将显示目标位置的用户

案例2: Nike+计步器作弊

  1. 准备运动轨迹文件(circle.csv)
  2. 生成动态GPS信号:
./gps-sdr-sim -e brdc3540.14n -u circle.csv -b 16
  1. 发射信号后,Nike+应用将记录虚假运动轨迹

案例3: 信号范围测试

在无障碍物的室内环境中,有效欺骗距离可达25米。实际效果取决于:

  • 发射功率
  • 天线增益
  • 环境干扰

0x05 防御措施

  1. 使用多系统定位(GPS+GLONASS+北斗)
  2. 检测信号强度(真实GPS信号非常微弱)
  3. 检查卫星几何分布(伪造信号通常来自同一方向)
  4. 使用加密的军用GPS信号(L2频段)

0x06 扩展阅读

  1. GPS-SDR-SIM项目主页
  2. 王康在黑帽大会的演讲《Time and Position Spoofing with Open Source Projects》
  3. 蒸米的文章《利用Android Hook进行微信运动作弊》
  4. lxj616的《劫持GPS定位&劫持WIFI定位》

0x07 法律声明

GPS信号伪造可能违反当地法律。本文仅用于教育目的,请确保在合法授权的环境下进行测试。未经授权对他人设备进行GPS欺骗可能构成违法行为。

GPS信号伪造技术详解 0x00 前言 GPS信号伪造技术在过去几年已成为安全研究的热点领域。随着开源工具如GPS-SDR-SIM的出现,这项技术变得更加平民化。本文将详细介绍如何使用软件定义无线电(SDR)设备伪造GPS信号,包括硬件选择、软件配置和实际应用案例。 0x01 硬件准备 SDR设备选择 | 设备 | 价格范围 | 收发能力 | 采样率 | 备注 | |------------|------------|----------|-----------|----------------| | USRP | $700-$3000 | 收发 | 最高64MS/s| 专业级,价格高 | | BladeRF | $420-$650 | 全双工 | 40MS/s | 性价比高 | | HackRF | $300 | 半双工 | 20MS/s | 入门级 | | RTL-SDR | $20 | 仅接收 | 3.2MS/s | 无法用于发射 | 推荐选择 :BladeRF或HackRF,因其支持信号发射且价格适中。 0x02 软件环境搭建 BladeRF环境配置(Ubuntu 14.04.3) 添加PPA并安装基础工具: 安装开发头文件: 安装固件和FPGA镜像: 验证安装: 成功时应显示设备信息。 GPS-SDR-SIM安装 克隆并编译项目: 生成GPS信号样本: 参数说明: -e : 星历文件 -l : 经纬度和高度(格式:纬度,经度,高度) -b : I/Q数据位数(16或8) 0x03 技术细节 GPS信号组成 伪随机码(Pseudorandom code) : 用于识别每颗卫星的唯一ID 星历数据(Ephemeris data) : 包含卫星运行状态和时间信息,对定位至关重要 历书数据(Almanac data) : 包含卫星轨道信息和位置预测 信号频率 民用L1频段: 1575.42MHz (未加密) 军用L2频段: 1227.60MHz (加密) 运行时间限制解决方案 默认情况下,GPS-SDR-SIM只能连续工作约5分钟。可通过修改源代码中的 USER_MOTION_SIZE 参数(默认3000,约300秒)来延长工作时间。 0x04 实战案例 案例1: 伪造微信"附近的人"位置 选择目标位置(如海南三亚) 生成对应GPS信号: 通过BladeRF发射信号 约5分钟后,微信"附近的人"将显示目标位置的用户 案例2: Nike+计步器作弊 准备运动轨迹文件(circle.csv) 生成动态GPS信号: 发射信号后,Nike+应用将记录虚假运动轨迹 案例3: 信号范围测试 在无障碍物的室内环境中,有效欺骗距离可达25米。实际效果取决于: 发射功率 天线增益 环境干扰 0x05 防御措施 使用多系统定位(GPS+GLONASS+北斗) 检测信号强度(真实GPS信号非常微弱) 检查卫星几何分布(伪造信号通常来自同一方向) 使用加密的军用GPS信号(L2频段) 0x06 扩展阅读 GPS-SDR-SIM项目主页 王康在黑帽大会的演讲《Time and Position Spoofing with Open Source Projects》 蒸米的文章《利用Android Hook进行微信运动作弊》 lxj616的《劫持GPS定位&劫持WIFI定位》 0x07 法律声明 GPS信号伪造可能违反当地法律。本文仅用于教育目的,请确保在合法授权的环境下进行测试。未经授权对他人设备进行GPS欺骗可能构成违法行为。