HackRF-one模拟GPS信号,实现定位欺骗
1.文章写在最前面
网上关于GPS模拟器的文章很多,笔者工作中也从事GNSS模拟器的设计工作,我们的模拟器可以实现GPS-L1、GPS-L2、BD-1、BD-2、BD-3、GLONASS-L1等频点的真实模拟,鉴于使用环境与要求的不同,很多人不想花费巨额资金购买一款功能如此强大的模拟。
两三年前我就了解过一款开源硬件,也听说其可以实现GPS模拟,由于“懒散”一直也没有怎么进一步研究,上个月偶然机会得到一款开源硬件HackRF one,于是本着“凡事必亲力亲为”的原则,按照网上教程一步步实验,其中发现了很多坑,于是整合如下文章,新手同学可以按步骤逐步实验。
2.实验环境及工具准备
1. 硬件平台---HackRF One、GPS外部时钟、天线
2. 软件环境---Ubuntu运行HackRF环境
3. GPS终端---华为荣耀V9手机、Ublox
4. 用到的软件
gps-sdr-sim;
hackrf-tools;
SatGen Trajectory Generation;
Google Earth;
Ubuntu环境搭建已经完成,可以参考安装步骤进行安装即可,稍后会将相关资源通过网盘分享
Ubuntu系统下载地址:
链接:https://pan.baidu.com/s/1ed0YX7azZA-LCEFX2TX2rg
提取码:tcy1
Ubuntu系统制作工具:
链接:https://pan.baidu.com/s/1LhuMFiNzfiNkiZeMWFU3GQ
提取码:0jld
Ubuntu系统安装说明:
链接:https://pan.baidu.com/s/1Hnam3iuNbJHZR2u95vRE5g
提取码:juun
笔者使用的是Lenovo Z500笔记本,安装了双系统,前段时间也尝试使用虚拟机,但是实在搞不定,无缘无故出现很多问题,所以暂时也就放弃了。
Win7下双系统安装教程:(Ubuntu最好采用全英文模式,否则会出现莫名错误)
https://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html
3.工作流程
3.1获取GPS导航电文
打开这个地址 ftp://cddis.gsfc.nasa.gov/pub/gps/data/daily,里面是多个以年份命名的文件夹
打开2018年这个文件夹(网速比较慢,打开时间比较长耐心等待),将网页拉至最下面,在里面的 brdc 子目录中,下载相应年积日对应的 GPS 导航电文文件,比如 2018 年 10 月 28 日的数据,文件名是brdc2990.18n.Z,下载然后解压缩,得到的 brdc2990.18n 就是导航电文文件。(此处需要注意不要下载brdc3000.18g.Z这个文件,笔者刚开始没有注意后缀名称,一直使用这个文件,导致定位不对)
3.2制作运动轨迹文件
首先启动 Google Earth,调整视野,寻找到驾校所在地区,然后寻找驾校的位置,让驾校的练习场地完全出现在视野中,然后点击工具栏上的添加路径:
在地图上,沿着你需要的场地,点击勾画出一个运动轨迹:(注意新建路径窗口不能关闭,否则不能创建轨迹,经验啊)
为路径起名,点击确定后,它就会出现在左侧的位置列表之中,在上面点击右键,选择”将位置另存为”,将之保存为 kml 文件。
我们把 kml 文件转换成 NMEA 格式,这里我们需要用到一个小工具,它由 LabSat 提供,是 SatGen 软件的一个极简免费版。
SatGen 软件下载地址:
链接:https://pan.baidu.com/s/1ywnhK0pox85htS3VN4DERA
将频率设置为 10hz,然后点击”Load KML file”,就会自动加载 kml 路径,然后点击”Generate NMEA file”,即可生成标准的 NMEA 轨迹文件,笔者将其保存成20181027-2.txt。
注意此软件会模拟真实的运动情况,比如拐弯会减速,起步和结束时会有停留,这些由横向加速度、纵向加速度、加加速度、最大速度、起步停留时间、结束停留时间这几个参数控制。
注意软件最下方有个仿真模拟时间问题,文章最后会有介绍。
3.3生成采样数据
利用上面得到的 GPS 导航电文和 NMEA 文件, 我们可以使用开源项目 gps-sdr-sim,生成一个采样数据文件,该文件会作为我们后面实际工作时的数据源。首先下载 gps-sdr-sim 的源码:
$ git clone https://github.com/osqzss/gps-sdr-sim.git
$ cd gps-sdr-sim
然后编译运行:
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim
最后按以下参数执行:
$./gps-sdr-sim -e <导航电文文件> -g <轨迹文件> -b 8
$./gps-sdr-sim –e <导航电文文件> -u <轨迹文件> -b 8
上面两条命令只需要其中一条,笔者模拟的是一个环形运动轨迹,所以才用的是第一条
格式如下:
$./gps-sdr-sim -e <导航电文文件> -g <轨迹文件> -b 8
笔者使用如下:
$./gps-sdr-sim -e brdc2990.18n -g 20181027-2.txt -b 8
如果不事先指定名称,默认在程序所在目录生成名为 gpssim.bin 的数据文件,随着仿真时间的长短,此文件会比较大,笔者仿真测试五分钟的仿真,居然有1.6G大小。(gps-sdr-sim文件夹内部)
为了更好的说明 gps-sdr-sim 各项参数的含义,可以参考如下说明。
4发射模拟GPS 信号.
使用 hackrf-tools 自带的 hackrf_transfer,执行如下命令:
注意以下命令是在gps-sdr-sim目录下执行,如果实在搞不懂,那就关闭命令窗口,然后从新进入gps-sdr-sim目录($ cd gps-sdr-sim)
执行命令如下:
$ hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 1 –R
命令最后“-R”表示命令执行一次后可以一直循环进行,此过程虽然自动重启,但是GPS信号是关闭从新启动,这里对于接收机来说是个问题
5实际效果展示
测试使用Ublox带的多功能串口调试助手,此工具需要在有网络的电脑上打开,目的是打开软件内部自带的地图,可以详细看到目标跟随GPS欺骗信号移动。
作者:maoduntage(微信同号)
来源:互联网
版权声明:本文由射频1988发布,如需转载请注明出处,本人微信号:maoduntage,手机号:18513199638,淘宝店铺名字:射频1988,淘宝店铺地址:https://mcurf.taobao.com 如有业务需要请联系我即可,感谢各位老板。