天天看點

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

本文内容、開發闆及配件僅限用于學校或科研院所開展科研實驗!

本文視訊講解視訊: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手機、華為Nova 2

實驗步驟:

步驟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的黃色框的插針也去掉了,是以也就不存在再用手掰插針的情況了。】

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

圖1 HackRF

具體的調整圖1種的黃框單排插針的方法為,将黃框中的從左邊開始的前三個插針輕輕的往上邊掰一掰即可,具體操作方法為1)先用一隻手指壓住如圖2中紅色箭頭所指的插槽底部,2)用另一個手指将黃框中的3個插針往黑色雙排插槽方向輕輕地掰一掰即可。然後插上GPS外部時鐘,檢查一下看看外部時鐘和插針是否還有接觸。

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式
使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

圖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資料

在網站上查詢一個你感興趣的地方的GPS經緯度資訊(例如我選了個如圖3所示的無錫東站:百度地圖:31.6032020000,120.4665760000),然後按照這個經緯度資訊來通過GPS仿真器生成GPS仿真資料。

推薦:https://tool.lu/coordinate/

在“坐标”欄輸入經緯度資料,注意區分

備用:http://www.toolzl.com/tools/getGpsArea.html

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

例如,本實驗想要模拟的地點是無錫東站,其緯度是31.603202,經度是120.466576,習慣上一般是緯度在前,經度在後,但是經度在前,緯度在後也可以。

我們可以通過百度的坐标拾取器:http://api.map.baidu.com/lbsapi/getpoint/index.html

來驗證一下這個經緯度是不是無錫東站。不過百度的坐标拾取器中,經度在前,緯度在後。

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

接下來,由于不同的定位軟體可能采用的坐标系稍有差別,我們還可以為了适應不同的定位軟體,在https://tool.lu/coordinate/中轉換坐标,實作WGS84、GCJ02和BD09坐标系的轉換。這幾個坐标系,雖然就差了幾個小數點位置,但是在地圖上可能會偏差1-2公裡。

WGS84坐标系 地球坐标系,國際通用坐标系
GCJ02坐标系 火星坐标系,WGS84坐标系加密後的坐标系;Google國内地圖、高德、QQ地圖 使用
BD09坐标系 百度坐标系,GCJ02坐标系加密後的坐标系
使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

【備注:如果要是欺騙時間,則可利用-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資料發送出去。

注意:網上之前的教程大部分都是用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所示。欺騙後的定位與預期的定位會有一定的偏差。

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

圖5,6,7

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

圖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的快捷方式,輕按兩下打開。

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

click options---list All Devices

選擇Zadig的Options,選擇List All Devices。

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

然後在下拉清單中選中“HackRF One”。

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

Click HackRF One, the click install driver.

選中“HackRF One”之後,點選安裝驅動。

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

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

在成功安裝完HackRF One的驅動之後,你會看到下圖。

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

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

第四步:利用GPS Windows系統下的可執行程式【gps-sdr-sim.exe】做實驗。

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

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

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

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】,可以聯系!

釘釘打卡實驗截圖如下:

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

三、可能碰到的問題

1、windows下驅動問題

windows下使用時如果驅動程式安裝不正确的話,則可能會碰到如下的問題:

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

将libusb_win32 devices  解除安裝了,換成universal serial bus devices 就好了。

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式
使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

2、欺騙不成功

如果你的實驗沒有成功,那麼你首先試試以下三種方法:

(1)增加發射功率

加大發射功率,即将上述指令-x後邊的“0”修改為10或者20或者30之類的。

(2)重新生成資料

如果增加功率還是不能成功,那麼再考慮是不是你的資料生成的有問題,重新生成一下試試。

(3)替換星曆檔案為較新的星曆檔案

即從ftp://cddis.gsfc.nasa.gov/pub/gps/data/daily/找到brdcXXXX.XXn檔案壓縮包下載下傳後解壓。

上邊的連結,如果打不開,或者不能用了,試試下邊的連結,随便注冊個賬号就能下載下傳了。

https://urs.earthdata.nasa.gov/oauth/authorize?client_id=gDQnv1IO0j9O2xXdwS8KMQ&response_type=code&redirect_uri=https%3A%2F%2Fcddis.nasa.gov%2Fproxyauth&state=aHR0cDovL2NkZGlzLm5hc2EuZ292L2FyY2hpdmUvZ25zcy9kYXRhL2RhaWx5Lw

檔案的命名規則如下:

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

假如上述三種方法嘗試後都無法成功,則可以考慮換個接收裝置試試。因為根據使用者的測試結果回報,在相同的測試環境下,有些手機型号确實不容易成功,可能你的裝置做了防護或者其他原因無法被欺騙。

四、聯系方式

使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式
使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式
使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式
使用HackRF和外部時鐘實作GPS欺騙實驗一、Ubuntu系統下操作步驟二、Windows系統下操作步驟三、可能碰到的問題四、聯系方式

繼續閱讀