偷了维队的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,检测一下
-
原理是根据指定的卫星信息文件、坐标信息、采样频率等参数输出二进制的信号文件,将这个二进制文件导入到
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 iqq12
和huawei p60
均可以被欺骗,百度地图与高德地图亦可但是钉钉和飞书的打卡并不可以,推测是用了其他的定位办法
动态坐标欺骗
流程
用 Google Earth Pro 制作运动轨迹坐标
kml
文件将
kml
文件用SatGen Trajectory Generation转换为nmea
文件,在软件中进行调参gps-sdr-sim
将运动轨迹坐标nmea
文件结合星图生成采样文件hackrf_transfer
发射欺骗信号
运动轨迹坐标文件
在谷歌地球里面随便创建一条路线,保存到项目并导出为
xml
文件SatGen Trajectory Generation
其是
SatGen
的一个极简版,会模拟真实的运动情况,比如拐弯会减速,起步和结束时会有停留1
2
3
4
5
6
7
8
9output 数据更新率
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文件里这段内容就行:
实测
对某汽车进行了测试,在市郊户外无法成功干扰,在地下车库可以干扰,且手机上实时位置已被改变