一. 需要硬件设备
l HackRF
l HackRF 连接数据线
l 外部时钟模块(TCXO 时钟模块)
l 天线(淘宝套餐中的 700MHz-2700MHz 吸盘天线)
图1,天线实物图
二. 需要软件应用
l hackrf-tools
l [Google Earth Pro](https://www.google.com/earth/versions/#earth-pro)
l [gps-sdr-sim](https://github.com/osqzss/gps-sdr-sim)
l [SatGen Trajectory Generation](https://files.cnblogs.com/files/k1two2/SatGenNMEAFree.zip)
三. 操作流程概述
1. 用 Google Earth Pro 制作运动轨迹坐标 kml 文件
2. 前往 NASA 官网下载 GPS 导航电文
3. 用 gps-sdr-sim 将 GPS 导航电文和运动轨迹坐标 kml 文件生成采样文件
4. hackrf_transfer 发射 GPS 欺骗信号
四. 运动轨迹坐标文件
Google Earth Pro 查看国内地图会存在火星偏移,即卫星图与显示地名、街道信息不对应,以卫星图为准!
启动 Google Earth Pro ,寻找需要模拟地点,点击添加路径:
图2,Google Earth Pro演示图1
用鼠标点击图上勾画出路径:
图3,模拟轨迹图
绘图完成并保存后,在位置可以找到保存的路径,右键将位置另存为导出kml文件:
图4,Google Earth Pro演示图2
kml文件内容展示:
图5,kml文件内容
五. NMEA文件
NMEA 是 GPS 导航设备统一的 RTCM 标准协议,包含坐标、海拔、时间轨迹。将运动轨迹坐标 kml 文件导入 SatGen ,就会自动加载 kml 路径。
图6,SatGen软件截图
5.1 调参拟合
调整参数将速度轨迹向真实情况进行拟合,SatGen 会模拟真实运动情况,如:拐弯减速、起步&结束停留……
|
点击 `Generate NMEA file` ,即可生成标准的 NMEA 轨迹文件
图7,NMEA文件内容
GPGGA 格式,其内容定义如下:
图8,GPGGA格式定义
5.2 绕圈轨迹制作
要制作绕圈跑的 NMEA 轨迹只需要画一圈,将 NMEA 文件内容复制粘贴即可:
|
六. GPS导航电文
GPS 卫星发送的导航电文是每秒50位的连续的数据流,每颗卫星都同时向地面发送以下信息:系统时间、时钟校正值、自身精确的轨道数据、其他卫星的近似轨道信息、电离层模型参数和世界协调时(UTC)数据等系统状态信息。
导航电文用于计算卫星当前的位置和信号传输的时间,从而使 GPS 接收机在接收导航电文后能确定自身的位置。
各个接收机厂商普遍采用统一的 RINEX 格式,RINEX 本质上是文本文件,RINEX 文件遵循标准的[命名规则](https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/RINEX_Version_3.html),具体如下图所示:
图9,RINEX格式定义
6.1 获取GPS导航电文
可以在NASA官网上获取 RINEX 格式的GPS导航电文,原 [ftp](ftp://cddis.gsfc.nasa.gov/pub/gps/data/daily) 地址在 2020 年 10 月由于安全原因停止使用,现在下载地址:https://cddis.nasa.gov/archive/gnss/data/daily/ 。
武汉大学IGS数据中心也可以下载广播星历,数据延迟一天。http://www.igs.gnsswhu.cn/index.php/home/data_product/igs.html
图10,GPS导航电文1
打开选择最新的年份,然后滑到最底部的 brdc ,点开找最新的导航电文(`n.gz` 结尾):
图11,GPS导航电文2
6.2 GPS导航电文定义
解压后可以用文本编辑器打开,导航电文文件结果如图所示:
图12,导航电文文件定义
七. 生成采样文件
利用 [gps-sdr-sim](https://github.com/osqzss/gps-sdr-sim) 配合 GPS 导航电文和 NMEA 文件生成 HackRF 发射信号需要的采样文件。
git clone https://github.com/osqzss/gps-sdr-sim.git |
7.1 修改动态模式时间上限
gps-sdr-sim 默认动态模式最大只能生成 300s ;静态模式 86400s (10Hz)。结合实际情况修改 `gpssim.h` 的`USER_MOTION_SIZE` 实现自定义时间上限。
将 `USER_MOTION_SIZE` 调得比 NMEA 轨迹总耗时长 30s 以上。HackRF 开始发出信号,到手机 GPS 被欺骗需要一定时间(30s左右),所以时间上限比时间时间多加 30s ,让定位稳定被欺骗,以防在模拟定位与真实定位之间跳变。
最终运行作用时长取决于较短的那个时间。假如轨迹总耗时 400s ,`USER_MOTION_SIZE` 定义动态模拟时间上限 300s ,最终运行 300s 。
|
7.2 编译gps-sdr-sim
|
7.3 生成采样文件
|
八. 发射GPS欺骗信号
8.1 hackrf-tools 安装
Mac brew 直接安装:
brew install hackrf |
连接上 hackrf 之后,`hackrf_info` 查看连接是否成功:
图12,hackrf连接测试
8.2 安装外部TCXO(时钟晶振)
图13,时钟晶振
安装 TCXO 后,使用` hackrf_debug -–si5351c -n 0 -r`检查 TCXO 是否被识别和使用。输出` [0] -> 0x01`表示使用 TCXO,而` [0] -> 0x51`表示不使用 TCXO。
8.3 发射信号
|
原文始发于微信公众号(山石网科安全技术研究院):无线电安全攻防之GPS定位劫持
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论