环境介绍
硬件:
ESP32
:处理无线通信协议和控制逻辑
CC1101
:可以发送信号和接收信号
R828D
:只能接收信号,不能发送
杜邦线 :母对母*8
软件:
URH
:用于无线电协议的分析、解码和重新播放的开源工具
cc1101-tool
:用于配置和控制 CC1101
无线收发芯片的调试工具
gqrx
:用于无线信号的接收和解调
Arduino IDE
:用于对ESP32
硬件烧录程序
SDRSharp
:用于信号频率分析
WindTerm
:用于连接串口
目标
1 | 通过重发包攻击,解锁电动车 |
R828D使用教程
Windows
下载https://zadig.akeo.ie/
安装驱动
使用SDRSharp.exe
软件和urh
进行监听或分析捕获的信号
可以先通过SDRSharp.exe
分析出目标设备工作的频率,一般在315mhz
和433mhz
附近,如下图可以看到是在432.720MHz
附近
然后通过urh
捕捉信号分析,将信号保存分析
三种信号代表三种按钮
复制信号进行分析,可以看到三种信号
1 | 1000100011101110111011101110111010001000100011101110111010001000111010001000100010001000100011101 |
对信号进行转换1000 -> 0
,1110 -> 1
,可以看到只有后四位不同,最后的1
是SYN
码
1 | 0011111100011100100000011 |
通过urh
工具也可以看到
Linux
安装驱动,安装urh
,安装gqrx
1 | sudo apt update |
R828D
连接到虚拟机,结合urh
捕捉信号分析
ESP32连接CC1101
E07-M1101D
引脚ESP32
引脚描述GNDGND
地线连接,确保模块和ESP32
共地VDD3.3V
电源连接,使用ESP32
的3.3V
输出GDO0GPIO4
(可选)用于中断信号检测CSNGPIO5SPI
的片选信号SCKGPIO18SPI
的时钟信号MOSIGPIO23SPI
的主机数据输出信号MISO/GDO1GPIO19SPI
的主机数据输入信号GDO2GPIO16
(可选)用于其他功能(如状态指示等)
ESP32芯片烧录
前期准备
在cc1101-tool
中下载cc1101-tool-esp32-wroom.ino
,安装Arduino IDE
,将ESP32
连接到电脑,安装驱动,
使用Arduino IDE
打开cc1101-tool-esp32-wroom.ino
,Arduino IDE
->工具->开发板->开发板管理器->搜索Espressif Systems
和ELECHOUSE_CC1101
安装,然后选择开发板
点击上传按钮,观察输出窗口
通过ESP32和CC1101发送无线电信号
使用工具连接串口
输入help
可以查看指令集
1 | show : Show content of recording buffer |
方式一:
recraw <microseconds>
监听指定间隔毫米的无线电信号
playraw <microseconds>
发送指定间隔毫米的无线电信号
方式二:
addraw <hex-vals>
向缓冲区写无线电信号
playraw <microseconds>
发送指定间隔毫米的无线电信号
总结
硬件
ESP32
双核处理器
- ESP32 内置 Tensilica Xtensa LX6 双核处理器,每个核心的最高频率可达 240 MHz,拥有高达 600 DMIPS 的计算能力,能够处理复杂的计算任务。
- 也有单核版本的 ESP32(例如 ESP32-S0WD)用于更加低功耗的应用场景。
Wi-Fi 和蓝牙双模通信
- Wi-Fi:支持 IEEE 802.11 b/g/n 协议,能够在 2.4 GHz 频段进行通信,具备 AP(接入点)、STA(站点)和 Mesh(自组网)模式,适合组建无线网络。
- 蓝牙:支持 Bluetooth 4.2 BR/EDR 和 BLE(Bluetooth Low Energy),适合短距离通信或蓝牙配件集成。支持蓝牙双模通信,可以在不消耗太多电量的情况下实现与蓝牙设备的互通。
- Wi-Fi 和蓝牙可以同时使用,这使得 ESP32 适用于连接各种无线设备。
低功耗设计
- ESP32 设计有多种低功耗模式,包括 深度睡眠****模式 和 休眠模式,能够将功耗降至微安级,非常适合电池供电的设备。
- 支持 ULP(超低功耗协处理器),在低功耗模式下可以处理简单任务,无需唤醒主 CPU,从而进一步降低功耗。
丰富的 I/O 接口
- 提供了丰富的外设接口,包括 GPIO、ADC(12 位)、DAC、SPI、I2C、UART、PWM 等,适配多种传感器和执行器。
- 支持 触摸传感接口 和 温度传感器,可以直接用于触摸和温度感知场景。
- 集成了 CAN 总线接口,便于在工业控制领域中应用。
大容量存储
- 集成 520 KB 的 SRAM 和 448 KB ROM,可用于存储程序和数据。
- 支持 外部 Flash 存储,容量通常为 4 MB 或更大,能够满足大规模应用的需求。
硬件加密功能
- ESP32 支持多种硬件加密算法,包括 AES、SHA、RSA 等,适用于实现安全的网络通信。
- 内置安全启动和闪存加密机制,能够保护设备的固件和数据安全。
集成的 RTOS 支持
- ESP32 自带 FreeRTOS 实时操作系统,支持多任务调度和系统资源管理。
- 多任务支持便于用户开发复杂应用,例如同时处理传感器数据、网络通信、数据处理等多种任务。
开发环境支持
- ESP32 可以在多种开发环境中进行编程,包括 Arduino IDE、**Espressif’s IDF(**IoT Development Framework)、MicroPython 等,适合不同层次的开发者。
- 官方提供的 Espressif IoT Development Framework (ESP-IDF) 是一个强大的开发工具包,支持 OTA(空中升级)和大量的开源库。
引脚图
CC1101
CC1101 支持多种频率频段,尤其适用于 315 MHz、433 MHz、868 MHz 和 915 MHz 的 ISM 频段
CC1101 支持多种调制方式,包括 **2-**FSK(二进制频移键控)、GFSK(高斯频移键控)、OOK(开关键控)和 MSK(最小频移键控)
CC1101 数据速率范围从 0.6 kbps 到 500 kbps,可通过寄存器配置来调节数据传输速度
CC1101 具有出色的接收灵敏度,可以达到 -120 dBm 左右,能够接收微弱的信号,从而提升通信距离
CC1101 使用标准的 SPI(串行外设接口) 与外部主控芯片(如单片机、ESP32 等)进行通信,SPI 接口的数据传输速率可达 10 Mbps
CC1101 具有自动频率校准功能,能够在频率偏移较大的情况下自动对频率进行校正,以提高接收信号的准确性
CC1101 通过配置寄存器控制芯片的工作状态和参数。常见的工作模式包括:
- **待机模式(**Idle Mode):低功耗模式,快速响应模式切换。
- 接收模式(RX Mode):进入接收状态,等待接收数据。
- 发送模式(TX Mode):发射状态,将 FIFO 中的数据发射出去。
- 睡眠模式(Sleep Mode):超低功耗模式,用于节能。
引脚图(这里在淘宝买的CC1101,但快递到了之后显示是E07-M1101D)
R828D
R828D 的频率覆盖范围广,通常支持 42 MHz 到 1002 MHz 之间的频段,可覆盖大量的无线电频率,如 FM 广播、VHF/UHF 电视信号、气象卫星信号等
R828D 内置低噪声放大器,可在接收微弱信号时进行放大,同时将噪声控制在较低水平,确保接收信号的质量
R828D 支持 自动增益控制(AGC) 功能,可以根据接收信号的强度自动调整增益,避免强信号过载导致的失真
R828D 采用宽带调谐器设计,支持多种调制方式,如 AM、FM、QAM 等,适配不同的无线电协议
R828D 的工作模式
- 低功耗接收模式:在维持较高的接收灵敏度的同时,将功耗控制在最低,以延长设备的使用寿命。
- 自动增益调节模式:根据接收信号的变化自动调节增益,适应不同信号源的需求。
- 数字调谐模式:支持多频段调谐和信号调制格式的解码,用于不同的无线协议接收。
参考链接:
https://lanvnal.com/2019/01/22/yi-ci-dui-dian-dong-che-yao-chi-de-xin-hao-fen-xi/