第三章 抓包环境搭建:硬件准备与软件安装
说实话,很多初学者一上来就问我:“老师,我能不能直接用电脑抓LTE空口的包?”我的回答很直接——不行。LTE的无线信号在空中飞,你的电脑网卡可听不懂。想抓空口的包,你得先搭一套能“听”懂LTE信号的硬件和软件环境。
这一章,我就带你把这套环境搭起来。咱们分两块走:硬件选型与准备、软件安装与配置。别急,一步步来。
3.1 硬件准备:你的“耳朵”长什么样
抓LTE空口包,核心硬件就是软件无线电设备(SDR)。说白了,它就是一个能收能发的射频前端,配合电脑里的基带处理软件,就能把空中的LTE信号变成我们能看懂的数据包。
目前主流的选择有两个:USRP 和 LimeSDR。我两种都用过,给你讲讲它们的区别和适用场景。
| 对比项 | USRP(以B210为例) | LimeSDR |
|---|---|---|
| 频率范围 | 70 MHz – 6 GHz | 100 kHz – 3.8 GHz |
| 带宽 | 最高 56 MHz | 最高 61.44 MHz |
| 接口 | USB 3.0 | USB 3.0 |
| 价格 | 约 ¥5000-8000 | 约 ¥2000-3000 |
| 稳定性 | 工业级,非常稳定 | 消费级,偶有掉线 |
| 适合场景 | 实验室、长期部署 | 个人学习、原型验证 |
3.2 天线与射频附件
光有SDR板子还不够,你得给它配上天线。LTE常用的频段有Band 1(2.1 GHz)、Band 3(1.8 GHz)、Band 40(2.3 GHz)等。你需要根据当地运营商的频段选择对应的天线。
- 全向天线:适合室内抓包,信号来自四面八方,简单方便。
- 定向天线(如八木天线):适合对准特定基站,增益高,信号干净。我在做外场测试时,经常用定向天线对准远处的基站,效果比全向天线好很多。
3.3 软件安装:让硬件“活”起来
硬件接好了,接下来就是装软件。我们的目标是搭建一套能抓包、能分析的环境。核心软件有三件套:Wireshark(抓包分析)、srsLTE(轻量级LTE协议栈)、OpenAirInterface(更完整的开源LTE实现)。
我个人习惯在Ubuntu 20.04 LTS上搭建,兼容性最好。下面我按步骤来。
3.2.1 安装Wireshark
Wireshark是抓包分析的主力。安装很简单:
sudo apt update
sudo apt install wireshark
安装过程中会问你是否允许非root用户抓包,选“是”。然后把你自己的用户加入wireshark组:
sudo usermod -a -G wireshark $USER
退出重新登录,就能直接用Wireshark抓包了。
3.2.2 安装srsLTE
srsLTE是一套轻量级的LTE协议栈,支持eNB、UE、EPC。我们主要用它来配合SDR做信号接收和解码。
安装依赖:
sudo apt install build-essential cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev
下载源码并编译:
git clone https://github.com/srsLTE/srsLTE.git
cd srsLTE
mkdir build
cd build
cmake ../
make
sudo make install
编译完成后,运行 srslte_install_configs.sh 生成配置文件。然后就可以用 srslte_ue 或 srsenb 启动对应的模块了。
sudo apt install libmbedtls-dev 安装系统包。建议用后者,省事。
3.2.3 安装OpenAirInterface(OAI)
OAI比srsLTE更完整,支持更多的LTE特性和更精细的协议栈控制。但安装也复杂一些。
OAI推荐使用Ubuntu 18.04,但20.04也能跑。安装步骤:
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
cd openairinterface5g
source oaienv
cd cmake_targets
./build_oai -I -w USRP
这里 -w USRP 表示使用USRP驱动。如果你用的是LimeSDR,需要改成 -w lime。
编译过程比较长,大概20-30分钟。编译完成后,会在 cmake_targets/lte_build_oai/build 下生成可执行文件。
uname -r。如果版本不对,升级内核再试。
3.4 环境验证:看看能不能抓到包
软件都装好了,怎么知道环境是不是通的?我一般用srsLTE的 cell_search 工具做快速验证。
把SDR插上电脑,接好天线,运行:
cd srsLTE/build
sudo ./srslte/examples/cell_search -f 2120000000
这里的 -f 2120000000 是频率,单位Hz,对应LTE Band 1的中心频点。如果环境正常,你会看到类似这样的输出:
Found cell Cell ID: 123, CP: Normal, PRB: 50, Ports: 2, PSS: 456, SSS: 789
看到“Found cell”就说明你的硬件和软件都正常工作了。如果没找到,先检查天线连接、频点设置,再确认SDR驱动是否加载成功。
3.5 整体架构图
下面这张图展示了我们搭建的抓包环境整体架构。从天线接收信号,到SDR数字化,再到软件解码,最后进入Wireshark分析,一条完整的链路。
3.6 常见问题与解决
搭建环境时,我遇到过不少坑。这里列几个最常见的,你遇到了可以直接对照着查。
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| cell_search找不到小区 | 频点设置错误、天线没接好、SDR驱动未加载 | 检查频点是否对应当地LTE频段;重新插拔天线;运行 sudo uhd_find_devices 确认USRP被识别 |
| Wireshark看不到LTE协议 | 缺少LTE解析插件 | 安装srsLTE或OAI后,其自带的 .lua 插件会自动注册到Wireshark。如果没生效,手动加载:Tools → Lua → Load |
| 编译srsLTE报错“找不到FFTW” | 依赖库未安装 | 运行 sudo apt install libfftw3-dev 后重新编译 |
| OAI编译卡在“Building oai”超过30分钟 | 网络问题导致依赖下载失败 | 检查网络连接,或使用代理。也可以手动下载依赖包放到 cmake_targets/download 目录 |