用SDR实时伪造GPS信号
zx-165332017/05/01无线电 IP:广东

用开源项目gps-sdr-sim就可以干这个:XXXXXXXXXXXXXXXXXX/osqzss/gps-sdr-sim

不过原版的gps-sdr-sim只能输出一个I/Q信号文件,然后再用相关的软件来把这个I/Q信号文件用SDR发射出去。。没法实时地运行。。

于是fork过来改了一下,加了个用TCP流输出I/Q信号的功能,这样就能和Gnuradio的"TCP Source"连接起来,实时运行。。

2017-04-30 23-32-14屏幕截图.png

不过这样显然不够过瘾,因为原来的gps-sdr-sim只能使用静态的坐标位置或者路径文件。。这样就没法实时改变位置了。。于是又加上了个http的接口,这样就能使用网页地图,想去哪就去哪:

2017-04-30 23-56-48屏幕截图.png

用HackRF来发射,为了限制发射范围,关闭hackrf的RF放大,再加个20dB的衰减器:

IMG_20170430_233721.jpg

使用外部TCXO时钟,要不然HackRF自带的振荡器频率不够准确,信号根本没法被接收。。

IMG_20170430_233910.jpg

用手机接收:

Screenshot_2017-04-30-23-19-32-578_com.chartcross.gpstest.png

大概一分钟多就能3D FIX了。。

去上海 Screenshot_2017-04-30-23-22-54-218_com.autonavi.minimap.png

去杭州 Screenshot_2017-04-30-23-25-00-685_com.autonavi.minimap.png

北京某某门 Screenshot_2017-04-30-23-28-23-872_com.autonavi.minimap.png

因为用的是十几天前的星历文件,所以GPS时间很显然是错的。。不过可以用-T选项来强制替换信号中的日期/时间来解决。。

Screenshot_2017-04-30-23-41-55-271_com.chartcross.gpstest.png

下载:
attachment icon gps-sdr-sim.zip 9.46MB ZIP 619次下载

或者:XXXXXXXXXXXXXXXXXX/gym487/gps-sdr-sim-realtime

使用方法:

先用Gnuradio运行XXXXXXc(其中的sdr用的是设为hackrf的osmocom sink,需要换成自己的..)

然后参照XXXXXXXXX运行gps-sdr-sim(需要开启-n选项连接Gnuradio,开启-w选项连接地图服务器

例子:

<code>./gps-sdr-sim -e tro11110.17n   -n 1234 -v -d 3600 -w
</code>

然后cd进入mapserver目录,

<code>python ./mapper.py
</code>

运行地图服务器,访问 http://127.0.0.1:8080/static/XXXXXXXXXXXml 打开地图

然后就可以到处"旅游"啦~

单击地图移动位置


注:

百度地图上取到的坐标和实际坐标有几百米的偏差。。需要注意一下。。

[修改于 7年8个月前 - 2017/05/01 02:10:15]

来自:电子信息 / 无线电
37
2
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
20!Dopaminor
7年8个月前 修改于 7年8个月前 IP:四川
833589
hhh  前段时间流行的pokemon go gps伪造,很多类似的文章。
另外感觉天线需要一个外壳。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ry7740kptv
7年8个月前 IP:内蒙古
833591
话说GNU Radio开发有么有什么参考资料呢?
比如新开发一个硬件外设要和它对接,接口什么的~~~
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
7年8个月前 IP:广东
833619
引用 ry7740kptv:
话说GNU Radio开发有么有什么参考资料呢?
比如新开发一个硬件外设要和它对接,接口什么的~~~
官方wiki?
XXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXp/Main_Page#Developing_GNU_Radio
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
warmonkey
7年8个月前 IP:广东
833622
引用 radio:
用开源项目gps-sdr-sim就可以干这个:<XXXXXXXXXXXXXXXXXX/osqzss/gps-sdr-sim>
不过原版的gps-sdr-sim只能输出一个I/Q信号文件,然后再用相关……
用USRP B210回放,ublox NEO-6M NEO-8M 小米4 这些设备都无法接收
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
7年8个月前 修改于 7年8个月前 IP:广东
833624
引用 warmonkey:
用USRP B210回放,ublox NEO-6M NEO-8M 小米4 这些设备都无法接收
是不是没有用外部时钟源?
用了的话要注意下Gnuradio里的这个选项.. 2017-05-01 19-58-50屏幕截图.png

另外虽然没有用过USRP,但是貌似按照README的说法,USRP要用2.5MHz的采样率而不是默认的2.6MHz

HackRF and bladeRF require 2.6 MHz sample rate, while the USRP2 requires 2.5 MHz (an even integral decimator of 100 MHz).


所以要加个-s 2500000的选项并且把Gnuradio里的采样率也改过来..
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
bg8npk
7年8个月前 IP:四川
833627
看到了我局的天线23333
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ry7740kptv
7年8个月前 IP:内蒙古
833629
引用 radio:
官方wiki?
XXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXp/Main_Page#Developing_GNU_Radio
引用 radio:
官方wiki?
XXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXp/Main_Page#Developing_GNU_Radio
墙内表示比较痛苦。。。
与GNU Radio配套的好像有个gr-osmosdr,不过好像是Boost库写的,看不太懂。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
justinpiggy
7年8个月前 IP:美国
833631
引用 warmonkey:
用USRP B210回放,ublox NEO-6M NEO-8M 小米4 这些设备都无法接收
用B205mini+gps-sdr-sim配合自己写的轨迹生成器,iPhone/各种Android机器接收正常。。。而且发现iOS有偏心GPS时间的倾向,如果一旦被GPS欺骗了以后,很快系统时间就被改成GPS时间,而且关闭GPS欺骗,很长时间无法正常接收正常的GPS信号,时间也会很难改回来。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
奉旨泡面
7年8个月前 IP:湖南
833651
这个gps天线怎么调 3G的网分一直都调不好
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
RodTech
7年7个月前 IP:广东
833869
dc tone是自动bias消掉的吗
几年前那些库还不完善的时候 生成的流 看运气会有很高的dc tone,然后接收机就不认了,要手工修正
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
7年7个月前 修改于 7年7个月前 IP:广东
833873

dc tone是自动bias消掉的吗 几年前那些库还不完善的时候 生成的流 看运气会有很高的dc tone,然后接收机就不认了,要手工修正

dc tone是指频谱中间那个高高耸立的DC offset么?不清楚你用的库是是怎么样的。。我这个没有这样的现象。。从顶楼的频谱图也可以看出来。。 库源代码里生成I/Q信号有关的代码主要就这些:

每次循环把载波的相位步进一段,计算下一个采样点的信号:

<code>chan[i].carr_phase += chan[i].carr_phasestep;
</code>

步进长度由卫星初始化时确定:

<code>chan[i].carr_phasestep = (int)(512 * 65536.0 * chan[i].f_carr * delt);
</code>

步进时间delt为采样率倒数:

<code>delt = 1.0/samp_freq;
</code>

载波频率的计算:

<code>// Pseudorange rate.
	rhorate = (rho1.range - chan->rho0.range)/dt;

	// Carrier and code frequency.
	chan->f_carr = -rhorate/LAMBDA_L1;
</code>

由两次步进伪距的差值除以LAMBDA_L1(光速除以GPS L1的频率)得到。(产生多普勒偏移)

生成I/Q信号。。就是把数据比特和伪随机扩频序列还有增益分别和两路相差90度的载波信号乘到一起调制,然后把全部视野内的卫星信号叠加在一起:

<code>					iTable = (chan[i].carr_phase >> 16) & 511;
					ip = chan[i].dataBit * chan[i].codeCA * cosTable512[iTable] * gain[i];
					qp = chan[i].dataBit * chan[i].codeCA * sinTable512[iTable] * gain[i];

					// Accumulate for all visible satellites
					i_acc += ip;
					q_acc += qp;
</code>

显然正常情况下大约正负10kHz的载波信号,与1.023MHz的伪随机序列相乘会产生上下两个边带共2.046MHz带宽的信号的。。不会只在直流上形成一个尖峰。 这种情况姑且胡乱推测一下,这种情况应该是bug导致生成了一个或者多个C/A码一直为0或1的卫星?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
iamapighhh
6年4个月前 IP:美国
848613

谢谢楼主的帖子。当年实验室里一台GPS信号模拟发生器十几万,现在软件无线电就全搞定了。对了,楼主使用的安卓手机上定位的软件叫啥?

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
iamapighhh
6年4个月前 IP:江西
848614

谢谢楼主的帖子。当年实验室里一台GPS信号模拟发生器十几万,现在软件无线电就全搞定了。对了,楼主使用的安卓手机上定位的软件叫啥?

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
6年4个月前 IP:广东
848615
引用iamapighhh发表于13楼的内容
谢谢楼主的帖子。当年实验室里一台GPS信号模拟发生器十几万,现在软件无线电就全搞定了。对了,楼主使用...

GPS Test

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
smith
6年0个月前 IP:广东
852938

话说必须要TCXO吗,最近用AD9363的平台试着发射,没有TCXO,频率定为GPS的L1,但是奇怪的是用手机无法接收到,手机为华为平台。用RTLSDR观测到是有信号发出的

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
6年0个月前 修改于 6年0个月前 IP:广东
852939
引用smith发表于15楼的内容
话说必须要TCXO吗,最近用AD9363的平台试着发射,没有TCXO,频率定为GPS的L1,但是奇怪...

我用HackRF+安卓手机的测试结果是不用TCXO就无法被接收,用了就可以。。GPS接收机对信号频率准确性要求比较高,真正卫星上的信号是原子钟产生的,毕竟要用来进行多普勒/载波相位之类的测量。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
justinpiggy
6年0个月前 IP:美国
852954

USRP B205mini 是内置TCXO,实测无需用外部ref也可以。没想到HackRF板载晶振差距这么大。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
houjiezhuzi
5年9个月前 IP:陕西
855695

您好,请问一下,我使用您的项目文件去操作,用的硬件是Bladerf,但是在实际操作中,发现并不能欺骗,如果用原始文件生成制定坐标的文件可以欺骗(排除硬件问题),但是利用您提供的项目文件产生实时文件的时候,并不能成功欺骗,而且我将TCP的文件保存下来,重新发射,也并不能欺骗,请问有什么需要注意的,或者不同的么。时钟已经改为default。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
5年9个月前 修改于 5年9个月前 IP:广东
855700
引用houjiezhuzi发表于18楼的内容
您好,请问一下,我使用您的项目文件去操作,用的硬件是Bladerf,但是在实际操作中,发现并不能欺骗...

 没有用过BladeRF,方便讲下你的具体配置么?

因为按照主贴的操作在实时模式下并不会产生任何输出文件,所以感觉可能是配置的问题。(例如用BladeRF时不要用原项目的脚本,而应该把GnuRadio中流图的sink配置为BladeRF)

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
houjiezhuzi
5年9个月前 IP:陕西
855706
引用zx-16533发表于19楼的内容
 没有用过BladeRF,方便讲下你的具体配置么?因为按照主贴的操作在实时模式下并不会产生任何输出文...

微信截图_20190314185938.png

 

微信截图_20190314185918.png

 这是我的配置方案。

Bandwidth 改为2.5M(参考XXXXXXXXXXript里发射设置)

Device number没有写,gnuradio会自动识别板子进行发射。

其余命令没有任何改动。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
5年9个月前 IP:广东
855711
引用houjiezhuzi发表于20楼的内容
  这是我的配置方案。Bandwidth 改为2.5M(参考XXXXXXXXXXript里发射设置)...

感觉可能还是配置上的问题?

从原理上来讲,只要网页地图上不动,生成的数据就和通常的静止坐标的模式没有任何区别,应该不会产生这种无法使用的现象。

建议用GnuRadio搭框图读取那个可以正常欺骗的文件,用这个配置的sink发射看看?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
JM
5年8个月前 IP:四川
856267

如果在HackRF信号覆盖下我移动手机,会看到手机显示的坐标移动吗?

还是说手机显示的坐标一直是你设定的经纬度坐标?

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
5年8个月前 IP:广东
856268
引用JM发表于22楼的内容
如果在HackRF信号覆盖下我移动手机,会看到手机显示的坐标移动吗?还是说手机显示的坐标一直是你设定...

如果此时手机接收到的只有伪造的信号的话移动手机不会对位置产生影响,只会导致GPS获取的时间产生微小的偏移。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
JM
5年8个月前 修改于 5年8个月前 IP:四川
856318
引用zx-16533发表于23楼的内容
如果此时手机接收到的只有伪造的信号的话移动手机不会对位置产生影响,只会导致GPS获取的时间产生微小的...

经过你的提醒我想明白了,因为都是从一台HackRF板子出来,手机的移动只会改变△t的值,不会带来τ的变化。所以位置不会变化。

所以现在我有个想法,我是不是可以用一块板子模拟一个GPS卫星,这样用最少4个板子或者更多板子来模拟更多的GPS卫星,这样就可以组网,然后就手机移动,然后手机显示的位置有变化了吧?

理论上这样可行的吧?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
5年8个月前 修改于 5年8个月前 IP:广东
856321
引用JM发表于24楼的内容
经过你的提醒我想明白了,因为都是从一台HackRF板子出来,手机的移动只会改变△t的值,不会带来τ的...

理论上可行,但目的是什么?

gps位置的解算还涉及到gps各卫星的轨道参数等复杂的因素,如果这样做最后手机上显示的位置变化和实际的移动是对应不上的。

如果是做室内定位之类的话,有更可靠成熟的方案。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
helloword
5年8个月前 IP:广东
857012

感谢你的教程,但是我遇到了一个问题,使用-w参数,从网页获取经纬度能够正常欺骗手机,但是使用自己输入的经纬度却不行,比如这个示例命令:gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100 -n 1234 -d 3000,他会欺骗但是固定到一个日本附近的位置,即使我不带 -l参数它也是到那个位置,所以我觉得我手动指定的-l好像没有效果,是不是这个-n传输方式的不支持原生的那些-l,-g获取坐标方式,还是我的操作有什么遗漏点?我是用的是hackrf one。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
5年8个月前 IP:广东
857015
引用helloword发表于26楼的内容
感谢你的教程,但是我遇到了一个问题,使用-w参数,从网页获取经纬度能够正常欺骗手机,但是使用自己输入...

目前版本n选项默认使用w选项,l无效。

原作者设定的默认位置是日本东京。

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
helloword
5年8个月前 IP:广东
857107

这样啊,那要是想导入路径文件生成连续坐标,比如-g,-u,有没有办法实实现?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
5年8个月前 修改于 5年8个月前 IP:广东
857116
引用helloword发表于28楼的内容
这样啊,那要是想导入路径文件生成连续坐标,比如-g,-u,有没有办法实实现?

更新了一下github上的代码,现在能支持了。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
helloword
5年8个月前 IP:广东
857125

那真是太感谢楼主了

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
shanshan
5年5个月前 IP:浙江
860573
引用iamapighhh发表于12楼的内容
谢谢楼主的帖子。当年实验室里一台GPS信号模拟发生器十几万,现在软件无线电就全搞定了。对了,楼主使用...

当年GPS信号模拟发生器哪里买的😁

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
7N1ght
5年5个月前 IP:香港
861246

我用的USRP-B210信号没有发送成功,我的USRP没有GPSDO模块,请问是不是这个原因?

引用
评论(1)
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533作者
5年5个月前 IP:广东
861249
引用7N1ght发表于32楼的内容
我用的USRP-B210信号没有发送成功,我的USRP没有GPSDO模块,请问是不是这个原因?

可能是的。

建议加上GPSDO或者接入外部时钟基准

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
smith
5年5个月前 IP:广东
861260
引用7N1ght发表于32楼的内容
我用的USRP-B210信号没有发送成功,我的USRP没有GPSDO模块,请问是不是这个原因?

最好用实机linux系统测试,vbox之类的虚拟机usb传输速率太低,我用plutosdr+虚拟机可以发射,但是定位无效果,换成实机linux就没有问题了

引用
评论(1)
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
造化为工
4年9个月前 IP:湖北
873433
引用justinpiggy发表于8楼的内容
引用 warmonkey:用USRP B210回放,ublox NEO-6M NEO-8M 小米4 ...

似乎iOS更新了,目前纯GPS很难欺骗。

iphone 6s plus,iOS 12

飞行模式,打开定位。使用GPS信号,5分钟都没法定位(哪怕把GPS时间和地点改到和实际位置很接近也不行)

同时一起有一部android,很快就被骗了


单独iphone放在室外,就很容易定位

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
Musrela
2年11个月前 IP:北京
899397

您好,我使用USRP B210发送定点经纬度星历文件,可以进行GPS欺骗,但是使用您文中的方法,grc文件usrp配置也改了,没有装GPSdo时钟,发送地图位置,使用频谱仪看在1.57542G位置有功率发出,但是手机gps test却搜不到一个卫星定位,请问是时钟问题么,外部时钟是必要的么

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jiu
1年7个月前 IP:福建
919787

我的hackrf 中gps-sdr-sim指令中没有-n -w指令 请问是hackrf版本问题吗

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
zx-16533
进士 学者
文章
125
回复
2655
学术分
4
2010/08/22注册,3年6个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:未同步
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}