硬件平台:HackRF One
软件平台:MAC运行环境搭建
系统平台:OS X 10.11 EI Capitan
GPS终端:One Plus手机,飞行模式,仅GPS定位,GPS test App
文章特点:根据网上的文章实验证明发现了问题总结归纳到此,针对以上环境担保100%成功。


0. GPS系统简介

GPS 系统本身非常复杂, 涉及到卫星通信等各个领域. 这里只是简单介绍一下. 我们通常所说的 GPS 全球定位系统是由美国国防部建造完成. 目前在太空中共有31颗卫星在同时运作. 一般我们需要至少4颗卫星来完成三角定位. GPS卫星同时发送民用L1和军用L2两种无线信号. 我们通常使用的是没有加密的L1民用 1575.42MHz 的超高频波段.

GPS 信号里包含了3种常用信息.

Pseudorandom code: 简单的ID 码, 用来识别每颗卫星.
Ephemeris data: 包含卫星的运行状态, 时间日期等信息. 这在通过卫星来定位起到非常重要的作用.
Almanac data: 包含有每颗卫星的轨道信息,以及卫星在某个特定时段将出现的具体位置.

内容摘自王康的PDF,下载地址见附录:

1) GPS定位原理

首先,让我们明确我们的需求。我们想要知道的是我们的位置坐标(x,y,z),如果从一个已知坐标(x1,y1,z1)的点A(这个点在现实情况下是卫星)广播一个信号,比如说光和声音或者电磁波,然后我们试着去测量信号发送至到达的时间差τ1(在gps系统中我们用的是电磁波,我们知道它的速度),然后我们就能得出下面的等式:

这个等式有3个未知变量,因此单单一个等式解不出来,我们可以再加两个已知位置的点(卫星),我们把它们记作(x2,y2,z2) 和 (x3,y3,z3),然后就是下面的方程组

现在我们就能解出我们的位置(x,y,z)了

但在工程应用中这样还不够。为了测量电磁波发送至到达的时间差τ1,需要在电磁波发送的时候写一个时间戳t1,然后是卫星上的时钟时间参考值,当信号到达我们这里时,我们提取出时间戳t1,然后计算t1和当地时间t2的差值来计算时间差τ1。然而当地时间和卫星时间并不是同步的,会出现一个时间偏移量∆t1,所以这个时间偏移量也要被考虑进去,于是修正后的方程式如下所示:

译者注:所以有4个变量,就需要4个卫星来创造4个等式啦,以下高等数学内容略,以上内容说明我们需要伪造至少4颗卫星的信号才能使gps定位

1. 下载编译gps-sdr-sim

因为我的OSX系统下使用MacPorts安装了gcc5,xcode默认安装的gcc是/usr/bin/gcc,所以直接make可能会提示找不到omp.h文件因为调用的是xcode的gcc(苹果xcode安装的gcc很多程序都无法成功编译),那么按照下面的步骤即可正常安装。

$ git clone https://github.com/osqzss/gps-sdr-sim.git
$ cd gps-sdr-sim
$ gcc-mp- gpssim.c -lm -O3 -o gps-sdr-sim

或者干脆sudo port select gcc mp-5再make就OK了

2. RINEX星历数据下载

ftp://cddis.gsfc.nasa.gov/pub/gps/data/daily/2016/brdc

找brdc0050.16n.Z 这样的文件,解压出来就是了

3. 生成GPS仿真数据

$./gps-sdr-sim -e brdc3540.14n -l 29.643598,91.101319, -b 

指定星历文件(可自行更新至最新的星历数据),设置经纬度(拉萨市),必须指定采样精度为8否则用hackRF one欺骗成功率不高,反正我指定16是没成功过(默认为16,乌云文章也是16但设备是bladeRF)

另外如果有其他目的也可以伪造一个动态的GPS数据样本,例如欺骗计步器,轨迹等

$./gps-sdr-sim -e brdc3540.14n -u circle.csv -b 

GPS-SDR-SIM 运行时间问题

默认情况下GPS模拟器只能连续工作5分钟左右. 通过查看源代码后, 我们可以发现这是因为程序默认设置导致. 在程序设计之初为了节省硬盘空间, 默认只生成了300秒左右的数据. 我们可以通过改动参数来延長工作時間. 但需要注意的是仅仅延長到15分鐘,數據便可達到5G大小.

4. HackRF发射GPS数据

$ hackrf_transfer -t gpssim.bin -f  -s  -a  -x  -R

指定GPS数据,指定频率为1575420000 即民用GPS L1波段频率,指定采样速率2.6Msps,开启天线增益,指定TX VGA(IF)为0(为了限制影响范围,最大为47慎用!!!),最后开启重复发射数据功能

手机终端1分40秒就可以被欺骗成功,这里有一个测试技巧,就是定模模式选仅GPS定位,不要用基站、WLAN定位,这样打开地图等软件就是伪造后的GPS坐标点。

效果如图所示:

附录:

https://www.blackhat.com/docs/eu-15/materials/eu-15-Kang-Is-Your-Timespace-Safe-Time-And-Position-Spoofing-Opensourcely-wp.pdf

HackRF实现GPS欺骗教程的更多相关文章

  1. 使用HackRF和外部时钟实现GPS欺骗实验

    本文内容.开发板及配件仅限用于学校或科研院所开展科研实验! 淘宝店铺名称:开源SDR实验室 HackRF链接:https://item.taobao.com/item.htm?spm=a1z10.1- ...

  2. hackrf GPS欺骗

    在对GPS欺骗之前,先对GPS的知识做一个简单的介绍 GPS 系统本身非常复杂, 涉及到卫星通信等各个领域. 这里只是简单介绍一下. 我们通常所说的 GPS 全球定位系统是由美国国防部建造完成. 目前 ...

  3. GPS欺骗(一)—无人机的劫持

    本文作者:唯念那抹瑞利蓝 今天我们所讲的是GPS欺骗的方式和简单的定义.让大家对GPS欺骗这个方面有所了解.GPS是全世界地一个卫星定位系统,由美国制造. 0×01 例子2011年伊朗劫持美国无人机 ...

  4. 狗汪汪玩转无线电 -- GPS Hacking

    狗汪汪玩转无线电 -- GPS Hacking Kevin2600 · 2015/12/09 10:12 0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因 ...

  5. 玩转无线电 -- GPS Hacking (上)

    0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因为内容太过学术化, 所需设备成本太高. 让许多感兴趣的朋友苦于无法入门. 直到GPS-SDR-SIM 这类 ...

  6. Python工具库分享

    漏洞及渗透练习平台: WebGoat漏洞练习平台: https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: https://github.co ...

  7. Python渗透测试工具库

    漏洞及渗透练习平台 WebGoat漏洞练习平台: https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: https://github.com ...

  8. github安全整理

    漏洞及渗透练习平台: WebGoat漏洞练习平台: https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: https://github.co ...

  9. Python工具库(感谢backlion整理)

    漏洞及渗透练习平台: WebGoat漏洞练习平台: https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: https://github.co ...

随机推荐

  1. Git入门及上传项目到github中

    最近需要将课设代码上传到Github上,之前只是用来fork别人的代码. 这篇文章写得是windows下的使用方法. 第一步:创建Github新账户 第二步:新建仓库 第三部:填写名称,简介(可选), ...

  2. 【转】Linux下XenServer管理工具安装

    转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) ...

  3. hdu----(1677)Nested Dolls(DP/LIS(二维))

    Nested Dolls Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  4. OID,主键生成策略,PO VO DTO,get和load区别,脏检查,快照,java对象的三种状态

    主键生成策略 sequence 数据库端 native 数据库端 uuid  程序端 自动赋值 生成的是一个32位的16进制数  实体类需把ID改成String 类型 assigned  程序端 需手 ...

  5. Merge Sorted Array [LeetCode]

    Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume tha ...

  6. MVC扩展ValueProvider,通过实现IValueProvider接口创建SessionValueProvider

    □ ValueProvider的大致工作原理 →通过Request.Form, Request.QueryString, Request.Files, RouteData.Values获取数据.→然后 ...

  7. Prim算法与Dijkstra算法的联系与区别

    /* 图结构,邻接矩阵形式 */ ElemType nodes[n]; int edges[n][n]; prim_or_dijkstra( int index, bool usePrim ) /* ...

  8. css3 keyframes animation

    html,body,div,span,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,address,big,cite,code,del,em,font,img ...

  9. BZOJ1584 [Usaco2009 Mar]Cleaning Up 打扫卫生

    令$f[i]$表示以i为结尾的答案最小值,则$f[i] = min \{f[j] + cnt[j + 1][i]^2\}_{1 \leq j < i}$,其中$cnt[j + 1][i]$表示$ ...

  10. java.io.FileOutputStream类的5个构造方法

    java.io.FileOutputStream的构造函数: ①FileOutputStream(File file) ②FileOutputStream(String name) ③FileOutp ...