0x01 由来
0x02 正题
2.1. 研究GPS协议
2.2. 制作GPS协议的信号
2.3. 发射GPS信号
0x03 总结
0x01 由来
每当你看见一个前沿的,不正经的事情,一定要想到与军事有关。
没错GPS欺骗曾经使用在军事中。
摘自《无线电安全攻防大揭秘》
2011年12月4日,美国的一架RQ-170无人机在伊朗领空飞行,伊朗军方并没有击落它,而是使用了某种GPS欺骗的方法使这架飞机乖乖的降落在伊朗东北步的Kashmar。这架完好的无人机为伊朗军方提供了一个极好的研究标本,他们从中获取了不少的技术和军事机密。
详细内容
然后没错,所有的应用都会从军事转为民用,比如说,被当做跑码机。
然后还有一些其他的,比如被要求打卡跑操场的大学生。
0x02 正题
OK,目的明确了,我们的任务是让GPS欺骗,让静止的手机误认为自己在跑操场。
收集一下自己的已有的知识,能确认这个是需要发射信号的,并且尽可能的不使用GPS信号捕捉。因为GPS信号捕捉,会有很麻烦的事情,比如录制近10分钟的信号,这个信号保存在本地,是个很大的内存。所以我们会想到如何编造GPS的信号呢?
- 研究GPS协议
- 制作GPS协议的信号
- 发射GPS信号
2#1. 研究GPS协议
GPS 定位是通过测距来实现的,GPS接收机要测量每颗卫星与它之间的距离,
距离=光速(c)*时间
从而将测距问题,转为测量时间的问题,
计算公式为:
其中:
:表示卫星信号达到接收机经过的时间。
、、:表示卫星到时所处于的地点。
c:表示光速
b:为了修正客户端时间的问题的修正量
一共4个未知数,所以一共需要4个GPS卫星,才能精确定位。
由此可得只要我们得到了(、、),(星位点)和(x,y,z),地面的点,我们就有可能获得需要的所有信息。
2#2. 制作GPS协议的信号
网上查找资料,果然,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
但是这种方法生成的可执行文件,生成的信息,只有5分钟(3000/10Hz/60),在程序中是被宏定义的,所以我们要删掉生成的可执行文件,将内容修改为15(156010Hz=9000)分钟,然后再次进行生成。
gcc gpssim.c -lm -O3 -o gps-sdr-sim -DUSER_MOTION_SIZE=9000
尝试执行一下:
./gps-sdr-sim
图片.png
2#2.2 获取地址信息
比如我们想要让手机以为自己在跑步。
我使用的是谷歌地球,进行制作.kml文件,生成轨迹图。然后利用SatGen这个软件进行转为NMEA格式的文件
详情参考:
FreeBuf
一些小提示:
- 尽量只包含一圈操场。
- 在设置SatGen的时候,去掉起点和终点的等待时间。这样就可以连贯的跑几圈了。
- 制作NMEA的时候可以多制作几个文件,配置不同的速度。
2#2.3 获取星位信息
星历信息,我们使用 RINEX 格式的 GPS 导航电文。
摘自GPS测量中常用数据规则
在这个FTP中可以找到我们要的信息。
NASA
NASA地址来源
下载brdc1110.18n。或者其他的信息。
2#3. 发射GPS信号
我们得到了 GPS报文 和 路径相关的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
接下来对参数进行解释:
-e:指定RINEX格式GPS导航报文
-g:使用NMEA格式轨迹文件
-T:指定日期时间,强制替换电子报文中卫星钟时间和星历时间
-b:HackRF 设置为8,BladeRF 设置为16
-o:输出文件名为 run1.bin。默认为gpssim.bin
图片来自FreeBuf
最后就是将信号发射。
当然我们使用GNURadio进行发射。
图片如下:
图片.png
在增益为15dB的时候,基本只有自己的手机能接受到,10米开外没有影响。
其中两个查看模块可以省略。
测试结果:
OPPO R9s在15秒左右成功被破解,软件为高德地图,并且速度正常。
但是使用一些运动类软件,比如KEEP,虽然能正常的改变定位,但是跑步速度非常慢。
目前认为KEEP使用了手机的惯性导航。
0x03 总结
似乎没啥能总结的,谈谈想法吧。虽然现实生活中使用GPS欺骗的应用并不多,但是问题产生了就要解决问题。比如核潜艇,在海底如果利用GPS导航的话,并且被安装了一个树莓派进行GPS欺骗,这个后果就非常严重了,那就会想到,GPS不行,我们就用自己的北斗呗,还不行那就用俄罗斯,欧洲的服务。但是这些都是不能解决根本性问题的。有GPS欺骗,那为什么不能有北斗欺骗。
这就是为什么我们国家要发展一些精密的仪器,比如惯性导航。这才是真正能应用在军事上的导航。
网友评论