本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

淘宝店铺名称:开源SDR实验室

HackRF链接:https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-13257850194.8.69503d888aIzVL&id=526187854860

原文地址:https://blog.csdn.net/OpenSourceSDR/article/details/51968678

之前在网上几个网站上看到过很多题为《狗汪汪玩转无线电 -- GPS Hacking (上)》的博客,但是一直手里没有适用于HackRF的外部时钟,所以也就一直没有亲自实践。前几天新进了一批用于GPS实验的外部时钟,今天抽空把GPS欺骗的实验亲自做了一下,中间碰到了一点小插曲小问题,最终成功后整理了如下的详细操作过程留作备份,方便自己和大家今后查看。

实验环境:

硬件平台---HackRF One、GPS外部时钟、天线(700-2700MHz,本店HackRF套件中最长的天线)
软件环境---Ubuntu运行HackRF环境
系统版本信息---Ubuntu-14.04 (64-bit),内核:3.13.0-32-generic
GPS终端---iphone6手机

实验步骤:

步骤1:实验准备工作,将GPS外部时钟按照正确方式安装在HackRF中(由于本次购进的GPS外部时钟是模块朝下的,如果模块的金属外壳接触到HackRF的单排插针(如图1种的黄色框标示的单排插针)的话,会影响HackRF正常工作,因此我们需要先将HackRF的单排插针与GPS外部时钟的金属外壳可能会接触到的3个插针弄外一些,只要保证二者不接触即可),否则的话,HackRF就会不能正常工作,当你用USB线接上HackRF后,如图1红框中所示的HackRF平时正常显示的USB灯(绿色)、RF灯(红色)、1v8灯(黄色)和3v3(绿色)这几个灯不会正常显示,而且当你输入hackrf_info后会显示没有找到hackrf板。GPS外部时钟插入图1中的“黄框单排插针”旁边的“黑色双排插槽”的方法如图2所示。

图1 HackRF

具体的调整图1种的黄框单排插针的方法为,将黄框中的从左边开始的前三个插针轻轻的往上边掰一掰即可,具体操作方法为1)先用一只手指压住如图2中红色箭头所指的插槽底部,2)用另一个手指将黄框中的3个插针往黑色双排插槽方向轻轻地掰一掰即可。然后插上GPS外部时钟,检查一下看看外部时钟和插针是否还有接触。

图2 外部时钟模块安装方法

步骤2:下载编译GPS仿真器代码(gps-sdr-sim)

打开一个终端,进入到你想存放GPS仿真器代码的路径下,然后依次输入执行以下命令来下载代码:

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

下载完成后,需要进入代码文件夹中,输入以下命令来实现:

cd gps-sdr-sim

进入文件夹后,开始用gcc编译代码。输入以下命令来实现:

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

编译完成后,你当前路径下就会出现可执行程序gps-sdr-sim

步骤3:在网站http://www.gpsspg.com/maps.htm上查询一个你感兴趣的地方的GPS经纬度信息(例如我选了个如图3所示的无锡东站:百度地图:31.6032020000,120.4665760000),然后按照这个经纬度信息来通过GPS仿真器生成GPS仿真数据

./gps-sdr-sim -e brdc3540.14n -l 31.603202,120.466576,100 -b 8

【备注:如果要是欺骗时间,则可利用-T参数,例如

 ./gps-sdr-sim -e brdc3540.14n -l 31.603202,120.466576,100 -T 2017/10/11,07:00:00 -b 8,其中的2017/10/11,07:00:00替换成你想设定的时间。】

等待执行上述命令,执行结束后,你会发现你的文件夹中多了一个gpssim.bin文件,这个文件保存的就是我们模拟生成的GPS数据。在接下来的步骤中,我们就要用HackRF把伪造的GPS数据发送出去。

图4

注意:网上之前的教程大部分都是用BladeRF来做的,用的-b的参数都是16,而HackRF的芯片是8位的,因此,我刚开始的时候怎么也不能GPS欺骗,后来改为-b 8后就欺骗成功了,这也算是一个小插曲。

步骤4:用HackRF来发射我们在步骤3中模拟生成的伪造数据

打开手机中的高德地图或者百度地图APP,你会看到你现在所在的真实位置,然后开始执行以下命令:

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

(命令参数解析:指定GPS数据,用-f来指定频率为1575420000 ,即民用GPS L1波段频率,用-s来指定采样速率2.6Msps,开启天线增益,指定TX VGA(IF)为0)【注意:如果你的实验没有成功,那么你首先试试加大发射功率,即将上述命令-x后边的“0”修改为10或者20或者30之类的。如果还是不能成功,那么再考虑是不是你的数据生成的有问题,重新生成一下试试。】

等待几分钟后(可能一两分钟,也可能是三四分钟具体情况不同),你就会发现你的高德地图或百度地图发生变化了,从原来你所在的位置变成了在无锡东站附近了。如下图5,6,7所示。我按照手机是3G信号、WiFi信号和飞行模式三种模式来分别进行了验证,结果依次如图5、6和7所示。

图5,6,7

图8

hackrf_transfer命令行语法参考:

Usage:

-r<filename> # Receive data into file. 把接收到的信号、数据保存到文件中;(信号录制)

-t<filename> # Transmit data from file. 从文件中提取、发送射频信号;(信号播放)

-w # Receivedata into file with WAV header and automatic name.

# This is for SDR# compatibility and may notwork with other software.

[-f freq_hz] #Frequency in Hz [0MHz to 7250MHz].

[-i if_freq_hz]# Intermediate Frequency (IF) in Hz [2150MHz to 2750MHz].

[-o lo_freq_hz]# Front-end Local Oscillator (LO) frequency in Hz [84MHz to 5400MHz].

[-mimage_reject] # Image rejection filter selection, 0=bypass, 1=low pass, 2=highpass.

[-a amp_enable]# RX/TX RF amplifier 1=Enable, 0=Disable.

[-pantenna_enable] # Antenna port power, 1=Enable, 0=Disable.

[-l gain_db] #RX LNA (IF) gain, 0-40dB, 8dB steps

[-g gain_db] #RX VGA (baseband) gain, 0-62dB, 2dB steps

[-x gain_db] #TX VGA (IF) gain, 0-47dB, 1dB steps

[-ssample_rate_hz] # Sample rate in Hz (8/10/12.5/16/20MHz, default 10MHz).

[-n num_samples]# Number of samples to transfer (default is unlimited).

[-c amplitude] #CW signal source mode, amplitude 0-127 (DC value to DAC).

[-bbaseband_filter_bw_hz] # Set baseband filter bandwidth in MHz.

Possible values: 1.75/2.5/3.5/5/5.5/6/7/8/9/10/12/14/15/20/24/28MHz,default < sample_rate_hz.

参考文献:

http://www.2cto.com/Article/201512/453013.html

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

http://www.cnblogs.com/k1two2/p/5164172.html

http://wooyun.jozxing.cc/static/drops/tips-11155.html

使用HackRF和外部时钟实现GPS欺骗实验的更多相关文章

  1. hackrf GPS欺骗

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

  2. stm32 时钟配置——外部时钟倍频、内部时钟倍频 【worldsing笔记】

    stm32可选的时钟源 在STM32中,可以用内部时钟,也可以用外部时钟,在要求进度高的应用场合最好用外部晶体震荡器,内部时钟存在一定的精度误差. 准确的来说有4个时钟源可以选分别是HSI.LSI.H ...

  3. 北斗时钟同步系统-GPS卫星授时设备-NTP网络校时服务器

    北斗时钟同步系统-GPS卫星授时设备-NTP网络校时服务器 北斗时钟同步系统-GPS卫星授时设备-NTP网络校时服务器 北斗时钟同步系统-GPS卫星授时设备-NTP网络校时服务器 论述当下网络时间同步 ...

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

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

  5. 单片机成长之路(51基础篇) - 023 N76e003 系统时钟切换到外部时钟

    N76e003切换到外部时钟的资料很少(因为N76e003的片子是不支持无源晶振的,有源晶振的成本又很高,所以网上很少有对N76e003的介绍).有图有真相: 代码如下: main.c #includ ...

  6. stm32外部时钟源8M换成12M后库函数相应修改总结

    前言 在做“自制继电器上位机控制软件”项目的时候,下位机用到USB虚拟串口,将以前写好的USB虚拟串口程序移植到下位机,发现程序计算机无法识别到虚拟串口STMicroelectronics Virtu ...

  7. MapReduce Service更换集群外部时钟源,仅需10步

    摘要:MapReduce Service 集群使用NTP进行时钟同步.本文简要介绍了MapReduce Service集群NTP机制及NTP的配置方式. 本文分享自华为云社区<MapReduce ...

  8. 小记同学一次奇葩的DNS欺骗实验失败经历

    这是一个DNS欺骗实验,使用kali的ettercap.有受害者.攻击者(虚拟机).Web服务器三台机器.受害者的事124.16.70.105虚拟机的是124.16.71.48web服务器是124.1 ...

  9. Mac欺骗实验

    实验目的 1.掌握MAC欺骗的原理 2.学会利用MacMakeUp软件工具进行伪造源MAC地址的MAC欺骗. 实验内容 使用MacMakeUp伪造主机mac地址,进行mac欺骗实验. 实验环境描述 1 ...

随机推荐

  1. Android 异步开发之 AsyncQueryHandler 批量添加联系人

    AsyncQueryHandler: 官方解释是一个异步帮助类(A helper class to help make handling asynchronous ContentResolver qu ...

  2. 404 Note Found 队 Alpha8

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  3. CoreAnimation|动画

    IOS开发UI篇--IOS动画(Core Animation)总结 - CSDN博客 iOS动画,绝对够分量! - 简书 iOS动画篇:UIView动画 - 简书 iOS动画开发之五--炫酷的粒子效果 ...

  4. 使用属性Props完成一张卡片

    一:我们先安装bootstrap,为了使我们的样式好看些 cnpm  install bootstrap  --save 二:我们在index.js中引入bootstap Import ‘bootst ...

  5. Python绘制奥运五环

    绘制奥运五环主要涉及到Python中的turtle绘图库运用: turtle.forward(distance) 向当前画笔方向移动distance像素长度 turtle.backward(dista ...

  6. node 借助Node Binary管理模块“n”更新

    Node.js的版本频繁变化,如果有模块不能在你当前的Node版本上使用,需要升级Node环境 1)首先:查看当前node版本:node –v 2)安装n模块:npm install -g n 3)检 ...

  7. laychat聊天功能

    windows版本:1.直接下载laychat聊天室压缩包,并解压到PHPstudy本地PHP环境中去:2.进入E:\PHPTutorial\WWW\laychat-master\vendor\Wor ...

  8. Mysql数据库报错1264

    数据库报错 [Err] 1264 - Out of range value adjusted for column 'ID' at row 1 修改MYSQL下的my.ini, 将 sql-mode= ...

  9. Flume(2)-拓扑结构与Agent内部原理

    一. 拓扑结构 1. 串行模式 这种模式是将多个flume给顺序连接起来了,从最初的source开始到最终sink传送的目的存储系统.此模式不建议桥接过多的flume数量, flume数量过多不仅会影 ...

  10. 树莓派GPIO控制LED彩灯

    树莓派使用GPIO接口来控制LED灯,自制五彩炫光的节日彩灯. 1.硬件准备 a. 树莓派(Raspberry Pi)一个 b. 彩色RGB二极管 c. 杜邦线 d. 5V电源引脚 以上所有零件均可在 ...