GPS-SDR-SIM 项目是麻省理工学院许可下发布的开源 GPS 基带信号生成器项目。本期继续介绍该项目如何实现,想看上期请点链接利用开源项目实现定位和时间欺骗(一)。
1 下载编译gps-sdr-sim
该项目以RINEX格式的GPS星历档案和想要定位的位置为输入,生成全球定位系统基带信号,供软件无线电平台回放。生成样本的默认最大持续时间为三分钟。可以通过以下命令在linux系统上获取GPS-SDR-SIM的代码并编译:
$ git clone [email protected]:osqzss/gps-sdr-sim.git
$ cd gps-sdr-sim
$ gcc gpssim.c -lm -fopenmp -o gps-sdr-sim
可以查看GPS-SDR-SIM命令的具体用法
$ ./gps-sdr-sim -h
Usage: gps-sdr-sim [options]
Options:
-e <gps_nav> RINEX navigation file for GPS ephemerides (required)
-u <user_motion> User motion file (dynamic mode)
-g <nmea_gga> NMEA GGA stream (dynamic mode)
-l <location> Lat,Lon,Hgt (static mode) e.g. 30.286502,120.032669,100
-o <output> I/Q sampling data file (default: gpssim.bin)
-s <frequency> Sampling frequency [Hz] (default:
2600000)
-b <iq_bits> I/Q data format [8/16] (default:8)
2 软件无线电平台
为了将信号传输到真实的环境中,我们需要软件定义的无线电平台,如HackRF、BladeRF、USRP。HackRF是一个使用USB 2.0接口的开源SDR平台,工作在10MHz到6GHz的频段,最大支持20Msps采样速率,但只有半双工。它提供了从主机驱动到ARM固件甚至硬件方案、PCB布局和BOM的每一个设计细节。BladeRF采用USB 3.0接口,工作在300MHz至3.8GHz频段,支持独立的RX/TX 12位40MSPS正交采样和全双工。BladeRF似乎比HackRF具有更好的射频性能,因为它使用一个集成的射频芯片来支持300兆赫兹到3.8兆赫兹的所有工作射频频率范围。HackRF使用印刷电路板上的一些射频开关和射频转换器将2.3千兆赫兹和2.7千兆赫兹之间的窄工作频率扩展到10兆赫兹和6千兆赫兹,这带来了相当大的射频功率损耗。但根据我们的实验,HackRF和BladeRF发射的GPS信号都可以被常规GPS接收机解码。在这里我们使用HackRF来实现。
./gps-sdr-sim -e brdc3540.14n -l 31.603202, 120.466576, 100 -b 8 -d 100
可以通过以上代码来生成2014年12月20日静态位置的GPS基带信号样本。这里需要指定星历文件(可自行更新至最新的星历数据),设置经纬度,必须指定采样精度为8否则用hackRF one欺骗成功率不高。在这里需要注意的是,参考的文章都没有添加-d参数,实验的过程中发现没有这个参数生成的仿真文件为空,所以我在这里使用-d 100生成了一个100s的gps信号文件(约500M)。
另外如果有其他目的也可以伪造一个动态的GPS数据样本,例如欺骗计步器,轨迹等
$./gps-sdr-sim -e brdc3540.14n -u circle.csv -b 8
3 HackRF发射GPS数据
基带信号样本产生后,我们可以通过软件无线电平台的天线进行传输。我们可以使用下面的命令行使用HackRF以1575.42兆赫兹重复传输样本。
hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0 -R
指定GPS数据,指定频率为民用GPS L1波段频率,指定采样速率2.6Msps,开启天线增益,指定TX VGA(IF)为0(为了限制影响范围,最大为47慎用),最后开启重复发射数据功能。其中:
-t 文件名,从文件传输数据。
-f 频率,赫兹
-s 采样速率,采样速率单位为赫兹。
-a 放大器使能,接收/发射射频放大器 1 =使能,0 =禁用。
-x 增益分贝,TX VGA(中频)增益,0-47分贝,1dB步长。
-R 重复发射模式。
“-R”参数非常方便,因为“gpssdr-sim”只产生三分钟的样本,而GPS接收器可能在三分钟内不能完成第一次GPS捕获过程。
实现结果
手机终端40秒左右就可以被欺骗成功,如果不成功可以考虑将-x 0改为-x 10或20,或者重新生成基带信号文件试试。实验参数如下:
Item | Value |
---|---|
Hardware | HackRF one |
Test device | iPhone 7plus |
Test network | China Mobile LTE, China Unicom LTE |
Real location | East China Normal University |
Real localtime | Africa (31.603202IN, 120.466576E) |
该结果表明手机对GPS信号的依赖程度很高,手机内的应用更是如此。
本文始发于微信公众号(轩辕实验室):利用开源项目实现定位和时间欺骗(二)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论