美文网首页
0#3 GPS欺骗

0#3 GPS欺骗

作者: dogo_L1L | 来源:发表于2018-11-15 23:03 被阅读0次

    0x01 由来
    0x02 正题
    2.1. 研究GPS协议
    2.2. 制作GPS协议的信号
    2.3. 发射GPS信号
    0x03 总结

    0x01 由来

    每当你看见一个前沿的,不正经的事情,一定要想到与军事有关。
    没错GPS欺骗曾经使用在军事中。
    摘自《无线电安全攻防大揭秘》
    2011年12月4日,美国的一架RQ-170无人机在伊朗领空飞行,伊朗军方并没有击落它,而是使用了某种GPS欺骗的方法使这架飞机乖乖的降落在伊朗东北步的Kashmar。这架完好的无人机为伊朗军方提供了一个极好的研究标本,他们从中获取了不少的技术和军事机密。
    详细内容
    然后没错,所有的应用都会从军事转为民用,比如说,被当做跑码机。

    跑码机.png
    然后还有一些其他的,比如被要求打卡跑操场的大学生。

    0x02 正题

    OK,目的明确了,我们的任务是让GPS欺骗,让静止的手机误认为自己在跑操场。
    收集一下自己的已有的知识,能确认这个是需要发射信号的,并且尽可能的不使用GPS信号捕捉。因为GPS信号捕捉,会有很麻烦的事情,比如录制近10分钟的信号,这个信号保存在本地,是个很大的内存。所以我们会想到如何编造GPS的信号呢?

    1. 研究GPS协议
    2. 制作GPS协议的信号
    3. 发射GPS信号

    2#1. 研究GPS协议

    GPS 定位是通过测距来实现的,GPS接收机要测量每颗卫星与它之间的距离,
    距离=光速(c)*时间
    从而将测距问题,转为测量时间的问题,
    计算公式为:

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

    其中:
    t_{s1}:表示卫星信号达到接收机经过的时间。
    x_{1}y_{1}z_{1}:表示卫星到时所处于的地点。
    c:表示光速
    b:为了修正客户端时间的问题的修正量
    一共4个未知数,所以一共需要4个GPS卫星,才能精确定位。

    由此可得只要我们得到了(x_{1}y_{1}z_{1}),(星位点)和(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
    一些小提示:

    1. 尽量只包含一圈操场。
    2. 在设置SatGen的时候,去掉起点和终点的等待时间。这样就可以连贯的跑几圈了。
    3. 制作NMEA的时候可以多制作几个文件,配置不同的速度。

    2#2.3 获取星位信息

    星历信息,我们使用 RINEX 格式的 GPS 导航电文。

    RINEX规则.png
    摘自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

    图片来自FreeBuf

    最后就是将信号发射。

    当然我们使用GNURadio进行发射。
    图片如下:


    图片.png

    在增益为15dB的时候,基本只有自己的手机能接受到,10米开外没有影响。
    其中两个查看模块可以省略。

    测试结果:
    OPPO R9s在15秒左右成功被破解,软件为高德地图,并且速度正常。
    但是使用一些运动类软件,比如KEEP,虽然能正常的改变定位,但是跑步速度非常慢。
    目前认为KEEP使用了手机的惯性导航。

    0x03 总结

    似乎没啥能总结的,谈谈想法吧。虽然现实生活中使用GPS欺骗的应用并不多,但是问题产生了就要解决问题。比如核潜艇,在海底如果利用GPS导航的话,并且被安装了一个树莓派进行GPS欺骗,这个后果就非常严重了,那就会想到,GPS不行,我们就用自己的北斗呗,还不行那就用俄罗斯,欧洲的服务。但是这些都是不能解决根本性问题的。有GPS欺骗,那为什么不能有北斗欺骗。
    这就是为什么我们国家要发展一些精密的仪器,比如惯性导航。这才是真正能应用在军事上的导航。

    相关文章

      网友评论

          本文标题:0#3 GPS欺骗

          本文链接:https://www.haomeiwen.com/subject/prkufqtx.html