0#3 GPS欺騙

0x01 由來
0x02 正題
2.1. 研究GPS協(xié)議
2.2. 制作GPS協(xié)議的信號
2.3. 發(fā)射GPS信號
0x03 總結(jié)

0x01 由來

每當(dāng)你看見一個前沿的,不正經(jīng)的事情,一定要想到與軍事有關(guān)。
沒錯GPS欺騙曾經(jīng)使用在軍事中。
摘自《無線電安全攻防大揭秘》
2011年12月4日,美國的一架RQ-170無人機在伊朗領(lǐng)空飛行,伊朗軍方并沒有擊落它,而是使用了某種GPS欺騙的方法使這架飛機乖乖的降落在伊朗東北步的Kashmar。這架完好的無人機為伊朗軍方提供了一個極好的研究標(biāo)本,他們從中獲取了不少的技術(shù)和軍事機密。
詳細(xì)內(nèi)容
然后沒錯,所有的應(yīng)用都會從軍事轉(zhuǎn)為民用,比如說,被當(dāng)做跑碼機。

跑碼機.png

然后還有一些其他的,比如被要求打卡跑操場的大學(xué)生。

0x02 正題

OK,目的明確了,我們的任務(wù)是讓GPS欺騙,讓靜止的手機誤認(rèn)為自己在跑操場。
收集一下自己的已有的知識,能確認(rèn)這個是需要發(fā)射信號的,并且盡可能的不使用GPS信號捕捉。因為GPS信號捕捉,會有很麻煩的事情,比如錄制近10分鐘的信號,這個信號保存在本地,是個很大的內(nèi)存。所以我們會想到如何編造GPS的信號呢?

  1. 研究GPS協(xié)議
  2. 制作GPS協(xié)議的信號
  3. 發(fā)射GPS信號

2#1. 研究GPS協(xié)議

GPS 定位是通過測距來實現(xiàn)的,GPS接收機要測量每顆衛(wèi)星與它之間的距離,
距離=光速(c)*時間
從而將測距問題,轉(zhuǎn)為測量時間的問題,
計算公式為:

L_{1}=c(t_{s1}-t_{\alpha }^{'})=\sqrt{(x-x_{1})^{2}+(y-y_{1})^{2}+(z-z_{1})^{2}}+ cb

其中:
t_{s1}:表示衛(wèi)星信號達(dá)到接收機經(jīng)過的時間。
x_{1}y_{1}z_{1}:表示衛(wèi)星到時所處于的地點。
c:表示光速
b:為了修正客戶端時間的問題的修正量
一共4個未知數(shù),所以一共需要4個GPS衛(wèi)星,才能精確定位。

由此可得只要我們得到了(x_{1}y_{1}z_{1}),(星位點)和(x,y,z),地面的點,我們就有可能獲得需要的所有信息。

2#2. 制作GPS協(xié)議的信號

網(wǎng)上查找資料,果然,gps-sdr-sim這個工具可以幫到我們。

2#2.1 安裝

按照官方給的方法

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

但是這種方法生成的可執(zhí)行文件,生成的信息,只有5分鐘(3000/10Hz/60),在程序中是被宏定義的,所以我們要刪掉生成的可執(zhí)行文件,將內(nèi)容修改為15(156010Hz=9000)分鐘,然后再次進(jìn)行生成。

gcc gpssim.c -lm -O3 -o gps-sdr-sim -DUSER_MOTION_SIZE=9000

嘗試執(zhí)行一下:

./gps-sdr-sim
圖片.png

2#2.2 獲取地址信息

比如我們想要讓手機以為自己在跑步。
我使用的是谷歌地球,進(jìn)行制作.kml文件,生成軌跡圖。然后利用SatGen這個軟件進(jìn)行轉(zhuǎn)為NMEA格式的文件
詳情參考:
FreeBuf
一些小提示:

  1. 盡量只包含一圈操場。
  2. 在設(shè)置SatGen的時候,去掉起點和終點的等待時間。這樣就可以連貫的跑幾圈了。
  3. 制作NMEA的時候可以多制作幾個文件,配置不同的速度。

2#2.3 獲取星位信息

星歷信息,我們使用 RINEX 格式的 GPS 導(dǎo)航電文。

RINEX規(guī)則.png

摘自GPS測量中常用數(shù)據(jù)規(guī)則
在這個FTP中可以找到我們要的信息。
NASA
NASA地址來源
下載brdc1110.18n。或者其他的信息。

2#3. 發(fā)射GPS信號

我們得到了 GPS報文 和 路徑相關(guān)的kml文件,利用這兩個文件我們可以生成一個完整的 GPS 信息。但是前提是我們安裝好 ./gps-sdr-sim。

./gps-sdr-sim -e /home/lee/Desktop/wireless_pic/GPS/brdc0530.18n/brdc0530.18n -g /home/lee/Desktop/wireless_pic/GPS/run1.txt -b 8 -T 2018/11/01,00:00:00 -o run1.bin

接下來對參數(shù)進(jìn)行解釋:
-e:指定RINEX格式GPS導(dǎo)航報文
-g:使用NMEA格式軌跡文件
-T:指定日期時間,強制替換電子報文中衛(wèi)星鐘時間和星歷時間
-b:HackRF 設(shè)置為8,BladeRF 設(shè)置為16
-o:輸出文件名為 run1.bin。默認(rèn)為gpssim.bin
圖片來自FreeBuf

圖片來自FreeBuf

最后就是將信號發(fā)射。

當(dāng)然我們使用GNURadio進(jìn)行發(fā)射。
圖片如下:


圖片.png

在增益為15dB的時候,基本只有自己的手機能接受到,10米開外沒有影響。
其中兩個查看模塊可以省略。

測試結(jié)果:
OPPO R9s在15秒左右成功被破解,軟件為高德地圖,并且速度正常。
但是使用一些運動類軟件,比如KEEP,雖然能正常的改變定位,但是跑步速度非常慢。
目前認(rèn)為KEEP使用了手機的慣性導(dǎo)航。

0x03 總結(jié)

似乎沒啥能總結(jié)的,談?wù)勏敕ò伞km然現(xiàn)實生活中使用GPS欺騙的應(yīng)用并不多,但是問題產(chǎn)生了就要解決問題。比如核潛艇,在海底如果利用GPS導(dǎo)航的話,并且被安裝了一個樹莓派進(jìn)行GPS欺騙,這個后果就非常嚴(yán)重了,那就會想到,GPS不行,我們就用自己的北斗唄,還不行那就用俄羅斯,歐洲的服務(wù)。但是這些都是不能解決根本性問題的。有GPS欺騙,那為什么不能有北斗欺騙。
這就是為什么我們國家要發(fā)展一些精密的儀器,比如慣性導(dǎo)航。這才是真正能應(yīng)用在軍事上的導(dǎo)航。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容