zoukankan      html  css  js  c++  java
  • 使用RTL-SDR,从打开一个车门到批量打开车门

    在最近几年,入侵汽车在当代社会的黑客圈中成为热点,很多文章表明汽车产业还有很多东西等待完善,在本篇文章中,我会让你熟悉我一直研究的一些概念,以及如何在网状网络中使用一些便宜的部件渗透远程开门系统。

    软件无线电

    Software-defined radio(SDR)即软件无线电,它是一种实现无线通信的新概念和体制。其中已在硬件上被实现的组件(例如混频器,滤波器,放大器,调制器/解调器,检测器等)可以通过软件手段在个人计算机上或嵌入式系统中被代替,即很多功能是在软件平台上实现的。虽然SDR不是一个新概念,但是随着数字电子学的飞速发展,很多东西从理论可行转变为实际可行。

    然而大多数SDR设备都非常昂贵,特别是HackRF,BladeRF等等,如果你在寻找最便宜的方案,那么RTL2382U是个不错的选择,它们在Ebay上只需大约15美元。

    使用RTL-SDR,从打开一个车门到批量打开车门

    这是我的RTL2382U以及一个天线。

    使用RTL-SDR,从打开一个车门到批量打开车门

    这是另一个,我没有停止用它,因为我在用它后面的GPS模块。

    使用这个设备和Linux机器连接起来,然后用HDSDR查看按键时的实时情况。

    使用RTL-SDR,从打开一个车门到批量打开车门

    如你所见,宝马汽车制造商使用频段315Mhz,屏幕上的红线是我按下按钮时出现的。

    当受害者走向他们的汽车并且按下解锁键时,信号就会被发送到汽车,然后门就会被解锁,所以我们需要在这一切发生之前拦截所有交互。

    如何制作一个干扰器

    在这部分,我在ebay上购买了一些CC1101无线射频收发器,我们将通过这些,使用ardunio nano板来实施拦截和重放。

    使用RTL-SDR,从打开一个车门到批量打开车门

    如上图,我们有两个CC1101收发器连接在ardunio nano上,任何手机都可以为nano供电,根据其收发强度,其有效范围可达10米。

    这个没有太多技术含量,我修改了panstamp库来使其在315Mhz上工作,因为原本的库在433Mhz,868Mhz和915Mhz上工作,而这些频段我们都不需要。接下来我们需要找出315频段的频谱中的highbyte,middlebyte和lowbyte。

    使用RTL-SDR,从打开一个车门到批量打开车门

    低,中,高是三个寄存器,其值可以改变工作频率。我使用的是12:29:137。

    必须注意的是,在美国境内使用干扰器是非法的,这篇文章中的任何成功攻击的信息都被移除,它只提供了使用的基础且没有深入,感谢理解!

    #include "EEPROM.h"#include "cc1101.h"CC1101 cc1101;// The LED is wired to the Arduino Output 4 (physical panStamp pin 19)#define LEDOUTPUT 7// counter to get increment in each loopbyte counter;byte b;byte syncWord = 199;void blinker(){//digitalWrite(LEDOUTPUT, HIGH);//delay(100);//digitalWrite(LEDOUTPUT, LOW);///delay(100);}void setup(){//Serial.begin(38400);Serial.begin(9200);Serial.println("start");// reset the countercounter=0;Serial.println("initializing...");// initialize the RF Chipcc1101.init();cc1101.setSyncWord(&syncWord, false);cc1101.setCarrierFreq(CFREQ_315);cc1101.disableAddressCheck();//cc1101.setTxPowerAmp(PA_LowPower);//Serial.print("CC1101_PARTNUM "); //cc1101=0Serial.println(cc1101.readReg(CC1101_PARTNUM, CC1101_STATUS_REGISTER));//Serial.print("CC1101_VERSION "); //cc1101=4Serial.println(cc1101.readReg(CC1101_VERSION, CC1101_STATUS_REGISTER));//Serial.print("CC1101_MARCSTATE ");Serial.println(cc1101.readReg(CC1101_MARCSTATE, CC1101_STATUS_REGISTER) & 0x1f);}void send_data() {CCPACKET data;data.length=1000;data.data[0]=10;data.data[2]=1;data.data[3]=1;data.data[4]=0;//cc1101.flushTxFifo ();Serial.print(cc1101.readReg(CC1101_MARCSTATE, CC1101_STATUS_REGISTER));if(cc1101.sendData(data)){send_data();}}void loop(){send_data();}

    上面的代码是我在使用CC1101时发现的,对我们来说效果不是特别好。

    我首先要直接发送一个脉冲信号来阻止所有其他信号。在数据数组中填充1似乎是不错的主意。

    #include "EEPROM.h"#include "cc1101.h"CC1101 cc1101;CCPACKET data;void setup(){  // initialize the RF Chip  cc1101.init();    // For 315 MHz -> 0C1D8A  // 0C1D8A gives 315000061.03515625 Hz    cc1101.writeReg(CC1101_FREQ2,  0x0C); // Set Transmitter  cc1101.writeReg(CC1101_FREQ1,  0X1D); // freq to  cc1101.writeReg(CC1101_FREQ0,  0x8A); // 315 MHz    data.length = 100;  for(int a = 0; a < 100; a++) {    data.data[a]= 1;              // Filling the data array  }  }void loop(){  cc1101.sendData(data);}

    使用RTL-SDR,从打开一个车门到批量打开车门

    当受害者按下解锁按钮时,信号首先被拦截,然后干扰信号(我们称之为signalX)被捕获并保存,随后我们将使用GNURadio来从原始的钥匙信号信号(我们称之为signalY)中分离出我们创建的实际干扰信号。当受害者再次按下解锁按钮时,我们原来保存的signalX就被发送给汽车,signalY在稍后可以重放来解锁同一辆车。当信号被捕获时,你需要进行逆向才能发回。我使用GNURadio接收并解调原来的ASK信号,将其变成二进制调制波形,之后我可以用来重放。

    振幅偏移调变(ASK)是振幅调制的一种形式,表示数字数据作为载波振幅的变化。在ASK系统中,通过在T秒的持续时间内传送固定幅度载波和固定频率来表示二进制1。如果信号值1不发送,则为0。

    这个系统有用吗?

    有用,我在两辆车和一辆卡车上测试了这个,都成功的打开了车门。可怕的是,任何人都可以花费不多的美元来实现这个系统;更可怕的是,SDR设备的价格正在稳步下滑,在这种情况下获取一个定制的设备会变得更加容易。

    进阶

    经过批量攻击概念的证明,我写了一些东西,证明了这种攻击不仅可以一次攻击一辆车,还可以一次攻击数百辆的汽车。下面是一些关键点。

    购买捕获设备(我们称之为veh1),通过磁铁吸附在汽车下面,

    当对方的密钥信号被捕获和解调时,我们想通过网状网络发送这个信号。

    Wifi或者蓝牙的距离不足以传输信号,我会使用的LoRa(长距离低功耗无线通讯技术),其有效范围可达15英里。

    veh1连接到其中心设备,并将其二进制调制波形发送出去。

    如果能搭建一个类似发送包的网络就更好了,给每一个设备一个名字,这样一来你就知道那个设备对应的是哪辆车了。

    收集数据:车辆名称,颜色,位置和重放攻击数据。

    将其放置在任何车辆上,中央设备可以在几分钟内完成。

  • 相关阅读:
    Educational Codeforces Round 20 D. Magazine Ad
    Educational Codeforces Round 20 C. Maximal GCD
    紫书第三章训练2 暴力集
    Educational Codeforces Round 20 B. Distances to Zero
    Educational Codeforces Round 20 A. Maximal Binary Matrix
    紫书第三章训练1 D
    紫书第一章训练1 D -Message Decoding
    HAZU校赛 Problem K: Deadline
    Mutual Training for Wannafly Union #8 D
    紫书第三章训练1 E
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/7446576.html
Copyright © 2011-2022 走看看