射频信号逆向(SDR)

SkillDev tools

射频逆向:信号采集、频谱分析、解调、帧同步与协议恢复、重放。 触发词:SDR、射频、信号分析、解调、RTL-SDR、HackRF、无线协议、遥测。

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the 射频信号逆向(SDR) skill

What this skill tells your AI

The instructions your AI receives, as published by dslsdzc/rev-skills in .claude/skills/re-sdr/SKILL.md and read by ahel’s review.

何时使用 / 何时不用

  • 用:无线协议/遥控/遥测信号(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_testhackrf_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 --versiongrcc --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. 信号采集与频谱分析

    # 示例(工具可替换):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 回放捕获帧(重放攻击验证——仅授权目标):
      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 文件、解调位流、帧结构表(字段偏移/长度/语义)、重放记录(时间/参数/结果)对照入档;结论写 [[re-analyze/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]]

Signals

GitHub stars
57
Forks
8
Last commit
Sep 2026

ahel review

  • K1binfo
    installs-packages
  • K1binfo
    installs-packages (in references/gotchas.md)

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Catalog kind
skill
Gateway key
re-sdr
Source
github.com/dslsdzc/rev-skills