概述
软件定义无线电(Software Defined Radio, SDR)是一种无线电广播通信技术,其核心理念是将传统硬件电路实现的无线通信功能通过软件来定义和实现。频带、空中接口协议和功能均可通过软件下载和更新来升级,无需更换硬件设备。这种灵活性使 SDR 成为无线通信安全研究、信号分析和协议逆向工程的重要工具。
SDR 系统分类
不同的 SDR 系统架构在性能、开发难度和成本之间各有取舍:
| 分类 | 核心处理器 | 实时性 | 开发难度 | 开发成本 | 适用场景 |
|---|---|---|---|---|---|
| 基于 FPGA 的 SDR | FPGA | 极强 | 高 | 高 | 高带宽、高吞吐率的通信系统 |
| 基于 DSP 的 SDR | DSP | 较强 | 高 | 高 | 信号处理密集型应用 |
| 基于 GPP 的 SDR | 通用处理器(PC) | 一般 | 低 | 低 | 安全研究、协议分析、教学 |
GPP(General Purpose Processor) 即通用处理器,可以简单理解为我们日常使用的电脑。基于 GPP 的 SDR 系统能够高效开发各种通信模块和通信系统,因为可以方便地基于各种编程语言和链接库来实现编码、调制等通信功能。其开发门槛和成本较低,开发周期短,便于调试,是目前最为通用的 SDR 系统实现形式。
基于 GPP 的 SDR 系统通常包含两部分:
- GPP(主机):运行信号处理软件(如 GNU Radio),负责基带信号处理
- 外设(SDR 硬件):负责射频信号的收发和模数/数模转换
常见 SDR 设备对比
| 设备 | 频率范围 | 带宽 | 采样率 | 接口 | 全双工 | 价格 | 适用场景 |
|---|---|---|---|---|---|---|---|
| RTL-SDR | 24MHz-1.7GHz | ~2.4MHz | 2.4MSPS | USB 2.0 | 否(仅接收) | ~$20 | 入门级监听、ADS-B |
| HackRF One | 1MHz-6GHz | 20MHz | 20MSPS | USB 2.0 | 否(半双工) | ~$300 | 安全研究、信号分析 |
| BladeRF | 300MHz-3.8GHz | 28MHz | 40MSPS | USB 3.0 | 是 | ~$400 | 全双工通信研究 |
| USRP B210 | 70MHz-6GHz | 56MHz | 61.44MSPS | USB 3.0 | 是 | ~$1,100 | 专业通信研发 |
| LimeSDR | 100kHz-3.8GHz | 61.44MHz | 61.44MSPS | USB 3.0 | 是 | ~$300 | 开源通信平台 |
HackRF One 硬件架构
HackRF One 是最常用的安全研究 SDR 设备之一,由 Great Scott Gadgets 开发。其主要芯片组成:
| 芯片型号 | 功能 | 规格 |
|---|---|---|
| LPC4320/4330 | 主控处理器 | ARM Cortex-M4,主频 204MHz |
| XC2C64A | CPLD | Xilinx CoolRunner-II 系列,1500 门 |
| MAX2837 | 射频收发器 | 2.3GHz ~ 2.7GHz 无线宽带 |
| RFFC5072 | 混频器 | 提供 80MHz ~ 4200MHz 本振 |
| MAX5864 | ADC/DAC | 8-bit,22MHz 采样率 |
| Si5351C | 时钟生成器 | I2C 可编程,800MHz 分频提供 40/50MHz 采样时钟 |
| MGA-81563 | 低噪声放大器 | 0.1 ~ 6GHz,3V,14dBm |
| SKY13317 | 射频开关(SP3T) | 20MHz ~ 6.0GHz,单刀三掷 |
| SKY13350 | 射频开关(SPDT) | 0.01 ~ 6.0GHz,单刀双掷 |
软件环境搭建
1. GNU Radio 安装
GNU Radio 是最主要的 SDR 信号处理软件框架,提供了丰富的信号处理模块。
1 | # 安装 GNU Radio 及相关工具 |
2. 通用依赖安装
在安装各 SDR 设备驱动之前,需要先安装通用的编译依赖:
1 | sudo apt-get install git build-essential cmake \ |
3. HackRF 驱动安装
1 | # 通过包管理器安装 |
安装完成后,可以使用以下工具:
| 命令 | 功能 |
|---|---|
hackrf_info |
查看 HackRF 设备信息 |
hackrf_transfer |
录制/发送 IQ 数据 |
hackrf_sweep |
频谱扫描 |
hackrf_spiflash |
固件刷写 |
4. BladeRF 驱动安装
1 | # 安装 BladeRF 驱动和工具 |
⚠️ 注意:安装固件和 FPGA 镜像时,需要根据实际的 BladeRF 设备型号选择对应的包。
5. USRP B210 驱动安装
Ettus USRP 使用 UHD(USRP Hardware Driver)作为驱动程序。
1 | # 方式一:通过包管理器安装(推荐) |
也可以从 Ettus 官网下载最新 Release 包进行编译安装:
- 官方下载页面:https://www.ettus.com/download
- 提供 Linux 和 Windows(VS 环境)的源码
- 同时提供设备固件刷写所需的镜像文件
常用工具链
| 工具 | 说明 | 安装方式 |
|---|---|---|
| GNU Radio | SDR 信号处理框架 | sudo apt install gnuradio |
| GQRX | GUI 频谱分析器 | sudo apt install gqrx-sdr |
| gr-osmosdr | 通用 SDR 源模块 | sudo apt install gr-osmosdr |
| kalibrate | GSM 频率校准 | 源码编译 |
| gr-gsm | GSM 信号解码 | 源码编译 |
| Wireshark | 协议分析 | sudo apt install wireshark |
| inspectrum | IQ 数据可视化 | sudo apt install inspectrum |
| URH | 通用无线电黑客工具 | pip install urh |
安全提示
⚠️ 重要警告: SDR 技术涉及无线电频谱的接收和发射,使用前请务必注意:
- 未经授权在公共频段发射信号是违法行为
- 仅在屏蔽环境或已获授权的场景下进行发射实验
- 遵守所在地区的无线电管理法规
- 监听他人通信可能构成违法行为
- SDR 技术仅可用于合法的安全研究和教学目的
相关文章
本文是 SDR 系列的基础篇。SDR 作为底层硬件平台,支撑了 GSM 嗅探、GPS 欺骗、LTE 信号分析等多种安全研究场景。了解 SDR 的基本概念和设备选型是进行无线通信安全研究的前提。相关内容可参考 GSM、GSM 嗅探、GPS 欺骗、LTE、移动网络等文章。