reverse-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok609hecl1pq6qi
2026-10-20 02:17:15 +03:00
commit da24c2bd20
2227 changed files with 443931 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
# SDR 命令速查与操作序列
SDR 链路按「采集 → 频谱 → 解调 → 位流/帧分析 → 重放」五段组织工具。命令以各工具官方文档为准(osmocom rtl-sdr、greatscottgadgets hackrf、rtl_433 官方 README、URH 文档)。
## 命令族速查
### 硬件验证
- `rtl_test [-s 采样率]`:RTL-SDR 自检(开机会自测,输出 `Successfully opened` 即 OK)
- `rtl_test -p`:测 ppm 频率误差(挂几分钟读稳定值,采集时 `-e <ppm>` 补偿)
- `hackrf_info`:HackRF 固件/序列号信息(`board_id`/`serial_number` 可见即 OK)
### 采集
- `rtl_sdr -f <频率> -s <采样率> -g <增益> -n <采样数> out.iq`:RTL-SDR 采集裸 IQ(8-bit 无符号交错 I/Q;`-g 0` 自动增益;`-e` 加 ppm 补偿)
- `rtl_sdr -f 433.9M -s 1M capture.iq`:基础采集(后续 GNU Radio / inspectrum / URH 都能读)
- `hackrf_transfer -r capture.iq -f 433.9M -s 2M -a 1`:HackRF 采集(`-a 1` 开 RX 放大器;采样率上限高,宽带场景用)
- `hackrf_transfer -t capture.iq -f 433.9M -s 2M -a 1`:HackRF 回放发射(重放攻击验证——仅授权目标)
### 频谱/监测
- `rtl_power -f 400M:470M:250k -g 40 -i 10 scan.csv`:扫频输出 CSV(频率/时间/功率),gnuplot/Excel 画瀑布
- `gqrx`:GUI 频谱+瀑布实时看;`rtl_fm`:快速听/录 AM/FM 音频(`rtl_fm -f 433.9M -M fm -s 22050`)
### 解调
- URH(GUI): `urh` → 打开 IQ → Signal 视图自动/手动调制识别 → Demodulate → 位流视图
- GNU Radio: `gnuradio-companion` 搭解调链(RTL-SDR Source → 滤波器 → 解调器 → 位流);`grcc flow.grc` 无头编译成 Python 脚本
- `rtl_433 -f 433.9M -A`:ISM 设备一键解调+协议猜测(`-A` 打印脉冲序列与协议命中);`-F json` JSON 输出
### 帧/位流分析
- `inspectrum capture.iq`:离线频谱+时域(看帧结构、符号宽度、找同步字时域特征)
- URH 位流分析视图: 找同步字、编码反转(NRZ/Manchester)、字段划分
- `rtl_433 -R <协议号>`:限定协议族解码(`-h` 列表查协议号)
### 信号生成(授权场景辅助)
- GNU Radio 波形生成: 构建发射链回放/修改字段(HackRF Source 输出)
- `hackrf_transfer -t` 直接回放原始 IQ(不做修改时的最快路径)
## 常用操作序列(组合套路)
### 1. 全频段扫描 → 定位 → 采集
```
rtl_power -f 300M:500M:250k -g 40 -i 10 scan.csv # 找活跃频点
# CSV 里找稳定高功率频点 → gqrx 对该频点确认
rtl_sdr -f <频点> -s 1M -g 40 -n 8000000 cap.iq # 8M 采样 ≈ 8 秒(1M 采样率)
```
### 2. 未知遥控协议恢复(采集 → URH 全流程)
```
rtl_sdr -f 433.9M -s 1M -g 40 -n 8000000 cap.iq
urh → 打开 cap.iq → 调制识别(ASK/FSK)→ 解调 → 位流
找重复帧 → 标同步字 → 编码反转试验(NRZ/Manchester 组合)
多帧对照 → 字段划分(固定头/地址/长度/载荷/CRC)→ 帧结构表
```
### 3. 已知 ISM 设备快速识别(rtl_433 直解)
```
rtl_433 -f 433.9M -A # 分析模式:看协议猜测与脉冲序列
rtl_433 -f 433.9M -F json # 持续 JSON 输出(长时间监测)
# 命中协议 → 用 -R 限定 → 字段语义对照官方/社区解码器
```
### 4. 重放验证(仅授权目标)
```
hackrf_transfer -r cap.iq -f 433.9M -s 2M -a 1 # 用 HackRF 重新采集(保证采样率匹配)
hackrf_transfer -t cap.iq -f 433.9M -s 2M -a 1 # 原样回放
# 观察目标动作;失败先查采样率/增益是否与采集一致
# 改字段重放: GNU Radio 解调→改 bit→重新调制→hackrf_transfer -t
```
### 5. 解调位流 → 协议状态机重建(与 [[re-proto-rev]] 衔接)
```
URH 导出位流/字段 → 帧结构表(偏移/长度/语义)
多帧时序分析(重发/序号递增/ACK)→ 状态机假设 → 改字段重发验证
```
## 实现教训(内化)
- 采样率与带宽关系先算好:采样率 ≥ 2×信号带宽,窄带信号别开满 2.4M(文件大、没收益)
- 频率偏移先校准再采集:`rtl_test -p` 拿 ppm,`-e` 补偿——解调乱码时先怀疑频率而非调制识别
- 编码反转/位序是第二位流坑:NRZ/Manchester、MSB/LSB 都要试,URH 里一键切换成本低
- 多帧对照是帧结构恢复的核心方法:同一遥控按多次,不变字段=固定头,变化字段=数据/序号
- 已知设备先跑 `rtl_433 -A`:常见协议(气象站/车库门/胎压)自带解码器,别在人工恢复上浪费时间
- IQ 文件命名带频率/采样率/时间(如 `cap_433.9M_1M_20260825.iq`)——跨会话可复现
## 使用注意
- 全部在沙箱/授权环境内执行([[re-analyze/platform-tips]] 最高原则);发射/重放红线:仅授权目标
- 采集与重放参数(频率/采样率/增益)必须记录并保持一致
- 结论写 [[re-analyze/analysis-contract]];信号级证据(IQ/波形)与协议级结论(帧结构)分开归档

View File

@@ -0,0 +1,38 @@
# SDR 工具特有坑与边界
## 硬件坑(RTL-SDR / HackRF)
- **带宽上限不是标称值**:RTL-SDR 标称最高 3.2MHz,实际 2.4MHz 以上 USB 传输不稳定(掉采样/乱码)——常规采集用 ≤2.4M,宽带需求换 HackRF
- **镜像频率(镜像混叠)**:直接采样架构下,中心频率 ± 采样率/2 之外的能量会折叠到带内——强信号源附近出现「幽灵信号」时先怀疑镜像,用滤波器/换频率验证,别当成真实信号分析
- **ppm 频率误差**:RTL-SDR 晶振偏差(典型几十 ppm),频率越高偏移越大——`rtl_test -p` 测稳定值,采集加 `-e <ppm>`;窄带信号(遥控器类)对频率偏移最敏感
- **HackRF 半双工**:HackRF One 同一时刻只能收或发(半双工)——「一边录一边回放」做不到,先录后放;全双工需要更高级硬件
- **增益不当**:`-g` 过高削波(IQ 值顶到 255 饱和,解调全错)、过低淹没噪声——看 `rtl_sdr` 输出统计或瀑布图调节;自动增益 `-g 0` 是稳定起点
- **采样率不匹配(重放)**:回放参数(采样率/增益)与采集时不一致,目标收不到或解调错——重放前核对采集命令参数,最好用同一设备同一参数
## 信号分析坑
- **调制误判**:FSK 与 PSK 频谱相似(都像平坦带)——看时域(inspectrum)区分:FSK 有明确符号跳变、PSK 相位突变;先听/看瀑布再定解调方案
- **编码反转/位序**:位流全反(NRZ-I 类)或字节序反——URH 里试反相与编码组合;转字节前确认 MSB/LSB
- **载波偏移**:信号不在采集中心频率正中(偏出滤波器通带)解调质量差——采集前用 Gqrx 精调中心频率,或在解调链加频偏校正(GNU Radio `freq_xlating_fir_filter` 思路)
- **帧截断**:触发时机晚/带宽不够导致帧不全——延长采集窗口、按同步字触发(GNU Radio 触发块)、多采集几段取完整帧
- **URH 对复杂调制支持弱**:DSSS/OFDM/跳频解不出稳定位流——这类信号用 GNU Radio 搭完整链(解扩/均衡),URH 只做位流后处理
- **干扰/谐波**:相邻频段强发射源(WiFi、FM 广播)谐波/互调落入目标频段——换频点或加带通滤波器(硬件)排除
## 工具坑(按工具)
- **gqrx 包名(Debian)**:包名是 `gqrx-sdr` 不是 `gqrx`(`apt install gqrx` 找不到包);Arch/Fedora 才是 `gqrx`
- **rtl_433 包名平台差异**:Debian `rtl-433`、Fedora `rtl-433`、macOS `rtl_433`(下划线)、Arch `rtl_433`——跨平台脚本里注意包名不统一
- **URH 版本节奏**:`pip install urh` 装的是 PyPI 最新版,更新节奏慢于主仓库——新硬件/新调制支持查 URH 仓库 release;GUI 与命令行接口以安装版本帮助为准
- **inspectrum 只读分析**:inspectrum 不能解调/导出位流——它是可视化确认工具,位流工作仍走 URH/GNU Radio
- **rtl_power CSV 解析**:输出按 `date,time,Hz_start,Hz_step,samples,power1,power2,...` 排列——写脚本解析时按行尾功率列处理,别错位
## 授权红线(工具无关)
- 采集接收侧一般无限制(法律上依地区规定);**发射/重放/干扰属于主动交互**——仅限授权目标与频段,先确认当地无线电法规
- 重放验证做前先记录目标行为基线(授权范围内),结果只用于分析结论,不扩散
- 滚动码/加密设备重放无效属正常(算法层面问题)——转 [[re-crypto-id]] / [[re-crypto-decrypt]] 分析算法,别反复盲放
## 使用注意
- 全部在沙箱/授权环境内执行([[re-analyze/platform-tips]] 最高原则);发射类操作默认沙箱物理隔离
- 采集参数(频率/采样率/增益/时间)完整记录;IQ 文件保留原始副本(重放/复分析复用)