QCSuper 是一款与基于 Qualcomm 的手机和调制解调器通信的工具,能够捕获原始 2G/3G/4G(部分型号支持 5G)无线电帧等数据。
它将允许你生成 PCAP 捕获文件,可通过已 root 的 Android 手机、USB 网卡或现有其他格式的捕获文件来实现。

在安装之后,你可以将已 root 的手机通过 USB 连接,配合兼容设备使用时,操作简单到只需:```bash qcsuper --adb --wireshark-live
或者,如果你已手动启用在手机上暴露 Diag 端口(具体步骤可能因手机调制解调器和制造商而异,请参阅下文说明),或者如果你插入了移动宽带上网卡:```bash
qcsuper --usb-modem auto --wireshark-live
它使用 Qualcomm Diag 协议(也称为 QCDM 或 DM,即诊断监视器)来与手机基带通信。
你愿意报告你的设备是否正常工作吗?你可以打开一个 Github issue。
附录:
博客文章/演示: 介绍 QCSuper:一款用于在基于 Qualcomm 的手机上捕获 2G/3G/4G 空中流量的工具
更多文档:
QCSuper 近期在 Ubuntu LTS 22.04+ 上进行测试和开发,也已在 Windows 11 上使用。它依赖于一些 Python 模块。建议使用 Linux 以获得更好的兼容性。
要使用它,你的手机必须已 root 或通过 USB 暴露一个 diag 服务端口。为了检查与手机的兼容性,请在 GSMArena 等网站上查找手机型号,并检查其是否配备 Qualcomm 处理器。
要打开 QCSuper 生成的 PCAP 文件,你可以使用任何 Wireshark 2.x - 4.x 版本查看 2G/3G 帧,但查看 4G 帧至少需要 Wireshark 2.5.x(若要查看从 4G 帧中解密的单个 NAS 消息,则需要 2.6.x)。Ubuntu 目前为所有版本提供了足够新的构建版本。
5G 帧的解码已在 Wireshark 3.6.x 及以上版本 下测试,并将通过自动安装 Wireshark Lua 插件来完成(在 Windows 下位于 %APPDATA%\Wireshark\plugins,在 Linux 和 macOS 下位于 ~/.local/lib/wireshark/plugins)。如果你希望避免安装,可以通过设置 DONT_INSTALL_WIRESHARK_PLUGIN=1 环境变量来跳过。
要以系统级方式从 PyPI 安装 QCSuper 的稳定版本,你可以运行以下命令:```bash
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade qcsuper --break-system-packages
然后,你只需在终端中输入 `qcsuper` 即可运行 QCSuper。
为了将开发版安装到特定文件夹中,请打开终端并输入以下内容:```bash
# Download QCSuper
git clone https://github.com/P1sec/qcsuper
cd qcsuper
# Install dependencies
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade . --break-system-packages
然后,从 qcsuper/ 目录运行 QCSuper,在终端中使用 ./qcsuper.py 命令。
在 Linux 上,你可以使用 uv 包管理器来安装 QCSuper,它是 PIP 的现代替代方案。
首先,在终端中运行以下命令之一来安装 uv:```bash
sudo snap install --classic astral-uv # On Ubuntu
sudo dnf install -y uv # On Fedora
sudo pacman -S uv # On Archlinux, Manjaro
curl -LsSf https://astral.sh/uv/install.sh | sh # On Debian and others
然后,运行以下命令来安装最新的稳定版本:```bash
uv tool install qcsuper
或者,您可以使用以下命令安装最新的开发版本:```bash uv tool install git+https://github.com/P1sec/qcsuper
然后你只需在终端中输入这个:```bash
qcsuper
但是,如果您需要以 root 身份运行 qcsuper(例如因为您正在从调制解调器设备读取数据),则在使用 sudo 运行 uv 时,qcsuper 可能不在 $PATH 中,因此可能需要执行以下操作:```bash
sudo env "PATH=$PATH" qcsuper
如果你希望参与该工具的开发,可以使用以下命令下载源代码,然后在 `~/.local/bin` 中创建指向源代码目录的 QCSuper 符号链接:```bash
git clone https://github.com/P1sec/qcsuper
cd qcsuper
uv sync # Create .venv in the current directory
uv tool install -e . # Create symlinks into ~/.local/bin
QCSuper 可以在 Windows 上运行,但您应事先确保 Google 的 ADB 提示符能在您的机器上与您的设备正常配合运行,并且如果您的设备需要直接通过伪串行 USB 连接到 Diag 端口,您还应该手动创建 libusb-win32 过滤器(通过安装后可在“开始”菜单中访问的实用程序)。
(请注意,如果您切换设备模式,相关的 USB PID/VID 可能会发生变化,可能需要重新在 libusb-win32 过滤器创建实用程序中关联驱动——和/或视情况在 Windows 外围设备管理器中进行关联。)
在 Windows 上,您可能(除了 Google 的 ADB 内核驱动程序之外)需要根据您的手机型号下载并安装手机的 USB 驱动程序(这可能包括通用的 Qualcomm USB 驱动程序)。请在 Google 上搜索您的手机型号 +“USB driver”或“ADB driver”以获取说明。
然后,您需要确保可以使用 adb 访问您的设备。您可以在此处找到有关如何下载和设置 adb 的教程。adb.exe shell(或您使用的任何可执行文件路径,QCSuper 的 qcsuper/inputs/external/adb 文件夹中提供了一份 ADB 可执行文件的副本)命令必须显示一个提示符才能继续。
然后,请按顺序执行以下链接(该工具近期已在 Windows 11 上测试过——不保证能在 Windows 7 上运行):
%PATH% 系统变量已更新。要安装所需的 Python 模块,请打开命令提示符并输入:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip
仍在命令提示符中,使用 `cd` 命令进入包含 QCSuper 的目录。然后您可以执行命令(如果您从在线安装程序安装了 Python 3,则命令应以 `py qcsuper.py` 或 `py3 qcsuper.py` 开头;如果您从 Microsoft Store 安装,则应为 `python3.exe .\qcsuper.py`)。
如上所述,您可能需要通过“开始”菜单中提供的实用程序添加 `libusb-win32` 过滤器,以确保在模式切换后的设备上,QCSuper 能够看到对应 Diag 端口的接口(如果 ADB 驱动正常工作且设备已正确 root,则首次使用 `--adb` 标志运行工具的尝试失败应会触发模式切换)。
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="为小米手机的 Diag 端口添加 libusb-win32 过滤器的截图">
</p>
## 支持的协议
QCSuper 支持捕获少量移动无线协议。这些协议被放置在 [GSMTAP 头部](http://osmocom.org/projects/baseband/wiki/GSMTAP) 之后,该头部是一个标准头部(封装在 UDP/IP 中),用于标识协议;GSMTAP 数据包被放入 [PCAP 文件](https://wiki.wireshark.org/Development/LibpcapFileFormat) 中,可通过 Wireshark 进行完整分析。
2G/3G/4G 协议可划分为几个“层”:第 1 层涉及数字无线电调制和多路复用,第 2 层处理诸如分段和确认之类的事务,第 3 层是实际的信令或用户数据。
QCSuper 通常允许您在层 3 上捕获,因为这是使用 Wireshark 分析最实用的层次,也是 Diag 协议原生提供的内容(并且这里有一些有趣的信息)。
* 2G (GSM):第 3 层及以上(RR/...)
* 2.5G(GPRS 和 EDGE):第 2 层及以上(MAC-RLC/...),用于数据确认
* 3G(UMTS):第 3 层及以上(RRC/...)
* 此外,它还支持在单独的 GSMTAP 帧中重组 SIB(系统信息块,即向所有用户广播的数据),因为 Wireshark 目前还无法自行完成此操作:标志 `--reassemble-sibs`
* 4G(LTE):第 3 层及以上(RRC/...)
* 此外,它还支持将解密的 NAS 消息(这些消息以加密形式嵌入在 RRC 数据包中)放入附加帧中:标志 `--decrypt-nas`
默认情况下,不包含设备发送的 IP 流量,您只看到信令帧。您可以使用 `--include-ip-traffic` 选项包含您生成的 IP 流量(IP 在 2G/3G/4G 中基本上就是您的数据流量的第 3 层,不同之处在于其头部可能会被压缩(ROHC),并且可能包含一个很小的 PPP 头部)。
您发送的数据流量使用与信令流量不同的信道;该信道通过信令流量进行建立。因此,QCSuper 应向您显示与该信道如何建立相关的所有细节。
## 使用须知
要使用 QCSuper,您需要指定一个输入源(例如:`--adb`(Android 手机)、`--usb-modem`)以及一个或多个模块(`--wireshark-live` 用于打开 Wireshark,`--pcap-dump` 用于将流量写入 PCAP 文件,`--info` 用于获取有关设备的通用信息……)。
您可以输入的一些命令如下:```bash
# Open Wireshark directly, using a rooted Android phone as an input,
# for compatible phones:
$ qcsuper --adb --wireshark-live
# ^ this command is equivalent to (prefer this when running as root):
$ qcsuper --adb --pcap-dump - | wireshark -k -i -
# Same, but dump to a PCAP file instead of opening Wireshark directly
$ qcsuper --adb --pcap-dump /tmp/my_pcap.pcap
或者,如果它不够简单而无法使用:```bash