【USRP】利用USRP模拟发送GPS欺骗虚拟定位信号

1、前言

因项目需要,需将一台带有GPS定位的设备将其定位至某地区,模拟在该地区下的真实运行情况。

2、什么是GPS欺骗

GPS欺骗是指:为误导指定区域内的GPS导航定位信号,发射与真实GPS信号具有一定相似性的伪导航信号,迫使相关用户接收终端接收解算此类伪导航信号,从而在隐蔽条件下使得用户得到了虚假的位置、速度和时间信息并无法有效察觉。

GPS欺骗可分为静态GPS欺骗和动态GPS欺骗。

静态GPS欺骗是一种通过修改、模拟或屏蔽GPS信号,误导设备在静态状态下的定位系统的攻击。

动态GPS欺骗强调了不仅仅关注设备的静态位置,还关注设备运行过程中动态地影响其定位。这种攻击方式可能导致更严重的后果。

3、利用USRP模拟发射GPS信号

3.1、实验环境

硬件:一台USRP B200-mini-i、GPS信号接收器、国产某品牌手机P30 Pro

软件:USRP B200所需环境、Google Earth Pro、u-center、SatGenNMEA、卫星伴侣APP等

3.2、实验准备

安装USRP的相关驱动,安装u-center软件,安装Google Earth Pro软件,安装卫星伴侣APP等。

3.3、Linux下模拟静态GPS欺骗

git clone https://github.com/osqzss/gps-sdr-sim.git
cd /gps-sdr-sim
gcc gpssim.c -lm -O3 -o gps-sdr-sim

生成GPS卫星信号文件,其中brdc0010.22n是星历文件。

./gps-sdr-sim -e brdc0010.22n -l 30.xxxxxx,120.xxxxxx,100 -d 600 -s 2500000 -T now

执行完毕后会生成一个gpssim.bin文件。

详细参数说明:

用法:gps-sdr-sim [选项]
选项:
   -e <gps_nav>用于GPS星历表的RINEX导航文件(必填)
   -u <user_motion>用户动作文件(动态模式)
   -g <nmea_gga> NMEA GGA流(动态模式)
   -c <位置> ECEF X,Y,Z,以米为单位(静态模式),例如3967283.15,1022538.18,4872414.48
   -l <位置> Lat,Lon,Hgt(静态模式),例如30.286502,120.032669,100
   -t <日期,时间>场景开始时间YYYY / MM / DD,hh:mm:ss
   -T <日期,时间>将TOC和TOE覆盖到方案开始时间
   -d <欺骗时间>持续时间[秒](动态模式最大值:300静态模式最大值:86400)
   -o <输出> I / Q采样数据文件(默认值:gpssim.bin;使用 - 用于stdout)
   -s <频率>采样频率[Hz](默认值:2600000)
   -b <iq_bits> I / Q数据格式[1/8/16](默认值:16)
   -i禁用航天器场景的电离层延迟
   -v显示有关模拟频道的详细信息

发射生成的卫星信号文件:

sudo python3 gps-sdr-sim-uhd.py -t gpssim.bin -s 2500000 -x 80

在等待2~3分钟后,u-center收到GPS信号:

存在的问题:我在虚拟机Ubuntu下发射模拟GPS信号,使用上述命令,存在卫星信号不稳定情况,可能是哪个参数没有调好。

3.4、Windows下模拟实时动态GPS欺骗(稳定)

环境:windows 10

下载kobekobe的带ui界面的gps-sim项目,进入win64-release目录,运行gps-sim.exe

点击启动

出现此界面表示正在发射模拟信号,此时u-center中收到信号:

拿出手机,打开飞行模式,关闭蓝牙、Wifi,重启一下,打开卫星伴侣APP,查看卫星信号,一开始卫星信号是灰色的表示不可用,在等待两分钟左右后,成功上线。

点击定位查看经纬度是否已经定位到指定位置并可能按轨迹路线移动,此时把位置关闭,连上Wifi(加载地图资源用,位置不关好像会飘回到原地),点击地图查看所在地区(好像是小日子那里一所大学(手动滑稽))。

4、轨迹文件制作

4.1、从Google Earth 上规划路线生成kml文件

这里直接引用大神的步骤即可。

启动 Google Earth,调整视野,寻找到需要制作轨迹的位置,然后点击工具栏上的添加路径:

在地图上,点击勾画出一个运动轨迹,起点和终点最好很靠近,避免终点突然跳到起点

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

保存后的 kml 文件,是不能够直接使用的,它本质上只是一种包含路径中关键坐标点的格式,并不包含实际运动轨迹中加速,减速,静止这样的数据,我们要对其进行转换。

转换格式需要用到 SatGenNMEA软件SatGenNMEA软件win64-release就有了。

打开 SatGenNMEA软件,数据更新频率设置为10hz,其他的都用默认参数就行,如果觉得起步停留时间80S太长了也可以把起步停留时间改短一点,20S应该就可以了。然后点击”Load KML file”,加载GOOGLE EARTH制作的kml路径,然后点击”Generate NMEA file”,即可生成标准的 NMEA 轨迹文件,好了这个文件就可以在gps-sim里面使用了

在启动gps-sim.exe时轨迹文件选择刚保存的.txt文件即可,其中文件内容格式如下:

4.2、使用gps轨迹录制软件现场刻录轨迹

插上GPS接收器去室外边移动边采集并生成轨迹文件。

5、结语

智能手机不保证一定能定位成功,有些可能带了防止欺骗技术,另外很多手机都使用多方位定位,例如Wifi、基站、蓝牙等。

使用其他SDR应该也可以发射模拟信号,例如HackRF、PlutoSDR(已验证)等。

附星历文件下载地址:ftp://igs.gnsswhu.cn/pub/gps/data/daily,据说使用最新的星历文件可提高欺骗成功率。

最后提别提醒:

请勿将该技术用于非法用途!!!

请勿将该技术用于非法用途!!!

请勿将该技术用于非法用途!!!

重要的事情说三遍!

此外,不用时请及时关闭发射模拟信号,以免造成不良影响。

  • 36
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
LabVIEW是一种高级编程语言和开发环境,可用于控制各种硬件设备。USRP(Universal Software Radio Peripheral)是一种软件无线电硬件设备,可以实现无线通信系统的开发和实验。 在LabVIEW中,我们可以通过使用USRP硬件的适配器来实现对USRP设备的控制和信号发送。 首先,我们需要在LabVIEW中安装USRP硬件适配器。安装完成后,我们可以在LabVIEW的工具栏中找到USRP相关的工具和函数。 接下来,我们可以使用LabVIEW的随机数生成函数来生成随机信号。通过配置该函数的参数,我们可以控制生成信号的范围和类型。例如,我们可以生成一个在0到1之间的随机数序列。 然后,我们需要使用LabVIEW提供的USRP适配器函数来将生成的随机信号发送USRP设备。我们可以使用适配器函数来设置发送信号的频率、幅度和其他相应的参数。在发送信号之前,我们还需要配置USRP设备的其他参数,如采样率和信号波形类型等。 最后,我们可以使用LabVIEW的循环结构来实现循环发送随机信号的功能。我们可以通过设置循环次数或条件来控制发送信号长度和次数。在每个循环迭代中,我们将生成一个随机信号,并通过USRP适配器函数将其发送USRP设备。 总结起来,通过使用LabVIEW的USRP适配器函数和相关功能,我们可以实现循环发送随机信号USRP设备的功能。这样,我们可以用LabVIEW来控制USRP设备并进行各种无线通信实验和应用开发。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值