re-sdr
Helps you capture and analyze wireless radio signals to understand how they work and recreate them.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
What this skill does
What it does:
- Captures wireless radio signals using special hardware like RTL-SDR or HackRF
- Analyzes the signal patterns to understand what frequency and type of signal it is
- Converts the radio signal into readable data
- Finds the structure and rules of wireless protocols used by IoT devices and remote controls
- Can replay captured signals back to test if they work
When to use it:
- You need to understand how a wireless remote control or sensor sends data
- You want to analyze signals from IoT devices on common frequencies like 433 or 868 MHz
- You need to figure out the protocol rules used by a wireless device
- You want to test if a captured signal can be replayed (only on authorized targets)
- You are analyzing weather stations, garage door openers, or similar wireless gadgets
SKILL.mdShow the author's original SKILL.md (not in English)
---
name: re-sdr
type: atomic
description: >
射频逆向:信号采集、频谱分析、解调、帧同步与协议恢复、重放。
触发词:SDR、射频、信号分析、解调、RTL-SDR、HackRF、无线协议、遥测。
---
# 射频信号逆向(SDR)
## 何时使用 / 何时不用
- 用:无线协议/遥控/遥测信号(IoT 无线、遥控器、遥测链路)、信号级协议恢复
- 用:433/868/915MHz ISM 频段传感器/遥控设备快速识别(`rtl_433` 自带解码器,见 [[commands]])
- 用:重放攻击验证(仅授权目标——先把帧解出来再重放,别盲放)
- 不用:有线协议(转 [[re-protocol]]);无线 IoT 协议已封装分析(转 [[re-iot-proto]])
- 不用:只分析已解调的数据流/应用层(直接 [[re-proto-rev]] / [[re-crypto-decrypt]])
- 不用:多通道同时监测(单 RTL-SDR 单通道;多通道需多设备或相位一致的采集方案)
## 工具准备
### RTL-SDR / HackRF(接收硬件)
- 选购指引:RTL-SDR(接收,低成本入门)/ HackRF(收发,重放需要)
- 驱动: `apt install rtl-sdr` / `brew install rtl-sdr`;HackRF: `apt install hackrf` / `brew install hackrf`
- 验证: 硬件插入后 `rtl_test` 或 `hackrf_info` 有输出
- 频率校准: `rtl_test -p` 挂几分钟读稳定 ppm 误差值,采集时 `rtl_sdr ... -e <ppm>` 补偿——频率偏移是解调乱码的首要原因
- 带宽差异: RTL-SDR 稳定带宽约 2.4MHz(理论 3.2MHz 不稳);HackRF 最高 20MHz、半双工——宽带采集/主动发射选 HackRF(见 [[gotchas]])
### GNU Radio(信号处理)
- Linux: `apt install gnuradio` / `pacman -S gnuradio`;macOS: `brew install gnuradio`
- Windows: 官方安装包
- 验证: `gnuradio-companion --version` 或 `grcc --version`
- 无头编译: `grcc flow.grc` 把流程图编译成可执行 Python 脚本——批量/重复解调链用文件管理比每次 GUI 拖线快
### Gqrx(频谱/接收 GUI)
- Debian/Ubuntu: `apt install gqrx-sdr`(注意包名带 -sdr 后缀);Arch: `pacman -S gqrx`;Fedora: `dnf install gqrx`;macOS: `brew install --cask gqrx`
- 验证: `gqrx --version`(或 GUI 能打开并看到频谱瀑布)
- 用途: 实时频谱/瀑布图快速定位活跃信号与中心频率,比命令行扫频直观
### inspectrum(频谱/时序可视化)
- Linux: `apt install inspectrum` 或源码编译;macOS: `brew install inspectrum`
- 验证: `inspectrum --version`
- 用途: 对录好的 IQ 文件做离线时域/频谱分析(找帧结构、符号宽度)
### Universal Radio Hacker (URH)(解调与帧恢复)
- 多平台: `pip install urh`
- 验证: `urh --version`
- 用途: 解调(调制识别)、位流分析(同步字/编码反转)、字段划分一体
### rtl_433(ISM 频段传感器解码)
- Debian/Ubuntu: `apt install rtl-433`;Fedora: `dnf install rtl-433`;macOS: `brew install rtl_433`(下划线);Arch: `pacman -S rtl_433`
- 验证: `rtl_433 -h` 列出支持设备列表(如 0: 通用协议族、1: 温湿度计……)
- 用途: 433/868MHz 气象站/温湿度/车库门等常见遥控协议一键解码
- 持续输出: `rtl_433 -F json -f 433.9M` 按 JSON 持续打印解码结果——长时间监测/采集多个设备信号时配合日志重定向
## 操作步骤
按顺序执行;仅限授权测试(红线:重放/交互需授权)。
1. **信号采集与频谱分析**:
```sh
# 示例(工具可替换):GNU Radio 或命令行采集
rtl_sdr -f 433.9M -s 1M capture.iq
```
- 先全频段扫(找活跃信号)→ 定中心频率与带宽 → 采集 IQ
- 扫描: `rtl_power -f 400M:470M:250k -g 40 -i 10 scan.csv`(输出 CSV,可用 gnuplot 画图)或用 Gqrx 瀑布图
- 调制识别:频谱形状(FSK 双峰/PSK 平坦/AM 载波);Gqrx 实时看,inspectrum 离线细看
- 采集参数: `rtl_sdr -f <频率> -s <采样率> -g <增益> -n <采样数> out.iq`;`-g 0` 自动增益
- 采样率原则: 采样率 ≥ 2×信号带宽——窄带遥控(几十 kHz)用 250k–1M 足够,别为省事开满 2.4M 徒增文件体积
2. **解调**:
- URH:加载 IQ → 自动/手动调制识别 → 解调出位流
- GNU Radio:按识别结果搭解调链(AM/FM/PSK/QAM/FSK)
- 快速监听: `rtl_fm -f 433.9M -M fm -s 22050`(FM 语音/FSK 音频监听,听/录音频辅助识别)
- 产出:解调位流(0/1 序列)
3. **帧同步与协议恢复**:
- URH 打开捕获文件 → 位流分析视图找同步字、试编码反转(NRZ/Manchester)
- 找同步字(重复模式/固定前缀)→ 定帧边界 → 字段划分(地址/长度/载荷/CRC)
- 多帧对照(重复发射)→ 不变字段=固定头、变化字段=数据/序号
- 位流转字节: 先确认位序(MSB/LSB first)与长度对齐(8 的倍数)——URH 默认按位显示,转字节前核对,否则字段划分全错
- 产出:帧结构表(字段偏移/长度/语义)
- 已知 ISM 设备: 先跑 `rtl_433 -f 433.9M -A`(`-A` 分析模式打印解出的脉冲序列与协议猜测)——常见协议(气象站/车库门/胎压)直接命中,省去人工恢复
4. **重放与交互**(授权场景):
- HackRF 回放捕获帧(重放攻击验证——仅授权目标):
```sh
hackrf_transfer -r capture.iq # 先采集(HackRF 口)
hackrf_transfer -t capture.iq -f 433.9M -a 1 -s 2M # 回放(-a 1 开放大器)
```
- 交互式:改字段重发(滚动码/加密需先分析算法——转 [[re-crypto-id]] / [[re-crypto-decrypt]])
- 重放前先验证采样率/增益与采集时一致——参数不匹配重放出去目标收不到(见 [[gotchas]])
5. **证据整理(收尾)**:IQ 文件、解调位流、帧结构表(字段偏移/长度/语义)、重放记录(时间/参数/结果)对照入档;结论写 [[analysis-contract]]——信号级证据(截图/波形)与协议级结论(帧结构)分开归档
## 跨域联合
- [[re-iot-proto]]:无线 IoT 协议衔接(MQTT/CoAP 等封装层)
- [[re-protocol]]:帧结构状态机重建衔接
- [[re-crypto-id]] / [[re-crypto-decrypt]]:载荷加密分析
- [[re-feedback]]:信号案例经验沉淀(脱敏后)
## 常见坑与陷阱
- **频率偏移/采样率错误**:现象——解调全乱码;原因——中心频率偏、采样率不匹配;对策——先用已知信号(FM 广播)校准
- **调制误判**:现象——FSK 当 PSK 解;原因——频谱特征相似;对策——对照时域波形(inspectrum)再定
- **重放需授权**:现象——未授权重放触发设备动作;原因——越界操作;对策——红线:仅授权目标
- **编码反转漏看**:现象——位流全反;原因——NRZ/Manchester 未识别;对策——试反相与编码模式组合
- **捕获不完整**:现象——帧被截断;原因——带宽不够/触发时机;对策——加宽带宽、延长采集、按同步字触发
- **RTL-SDR 镜像频率/带宽限制**:现象——采到的信号在错误频率出现、带宽超 2.4MHz 后解调全乱;原因——直接采样混叠、USB 传输不稳;对策——带宽 ≤2.4M、先 `rtl_test -p` 校准 ppm 后用 `-e` 补偿(详见 [[gotchas]])
- **URH 对复杂调制支持弱**:现象——DSSS/OFDM/跳频信号 URH 解不出稳定位流;原因——URH 面向简单调制(ASK/FSK/PSK)设计;对策——频谱扩展类信号改用 GNU Radio 搭完整解调链(解扩/均衡),URH 只做后续位流分析
- 硬件差异、工具特有坑见 [[gotchas]];命令速查见 [[commands]]
Ships with 2 supporting files:
- references/commands.md
- references/gotchas.md
Mirrored from the author's public source. Install counts from the open skills registry.