【USRP】使用USRP制作超级跑马机(手动滑稽)

2 篇文章 1 订阅
1 篇文章 0 订阅

0x00 序言

本文作者 Nack'BT  ,未经允许,严禁转载 

SDR技术交流加我qq 3505932208

  估计点击来的同学都看过使用hackrf制作超级跑马机,文章写得很好,我就想拿USRP弄一个,找了一下一共就2两篇关于USRP做GPS欺骗的博客,而且都没有使用外部时钟导致可以发现星座但是无法成功欺骗的问题,其次只是静态坐标欺骗,可能是因为找不到KML转NMEA的SatGen工具,作者花了120大洋从一个做跑马机的那里买来了老版SatGen(新版限制太多),所以麻烦各位同学看完点个赞吧,拒绝白嫖。

 

0x01 软&硬件资源

软件

  1. ubuntu(笔者在ubuntu18和16上均实验成功)
  2. UHD & Gnuradio
  3. GPS-sdr-sim
  4. 谷歌地球
  5. SatGen

硬件

  1. USRP B210(其他大牛在n210 x310均实验成功)
  2. 10Mhz 0.01ppm OCXO时钟(只要兼容USRP即可)
  3. SAM-J 转 SAM-J 转接线
  4. GPS增强蘑菇头天线或者支持1.5Ghz鞭状天线
  5. 2.5w全频功放(可选)

注意:不能用GPS DO驯服时钟(为什么自己想)

0x02 搭建环境

1.安装 UHD & Gnuradio

  从源安装(推荐)参见我的另外一篇博客:

  https://blog.csdn.net/qq_42652838/article/details/98198534

  源码编译(不推荐)参见大佬优秀文章:

  https://blog.csdn.net/jipengwang/article/details/79451729

2.编译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 -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)
  -c <location>    ECEF X,Y,Z in meters (static mode) e.g. 3967283.154,1022538.181,4872414.484
  -l <location>    Lat,Lon,Hgt (static mode) e.g. 35.681298,139.766247,10.0
  -t <date,time>   Scenario start time YYYY/MM/DD,hh:mm:ss
  -T <date,time>   Overwrite TOC and TOE to scenario start time
  -d <duration>    Duration [sec] (dynamic mode max: 300, static mode max: 86400)
  -o <output>      I/Q sampling data file (default: gpssim.bin)
  -s <frequency>   Sampling frequency [Hz] (default: 2600000)
  -b <iq_bits>     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_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显示有关模拟频道的详细信息

0x03 劫持实战

首先如图连接设备(笔者使用国产USRP ,如果是山黑的可以直接把时钟插在板子上)

1.生成静态GPS星历报文

命令格式:

另外两篇博客写bit不能设置为16,否则欺骗会不成功,但是笔者8/16bit均实验成功

./gps-sdr-sim -e <导航报文> -l <坐标> -s <采样率> 
#使用-b指定bit位数(16/8/1)
举个栗子:
生成坐标为 30.286502,120.032669,100的星历报文
(USRP使用10Mhz时钟采样率必须可以整除,所以设置为 2500000)
gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100 -s 2500000

2.生成动态GPS星历动态报文

首先使用谷歌地图画出要伪造的轨迹

保存格式一定要选择KML

然后使用SatGen将KML文件转为NMEA轨迹文件(后缀是txt)

然后会生成一个nmea轨迹文件,用这个生成GPS报文

./gps-sdr-sim -e brdc3540.14n -g nmea.txt -s 2500000

3.USRP发射GPS报文

   另外两篇文章最大的问题就是没有使用外部时钟,所以不成功,刚开始我以为USRP跟hackrf一样直接把时钟接上去就行,后来经大佬指点,一语惊醒梦中人,gps-sdr-sim-uhd.py加-c才能选择时钟 我tm。。。

./gps-sdr-sim-uhd.py -t gpssim.bin -s 2500000 -c external -x 40
# external 外部时钟  
# internal 内部时钟

如果一切正常的话,TX/RX的指示灯会亮起来

效果如图

以100km/h速度在护城河中游泳(逃

打字不易,还请各位看官老爷点个赞

如果实在找不到SatGen加我QQ 3505932208(学业繁忙,不定期看qq)

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
GNURadio是一个开源的软件无线电开发平台,而USRP(Universal Software Radio Peripheral)是一种通用的软件无线电外设硬件。结合使用GNURadio和USRP,你可以实现软件定义无线电(SDR)应用。 要使用GNURadio和USRP,你需要进行以下步骤: 1. 安装GNURadio:首先,你需要在你的计算上安装GNURadio。你可以从GNURadio官方网站(https://www.gnuradio.org/)下载最新的稳定版本,并按照官方文档中的指导进行安装。 2. 连接USRP:将USRP设备连接到计算上。USRP设备通常通过USB或以太网接口连接到计算。确保你的USRP设备与计算正确连接,并获得适当的供电。 3. 编写GNURadio应用程序:使用GNURadio提供的图形界面工具或编程语言(如Python)编写你的无线电应用程序。你可以使用GNURadio提供的块(blocks)来构建信号处理流程图。流程图描述了信号的流动和处理过程。 4. 配置USRP设备:在你的GNURadio应用程序中,你需要配置USRP设备以进行特定的无线电操作。例如,你可能需要指定接收频率、发射功率、天线增益等参数。 5. 运行应用程序:将你的GNURadio应用程序编译并运行。你的应用程序将通过USRP设备与无线电信号进行交互,接收和发射信号。 请注意,以上步骤只是简要概述了使用GNURadio和USRP的基本过程。在实际使用中,你可能还需要学习更多关于GNURadio和USRP的详细知识,并根据具体的应用场景进行配置和调试。你可以参考GNURadio官方文档、社区论坛和在线教程以获取更多帮助和资源。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值