公告:

HackRF-one模拟GPS信号,实现定位欺骗

作者:tiankai369 / 时间:12个月前 (10/28) / 分类:技术文章 / 阅读:875 / 评论:1

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,里面是多个以年份命名的文件夹

  微信图片_20181028224052.png

打开2018年这个文件夹(网速比较慢,打开时间比较长耐心等待),将网页拉至最下面,在里面的 brdc 子目录中,下载相应年积日对应的 GPS 导航电文文件,比如 2018 年 10 月 28 日的数据,文件名是brdc2990.18n.Z,下载然后解压缩,得到的 brdc2990.18n 就是导航电文文件。(此处需要注意不要下载brdc3000.18g.Z这个文件,笔者刚开始没有注意后缀名称,一直使用这个文件,导致定位不对

image.png

3.2制作运动轨迹文件

首先启动 Google Earth,调整视野,寻找到驾校所在地区,然后寻找驾校的位置,让驾校的练习场地完全出现在视野中,然后点击工具栏上的添加路径:

 

image.png

在地图上,沿着你需要的场地,点击勾画出一个运动轨迹:(注意新建路径窗口不能关闭,否则不能创建轨迹,经验啊

image.png

 

image.png

为路径起名,点击确定后,它就会出现在左侧的位置列表之中,在上面点击右键,选择”将位置另存为”,将之保存为 kml 文件。

我们把 kml 文件转换成 NMEA 格式,这里我们需要用到一个小工具,它由 LabSat 提供,是 SatGen 软件的一个极简免费版。

SatGen 软件下载地址:

链接:https://pan.baidu.com/s/1ywnhK0pox85htS3VN4DERA

image.png

将频率设置为 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文件夹内部

image.png

 

为了更好的说明 gps-sdr-sim 各项参数的含义,可以参考如下说明。


 image.png

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微信同号)

来源:互联网


已有1条留言


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。