LimeSDR GPS欺骗

 

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

本文介绍的GPS欺骗有三种方法:

方法A:利用https://github.com/osqzss/gps-sdr-sim的方法。

方法B:利用https://wiki.myriadrf.org/GPS_Simulation的方法。

方法C:利用https://github.com/osqzss/LimeGPS的方法。(经过测试,方法C是目前最可靠,成功率最高的方法,建议大家使用。)

无论是利用方法A、方法B还是方法C,核心工具都是用的gps-sdr-sim工具,只是具体操作方法稍有不同而已。

 

目录

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

一、准备工作

二、gps-sdr-sim下载、编译

三、GPS欺骗方法A

四、GPS欺骗方法B

五、GPS欺骗方法C


一、准备工作

1、Ubuntu系统下使用LimeSDR的环境搭建

#这是安装LimeSuite组件,Soapy API和LimeSDR的所有驱动的程序,没有安装过的朋友先安装

sudo add-apt-repository -y ppa:myriadrf/drivers 

sudo apt-get update 

sudo apt-get install limesuite liblimesuite-dev limesuite-udev limesuite-images 

sudo apt-get install soapysdr soapysdr-module-lms7

二、gps-sdr-sim下载、编译

安装好后,开始下一步的操作(下载gps-sdr-sim代码)

git clone https://github.com/osqzss/gps-sdr-sim

cd gps-sdr-sim

#接下来对你下载好的文件进行gcc编译(前提是你的Ubuntu系统已经安装了gcc)

gcc gpssim.c -lm -O3 -o gps-sdr-sim

到这前期准备工作就好了,下面我们来看编译好的文件中的各类指令

Usage: gps-sdr-sim [options]    #  
Options:  
  -e      RINEX navigation file for GPS ephemerides (required)  
  -u  User motion file (dynamic mode)  
  -g     NMEA GGA stream (dynamic mode)  
  -c     ECEF X,Y,Z in meters (static mode) e.g. 3967283.15,1022538.18,4872414.48  
  -l     Lat,Lon,Hgt (static mode) e.g. 30.286502,120.032669,100  
  -t    Scenario start time YYYY/MM/DD,hh:mm:ss  
  -T    Overwrite TOC and TOE to scenario start time  
  -d     Duration [sec] (dynamic mode max: 300 static mode max: 86400)  
  -o       I/Q sampling data file (default: gpssim.bin ; use - for stdout)  
  -s    Sampling frequency [Hz] (default: 2600000)  
  -b      I/Q data format [1/8/16] (default: 16)  
  -i               Disable ionospheric delay for spacecraft scenario  
  -v               Show details about simulated channels  
#这是中文的对照
用法:gps-sdr-sim [选项]
选项:
   -e 用于GPS星历表的RINEX导航文件(必填)
   -u 用户动作文件(动态模式)
   -g  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  I / Q数据格式[1/8/16](默认值:16)
   -i禁用航天器场景的电离层延迟
   -v显示有关模拟频道的详细信息

三、GPS欺骗方法A

利用https://github.com/osqzss/gps-sdr-sim的方法。

使用gps-sdr-sim指令时,可以生成动态与静态的文件,例如

gps-sdr-sim -e brdc3540.14n -u circle.csv               #静态模式
gps-sdr-sim -e brdc3540.14n -g triumphv3.txt            #静态模式
gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100 #动态模式

在指令前一定要加./,例如

./gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100 #生成北纬30,东经120,高度100m的星历

在上述命令中,brdc3540.14n是星历文件,其中,该文件的命名格式为:

LimeSDR GPS欺骗_第1张图片

如果你想下载任意的或者最新的星历文件,请在https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/broadcast_ephemeris_data.html

如果你想下载2020年的,可以从以下网页下载。

ftp://cddis.nasa.gov/gnss/data/daily/2020/brdc/

-l后边的参数 30.286502,120.032669,是你想伪造的GPS坐标点,100是海拔高度,这个信息,可以在网站 http://www.gpsspg.com/maps.htm,上查询一个你感兴趣的地方的 GPS 经纬度信息,鼠标点击后,从界面上复制坐标点数据。

LimeSDR GPS欺骗_第2张图片

等待./gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100执行完之后,你会发现文件中多了一个gpssim.bin的文件,将它重命名为circle.1b.1M.bin

下一步,也是至关重要的一步,我前面尝试时会报错,报错的类型是无法找到文件或目录经过探索,发现这个指令中的limeplayer可执行程序未生成,所以执行以下步骤

cd player
gcc -O2 -Wall -o limeplayer limeplayer.c -lLimeSuite

执行完后会发现文件夹中多了一个limeplayer的可执行程序 
接着执行最后一条指令,开始利用LimeSDR-USB(称“Lime大板子”)或者LimeSDR Mini(称“Mini”)来发射伪造的GPS数据,注意一定记得加./

./limeplayer -s 1000000 -b 1 -d 2047 -g 0.1 < ../circle.1b.1M.bin

此时,终端上应该显示LimeSDR的信息,并出现一系列数据流,开始发送信息。

LimeSDR GPS欺骗_第3张图片

但是,该实验不一定能够每次成功,与多种因素有关,例如不同的实验环境,不同的手机型号(有的手机可以每次都成功,但是有的手机就是无法成功)。

四、GPS欺骗方法B

利用https://wiki.myriadrf.org/GPS_Simulation的方法。

相关背景知识和内容,请查看https://wiki.myriadrf.org/GPS_Simulation。

执行以下命令生成GPS数据文件gpssim.s8。注意其中-s后边是采样率,这里是10000000,即10MHz,后边用GRC程序来发射数据的时候,GRC中模块中的采样率要与这个采样率一致。

在grc程序中需要设置的参数有发射模块采样率(sample_rate)、及发射频率(Freq).

发射模块采样率(sample_rate)需要与生成gpssim.s8文件的采样率一致,采样率如果与发射频率(Freq)不匹配,一般情况是采样率过低,则会出现如下错误:

发射频率(Freq)在实验中设置为1.57542GHz。

./gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100 -s 10000000 -b 8 -o gpssim.s8

生成了gpssim.s8文件之后(s8文件后缀,这是专门用于LimeSDR的文件格式),利用GRC程序来发射该文件数据。

 

LimeSDR GPS欺骗_第4张图片

发射数据大概2-3分钟之后,观察你手机中的百度地图、或高德地图,或者安卓手机下的GPS Test APP。看看是否你的地理位置发生了变化。

为了提高GPS欺骗的成功率,存在以下两个小技巧:

(1)手机跟天线平行,距离大概三十公分。

(2)手机开飞行模式,由于现在采用的定位方式不仅仅是gps,还采用了很多辅助技术以及信号的甄别机制,所以最好把手机调整到飞行模式。(我记得2016年的时候用HackRF One玩GPS的时候,无论是3G、WiFi或者飞行模式下,都是很容易成功的。)

五、GPS欺骗方法C

利用https://github.com/osqzss/LimeGPS的方法。

下载LimeGPS代码并编译。

$ git clone https://github.com/osqzss/LimeGPS
$ cd LimeGPS
$ make

选定你要伪造的GPS位置,并用LimeSDR-USB或LimeSDR Mini来发射数据。

./LimeGPS -e brdc0350.18n -l 30.286502,120.032669,100

发射数据大概2-3分钟之后,观察你手机中的百度地图、或高德地图,或者安卓手机下的GPS Test APP。看看是否你的地理位置发生了变化。

LimeSDR GPS欺骗_第5张图片

LimeSDR GPS欺骗_第6张图片LimeSDR GPS欺骗_第7张图片

 

LimeSDR GPS欺骗_第8张图片LimeSDR GPS欺骗_第9张图片

你可能感兴趣的:(LimeSDR)