HackRF模拟GPS信号
2024.04.05
科普 技术 教学 HackRF
最近(其实在写这篇文章的时候已经很远了)购买了一台HackRF,初步的设想是拿来模拟跑校园跑和整一些其他有趣的小玩意,本文就记录一下模拟GPS信号来实现模拟校园跑主要的几个步骤。
KML路径文件
KML文件(Keyhole Markup Language)是一种基于XML的文件格式,用于表示和存储地理空间数据。它最初由Google的Keyhole公司开发,现已成为开放地理空间联盟(OGC)认可的国际标准。KML文件主要用于在地理信息系统(GIS)和地图应用程序中展示地理数据,例如Google Earth和Google Maps。
生成KML文件
模拟路径肯定要先有一个路径,可以使用Google Map在地图上选择路径,生成一个KML文件即可。
NMEA文件
NMEA文件是由美国国家海洋电子协会(National Marine Electronics Association, NMEA)制定的一种标准数据格式,主要用于在GPS设备和其他导航设备之间传输信息,在进行GPS信号模拟时,NMEA文件由刚刚生成的KML文件调整并转换而来。
NMEA文件中的数据以特定格式组织,通常以字符$
开头,后面跟随一个标识符(如GGA、RMC等),然后是用逗号分隔的数据字段,最后以回车换行符结束。每条记录的格式大致如下:
|
|
生成NMEA文件
要想将刚刚的KML文件转换为NMEA文件,可以使用SatGenNMEA这个软件进行转换,在这个软件中可以调整一些参数来使得你的GPS轨迹更符合常识。例如最大速度、最大加速度等参数,通过调整这些,可以使得模拟校园跑的速度更加科学和符合实际。
GPS导航电文
在模拟 GPS 定位的过程中,GPS 导航电文(也称星历数据)起着关键作用。导航电文包含了卫星的轨道参数、时间信息和系统状态等数据,用于计算每颗卫星的位置和信号传输时间。在模拟过程中,获取准确的导航电文是生成有效 GPS 信号的基础。
从NASA获取导航电文
访问CDDIS网页,通过账号登录即可访问从1992年至今的导航电文数据。
一级一级找到目标日期的导航电文,下载以n.gz
结尾的压缩包,解压即可。
gps-sdr-sim
通过将导航电文与预设的运动轨迹相结合,使用开源工具如 gps-sdr-sim,可以生成模拟的 GPS 信号数据。
手动编译项目
按照GitHub上项目的README介绍,可以直接使用GCC进行编译:
|
|
在使用上述指令不带有其他参数进行编译时,编译出的程序能生成最长300秒的动态信号文件。如果想生成更长时间的GPS模拟信号,可以在编译时修改USER_MOTION_SIZE
参数(默认为3000,即300s×10Hz,下面的示例4000为400秒)。
|
|
使用项目生成文件
编译好了gps-sdr-sim项目之后,即可用其生成最终的.C8文件,其中gps-sdr-sim有如下参数:
|
|
其中我一般使用的指令为:
|
|
将生成的C8文件拷贝至HackRF,即可开始模拟GPS信号。
HackRF和人只要有一个能跑起来就可以了
参考文章
能够实现GPS定位的模拟,并写出这篇文章,离不开网络上的一些参考,我使用到的参考文章如下:
- [1] HackRF-one模拟GPS信号,实现定位欺骗 - [2] 无线电安全攻防之GPS定位劫持 - [3] HackRF GPS 欺骗笔记 - [4] 利用Hackrf One进行GPS定位欺骗制作超级跑马机