0攻击背景
本篇文章通过对电动车锁车信号进行分析,实现在没有钥匙的情况下,轻松开锁电动车,本文章中用的是公司小伙伴的电动车
系统:Ubuntu、OShardware:HackRF、同事的电动车software:Gqrx、URH、GNURadio
一般遥控模块的发射功率较小,信号频率大体为433MHz或315MHz,我通过两种方式获取了这辆电动车钥匙的频率,并利用URH实现信号重放
1获取电动车频率我们需要知道电动车钥匙的信号频率,使用到的硬件工具是HackRF,HackRF是一款软件定义的无线电外围设备,能够发送或接收1MHz至6GHz的无线电信号,是一种开源硬件平台,可用作USB外设或编程用于独立操作
这里有两种获取信号频率的方法,第一种方法是通过Gqrx扫描获取,第二种是通过查看这款电动车钥匙的晶振获取
1.1利用Gqrx扫描获取频率Gqrx是一个开源软件定义的无线电接收器(SDR),由GNU和Qt图形工具包提供,在这里使用gqrx获取电动车钥匙信号频率,距离不能太远下载::
启动:在Terminal中输入gqrx
选择合适的设备,设置适合的Bandwidth(带宽)
长按电动车钥匙按键,可以看到信号的频率在315.056000Mhz左右
1.2查看晶振获取频率可以通过判断晶振的参数来确定钥匙的频率,通过对该牌子的电动车钥匙进行研究得到频率为315M
2信号重放因为电动车钥匙对电动车每次发射的解锁关锁操作的信号都是一样的,所以我们要进行信号重放首先要对遥控信号进行采集安装HackRF驱动brewinstallhackrf,输入hackrf_info查看是否安装成功
hackrf_transferUsage:-rfilenameTransmitdatafromfile.-wThisisforSDRFrequencyinHz[0MHzto7250MHz].[-iif_freq_hz]Front-LocalOscillator(LO)frequencyinHz[84MHzto5400MHz].[-mimage_reject]RX/TXRFamplifier1=Enable,0=Disable.[-pantenna_enable]RXLNA(IF)gain,0-40dB,8dBsteps[-ggain_db]TXVGA(IF)gain,0-47dB,1dBsteps[-ssample_rate_hz]Numberofsamplestotransfer(defaultisunlimited).[-camplitude]:1.75/2.5/3.5/5/5.5/6/7/8/9/10/12/14/15/20/24/28MHz,defaultsample_rate_hz.
长按电动车车钥匙进行信号收集
hackrf_
进行信号重放,在Terminal输入以下命令
hackrf_
也可以借助URH进行信号的录制与重放,这种方法适用于很多设备下载:(录制一个信号)
选择合适的设备、带宽、采样率等
进行信号重放
电动车解锁成功
3信号分析通过信号重放技术进行电动车开锁是需要提前录制好解锁信号进行的,我们可以分析一下如何在只有锁车信号的前提下进行解锁
首先使用URH分析一下信号内容,Modulation选择ASK,并获取数字信号
Modulation的几种选项:ASK:幅度键控,按载波的幅度受到数字数据的调制而取不同的值FSK:频移键控,按数字数据的值(0或1)调制载波的频率PSK:相移键控,按照数字数据的值调制载波相位
载波的幅度有两种变化状态,分别对应二进制的‘0’和‘1’
我们获取其中一段数字信号为:
1110111011101110100010001000100010001000100011101000100011101000111011101000100011101000100010001
补齐syn位在后面添加0得倒:
11101110111011101000100010001000100010001000111010001000111010001110111010001000111010001000100010000000000000000000000000000000
1527码对应时序图

码型分为两种,‘1’与‘0’,‘0’码是一个高低电平宽度比为t∶3t的脉冲,而“1”码是一个高低电平宽度比为3t∶t的脉冲,syn同步位为t∶31t
随便写一个py把数字信号通过1527解码得到除去SYN之前的24位是111100000001001011001000
前20位每个钥匙都不相同,后4位是控制码对应于不同的功能
我们知道‘1000’为开锁,通过修改数据尝试进行重放发现‘0100’为锁车
用GNURadio做个重放信号流图GNURadio是一个结合硬件用软件来定义无线电波发射和接收的方式,提供一个信号处理模块库,并通过建立一个流图把单个处理模块连接在一起形成一个无线电系统
在Ubuntu系统中下载:Terminal输入sudoapt-getinstallgnuradio=3.7.9.1-2ubuntu1运行:Terminal输入gnuradio-companion