0%

noone的无线电设备-gps欺骗

偷了维队的hackrf拿来研究一下:

  • 准备工作

    安装依赖

    1
    sudo apt-get install git build-essential cmake libusb-1.0-0-dev liblog4cpp5-dev libboost-dev libboost-system-dev libboost-thread-dev libboost-program-options-dev swig pkg-config libfftw3-dev

    安装驱动

    1
    sudo apt-get install hackrf libhackrf-dev

    连接上hackrf,检测一下

  • gps-sdr-sim 项目

    原理是根据指定的卫星信息文件、坐标信息、采样频率等参数输出二进制的信号文件,将这个二进制文件导入到 hackrf 之类的无线电射频设备上实现GPS的伪造。

    1
    git clone https://github.com/osqzss/gps-sdr-sim.git

    gcc编译:

    1
    gcc gpssim.c -lm -O3 -o gps-sdr-sim
  • 静态坐标欺骗

    首先需要在hackrf上安装GPS外部时钟,不是我安的,没有图

    用这个命令判断是否安装成功,0x01 就是成功

    1
    hackrf_debug --si5351c -n 0 -r

    生成300秒的GPS仿真数据

    1
    ./gps-sdr-sim -e brdc0010.22n -l [纬度,经度,海拔] -b 8

    其中:

    -e 指定RINEX格式GPS导航电文文件

    -l 指定经纬度和海拔

    -b 指定采样精度(hackrf为8,blader为16)

    这个网站可以获取到任意地点的经纬度,随便点一个为例:

    经度113.4563027°,纬度34.6739698°

    注意 -e 指定的文件应该和下载的项目中的文件名相符

    随后会生成一个 gpssim.bin 文件

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

    其中 -f 指定当前频率为 1575420000 ,即民用GPS L1波段频率

    -e 指定星图,可以从nasa官网找到:

    eg: https://cddis.nasa.gov/archive/gps/data/daily/2017/019/17n/

    -s 指定采样速率为 2.6MHz

    -x 指定发射功率,开启天线增益,即 TX VGA(IF) ,最好在 0-10 左右

    -R 表示重复发送

    经测试 vivo iqq12huawei p60 均可以被欺骗,百度地图与高德地图亦可

    但是钉钉和飞书的打卡并不可以,推测是用了其他的定位办法

  • 动态坐标欺骗

    • 流程

      1. Google Earth Pro 制作运动轨迹坐标 kml 文件

      2. kml 文件用SatGen Trajectory Generation转换为 nmea 文件,在软件中进行调参

      3. gps-sdr-sim 将运动轨迹坐标 nmea 文件结合星图生成采样文件

      4. hackrf_transfer 发射欺骗信号

    • 运动轨迹坐标文件

      在谷歌地球里面随便创建一条路线,保存到项目并导出为 xml 文件

    • SatGen Trajectory Generation

      其是 SatGen 的一个极简版,会模拟真实的运动情况,比如拐弯会减速,起步和结束时会有停留

      1
      2
      3
      4
      5
      6
      7
      8
      9
      output                           数据更新率
      max longacc 最大纵向加速度
      max jerk 最大加速度
      max latacc 最大横向加速度
      max speed 最大速度
      stationary period 起步停留时间
      stationary period end 结束停留时间
      scenario distance 总路程长度
      total time 总耗时

      导入 xml 文件后进行调参,建议是加速度在5 g/s 以内,最大速度受限于加速度基本无法达到,除非路径是一条直线

      改完后点 `preview 可以看到速率图,随后可以生成 nmea 文件

    • 生成采样文件并启动欺骗

      1
      2
      ./gps-sdr-sim -e brdc0010.22n -g /home/noone/桌面/nmea.txt -b 8
      hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 1 -R
    • 注意事项

      这里对于生成的nmea文件要注意一下,前几千条不知道为什么一直是同一个点,导致模拟位置的时候刚开始会一直不懂,要等很长时间才动

      好像是因为手机连接上需要时间,所以就是这样了?但要等的时间有点太长了,手动删掉会比较好

      satgen 的问题,这里的起步停留时间设太长导致的:

      改小一点就行

      然后是绕圈跑的问题,在google地图里如果选择闭合会导致画的东西从路径变为多边形(),而多边形保存不了()

      所以建议是起点终点离得很近但不要闭合:

      想绕圈跑的话,就复制粘贴一下xml文件里这段内容就行:

  • 实测

    对某汽车进行了测试,在市郊户外无法成功干扰,在地下车库可以干扰,且手机上实时位置已被改变