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

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

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

本文视频讲解视频:https://www.bilibili.com/video/BV1yf4y1S7go

Windows下钉钉打卡GPS欺骗视频:https://www.bilibili.com/video/BV1F54y1R7Y1

目录

一、Ubuntu系统下操作步骤

步骤1:实验准备

步骤2:下载编译代码

步骤3:生成GPS数据

步骤4:发射数据

二、Windows系统下操作步骤

Step 1: install the Python 2.7.13 software

Step 2: install PothoSDR software

Step 3: install the driver for hackrf one via Zadig.

Step 4: Employing GPS Windows executable program to conduct an experiment

三、可能碰到的问题

1、windows下驱动问题

2、欺骗不成功

四、联系方式


 

一、Ubuntu系统下操作步骤

实验环境:

硬件平台---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所示。【注意:目前我们最新的时钟模块做的比之前的更加精巧了,而且下图中HackRF One的黄色框的插针也去掉了,所以也就不存在再用手掰插针的情况了。】

图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:生成GPS数据

在网站http://www.gpsspg.com/maps.htm【目前无法访问了】或者http://www.toolzl.com/tools/getGpsArea.html上查询一个你感兴趣的地方的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

二、Windows系统下操作步骤

Step 1: install the Python 2.7.13 software

第一步:安装Python 2.7.13软件

double click the 【python-2.7.13.amd64.msi】, then Next, choose the default for all actions.

双击【python-2.7.13.amd64.msi】,然后,安装过程中的安装路径以及其他内容都选择默认即可。

Step 2: install PothoSDR software

第二步:安装PothoSDR软件

double click the 【PothosSDR-2018.04.26-vc14-x64.exe】,then Next, choose the default for all actions. But the only one thing you need to do is that you must click “Add PothosSDR to the system PATH for all user”.

双击【PothosSDR-2018.04.26-vc14-x64.exe】,然后,安装过程中所有都选择默认,但是,注意一定要勾选“Add PothosSDR to the system PATH for all user”。

The main purpose of installing PothoSDR is to use Zadig, which is used for HackRF One windows driver.

安装PothoSDR的主要目的是利用Zadig,Zadig是用于安装Windows系统中的HackRF One驱动。

Alternatively, you can download zadig.exe directly from the web site (http://zadig.akeo.ie/) to install the HackRF One driver for Windows.

一种替代方法就是,你也可以直接从网址(http://zadig.akeo.ie/)下载Zadig.exe来安装windows系统中的HackRF One驱动。

Step 3: install the driver for hackrf one via Zadig.

第三步:安装HackRF在windows系统下的驱动程序Zadig。

Find the Zadig executable program, double it.

找到Zadig的快捷方式,双击打开。

click options---list All Devices

选择Zadig的Options,选择List All Devices。

Then you can see HackRF One in the drop-down list.

然后在下拉列表中选中“HackRF One”。

Click HackRF One, the click install driver.

选中“HackRF One”之后,点击安装驱动。

After the driver for HackRF One has been successfully installed, you can see a picture as following.

在成功安装完HackRF One的驱动之后,你会看到下图。

Step 4: Employing GPS Windows executable program to conduct an experiment

第四步:利用GPS Windows系统下的可执行程序【gps-sdr-sim.exe】做实验。

Next, open a cmd command terminal as this link:

然后,打开一个cmd命令行终端。

如果你的系统是windows 7,可以参考以下网页。

https://jingyan.baidu.com/article/8cdccae917abce315413cdd2.html

Then, you need type the following command,

然后,你可以在cmd终端中输入如下命令进入到你的【gps-sdr-sim.exe】所在的路径:

cd C:\gps-sdr-sim-master

这里,我的【gps-sdr-sim.exe】是存放在了\gps-sdr-sim-master文件夹中,\gps-sdr-sim-master文件夹是存放在了C盘的根目录下,具体的路径根据你的需要来修改。

you can copy and paste the above command, if all of you installing operation is the same as I do.

你如果文件存放的路径与我完全一样,你也可以复制粘贴我的这条命令。

Then, you can type the following command to generated your forged GPS file.

然后,你可以通过输入以下命令来生成你想生成的GPS坐标点文件。

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

After running the above command, you can find a 【gpssim.bin】file in your gps-sdr-sim-master folder.

运行完上述命令后,你会在gps-sdr-sim-master文件夹中看到多出来了一个【gpssim.bin】文件,这就是你想生成的GPS坐标点文件。

Then, you can type the following command to send the data from gpssim.bin.

然后,你可以通过运行下述命令来发射数据。

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

The experiment will not always succeed, it depends lots of Internal and external factors. Such as the strength of the real signal in the environment, or you own mobile GPS receiver (not all these receiver can be cheat)

这个实验并不是永远能成功的,这可能跟多种外在和内在因素有关,例如你实验周围真实GPS信号的强度大小,你的设备可能会由于做了防护或者其他原因无法被欺骗。

如果需要【gps-sdr-sim.exe】,可以联系!

钉钉打卡实验截图如下:

三、可能碰到的问题

1、windows下驱动问题

windows下使用时如果驱动程序安装不正确的话,则可能会碰到如下的问题:

将libusb_win32 devices  卸载了,换成universal serial bus devices 就好了。

2、欺骗不成功

如果你的实验没有成功,那么你首先试试以下三种方法:

(1)增加发射功率

加大发射功率,即将上述命令-x后边的“0”修改为10或者20或者30之类的。

(2)重新生成数据

如果增加功率还是不能成功,那么再考虑是不是你的数据生成的有问题,重新生成一下试试。

(3)替换星历文件为较新的星历文件

即从ftp://cddis.gsfc.nasa.gov/pub/gps/data/daily/找到brdcXXXX.XXn文件压缩包下载后解压。文件的命名规则如下:

假如上述三种方法尝试后都无法成功,则可以考虑换个接收设备试试。因为根据用户的测试结果反馈,在相同的测试环境下,有些手机型号确实不容易成功,可能你的设备做了防护或者其他原因无法被欺骗。

四、联系方式

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值