用HackRF One模拟GPS信号

news/2024/11/17 12:49:51/

 上次说到HackRF One模拟遥控钥匙开灯关灯,实际上HackRF One几乎可以模拟我们能见到的各种射频遥控物品。不错,就如你想的那样——你家车库的遥控门、单位气派的遥控门,还有你心爱的汽车遥控钥匙——统统可以用电脑来控制,而且还很简单。大家可以用自己家的东西做实验,千万不要影响到别人哦。这次我要聊聊上次想到的GPS的问题,伪造的GPS信号能不能骗过百度地图,微信定位。
   GPS导航系统是以全球31颗定位人造卫星为基础,向全球各地全天候地提供三维位置、三维速度等信息的一种无线电导航定位系统。要伪造GPS信号,只需要了解一点点有关卫星定位、导航的知识就可以了——不用多,只要一点点的皮毛知识即可。一般我们需要至少4颗卫星来完成三角定位(如下图).我们通常使用的是没有加密的L1民用 1575.42MHz 超高频波段.



哇,有序实数组,是不是倍感亲切呀!再看下去,你会更觉得熟悉!
首先,我们的地球是个圆球(请不要抬杠,我听说过地球近似的椭球形。我还听说过她是个梨形的,这里们近似看作圆球),我在地球上的每个位置的坐标A(x,y,z)[这三个分别是经纬度和海拔高度],如果从一个位置准确的卫星Satellites 1(x1,y1,z1)发送一个电磁波信号,然后我们度着去测量信号发送至到达的时间差T1,然后在空间中我们就能根据高间中两点的距离公式得到下列等式:


(c是光速)
从我们高中生的角度来看,要准确地解得我们的位置,我们至少需要三个方程。天主的卫星很多,所以我们很容易就会得到


现在,我们就能解出我们的位置坐标(x,y,z)了。
但是在实际中,这样还是够的。为了测量电磁波发送至到达的时间差T,我们还需要一颗卫星。所以就要4个卫星来建立4个等式。
————综上所述,我们需要伪造至少4颗卫星的信号才能使我们的手机“准确”定位。

 现在开始进入实践。从网上下载相关软件

$ git clone https://github.com/osqzss/gps-sdr-sim.git
$ cd gps-sdr-sim
$ gcc-mp-5 gpssim.c -lm -O3 -o gps-sdr-sim
(说明,需要自己先install git,然后才能安装。不出意外系统应该安装好gcc了)
现在最重要的是找到RINEX星历数据。国内网上能找到的,都是下面这个版本(如下图):




我告诉大家,这个已经过期作废了。详情,请看官网公告:




哈哈,不要问我怎么上的官网。我说了,你也不一定会——为此我特地买了个美国IP,做了个VPN服务器呲牙 (其实也很简单,CSDN网上都有教程,2008系统,只傻瓜按步骤设置就行了。临时一用,不谈什么安全不安全的)。不多说了,看官方最新的RINEX说明



CSDN上也提供了RINEX命名规则,大家可以参考一下:




这个星历文件到底长什么样子?下面就给大家看看最新的


现在一切准备就绪,我们可以生成GPS仿真数据了。嗯,我们去哪里呢?蒙古,怎么样?打开百度地图找到乌兰巴托的坐标


记下坐标(107.165233,47.815345)——这个只是经纬坐标,我们还要上网查一下它的海拔,然后估计一个数据就差不多了,比如海拔1357就蛮好的。这里友情提示,gps-sdr-sim 命令中的经纬坐标和百度里提供的对换一下(可能是因为外国人我们的使用习惯不一样吧)
现在可以生成GPS数据了(如下图)


我生成的数据文件名是wulanbatuo.bin,下面只要用它来完成发射就可以了


用hackrf_transfer发射电磁波,稍等一会儿就可以看到效果了(如下图,不多说了):


 

写在最后,我想位置考勤如单单看GPS信息,这个方法肯定是可以通过的。但是如果辅助用通信信号基站信息的话,我觉得难度就大了
——不过,话又说回来,基站发射的不也是无线电波吗?如此一来,只是增加了一点难度而已。
 


http://www.ppmy.cn/news/300632.html

相关文章

大话卫星导航中的信号处理系列文章——GPS信号相关特性

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 大话卫星导航中的信号处理系列文章——GPS信号相关特性 相关性自相关性互相关性 相关性 GPS L1C/A信号是BPSK调制信号,相位变化的速率通常称为码速率。频谱形状可…

GPS信号简介

参考链接: [1] GPS卫星信号技术:载波与其调制、解调 - 知乎 [2] 全球定位系统(GPS)军码协议有多复杂,为什么没法破解? - 知乎 [3] 深入理解Android:Wi-Fi、NFC和GPS卷(完整版&…

GPS基础知识(四)、GPS信号结构

GPS信号结构 (三层) 载波伪码数据码 一,载波 载波是三层的基础,伪码和数据码都是调制在载波上才能发送。GPS有两个载波频率,L1和L2,L1为1575.42MHz,L2为1227.60MHz。我们常用的主要是L1载波。根…

GPS信号强度与GPS定位

定位类型声明&#xff1a; public boolean isOpenProvider() {//获取定位服务locationManager (LocationManager) getSystemService(Context.LOCATION_SERVICE);//获取当前可用的位置控制器List<String> list locationManager.getProviders(true);if (list.contains(L…

手机GPS 搜星 根据信燥比 判断 信号强弱

好久没写博客了&#xff0c;最近都在忙其他事。 最近遇到一个问题就是 做了一个基于手机GPS模块的APP&#xff0c;客户要求根据GPS获得的坐标与指定点的坐标计算距离&#xff0c;小于规定的并滞留5分钟时&#xff0c;自动结束或者提示。 效果什么的都做出来了&#xff0c;但是…

车载高德地图显示服务器信息,车载高德一直gps定位中,怎么解决高德地图导航gps信号弱...

很多车主在使用车载高德地图导航时&#xff0c;或多或少都会出现过高德地图导航gps信号弱的问题&#xff0c;有时候连定位都无法移动&#xff0c;或者一直显示gps定位中。当我们遇到这种情况时&#xff0c;应该怎么去解决&#xff1f; 车载高德地图gps信号弱的解决办法 如果车辆…

快速实现一个分布式定时器

定时器&#xff08;Timer&#xff09;是一种在业务开发中常用的组件&#xff0c;主要用在执行延时通知任务上。本文以笔者在工作中的实践作为基础&#xff0c;介绍如何使用平时部门最常用的组件快速实现一个业务常用的分布式定时器服务。同时介绍了过程中遇到问题的一些解决方案…

宝塔面板搭建thinkphp后请求中去除index.php后缀

宝塔面板搭建thinkphp后请求中去除index.php后缀 nginx配置 在宝塔面板网站中绑定thinkphp的public&#xff0c;添加站点 点击站点设置按钮打开项目设置页面 找到配置文件 选项&#xff0c;然后在 22行 后添加一下代码 location / {if (!-f $request_filename) {rewrite …