Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
QCSuper — 通过 Diag 捕获 Qualcomm 基带的原始 2G/3G/4G/5G 蜂窝信令,输出 PCAP 供 Wireshark 使用,并暴露 EFS/内存诊断。 | Kitploit
工具/GitHubGitHub/p1sec/qcsuper
嵌入式系统安全数据包嗅探与分析内存取证网络取证移动取证无线安全移动安全
GitHubp1sec/qcsuper

QCSuper

通过 Diag 捕获 Qualcomm 基带的原始 2G/3G/4G/5G 蜂窝信令,输出 PCAP 供 Wireshark 使用,并暴露 EFS/内存诊断。

查看仓库
1.6k27927天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

QCSuper

QCSuper 是一款与基于 Qualcomm 的手机和调制解调器通信的工具,能够捕获原始 2G/3G/4G(部分型号支持 5G)无线电帧等数据。

它将允许你生成 PCAP 捕获文件,可通过已 root 的 Android 手机、USB 网卡或现有其他格式的捕获文件来实现。

使用 QCSuper 和 Wireshark 的截图

在安装之后,你可以将已 root 的手机通过 USB 连接,配合兼容设备使用时,操作简单到只需:```bash qcsuper --adb --wireshark-live

root@kitploit:~
或者,如果你已手动启用在手机上暴露 Diag 端口(具体步骤可能因手机调制解调器和制造商而异,请参阅下文说明),或者如果你插入了移动宽带上网卡:```bash
qcsuper --usb-modem auto --wireshark-live

它使用 Qualcomm Diag 协议(也称为 QCDM 或 DM,即诊断监视器)来与手机基带通信。

你愿意报告你的设备是否正常工作吗?你可以打开一个 Github issue。

目录

  • 安装
    • Linux 安装(PIP)
    • Linux 安装(UV)
    • Windows 安装
  • 支持的协议
  • 使用须知

附录:

  • 将 QCSuper 与 USB 调制解调器配合使用
  • 支持的设备
  • 使用 Diag 协议的相关工具

博客文章/演示: 介绍 QCSuper:一款用于在基于 Qualcomm 的手机上捕获 2G/3G/4G 空中流量的工具

更多文档:

  • Diag 协议
  • QCSuper 架构

安装

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 环境变量来跳过。

Linux 安装(PIP)

要以系统级方式从 PyPI 安装 QCSuper 的稳定版本,你可以运行以下命令:```bash

Install dependencies

sudo apt install python3-pip wireshark

Install stable QCSuper system-wide

sudo pip3 install --upgrade qcsuper --break-system-packages

root@kitploit:~
然后,你只需在终端中输入 `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)

在 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

root@kitploit:~
然后,运行以下命令来安装最新的稳定版本:```bash
uv tool install qcsuper

或者,您可以使用以下命令安装最新的开发版本:```bash uv tool install git+https://github.com/P1sec/qcsuper

root@kitploit:~
然后你只需在终端中输入这个:```bash
qcsuper

但是,如果您需要以 root 身份运行 qcsuper(例如因为您正在从调制解调器设备读取数据),则在使用 sudo 运行 uv 时,qcsuper 可能不在 $PATH 中,因此可能需要执行以下操作:```bash sudo env "PATH=$PATH" qcsuper

root@kitploit:~
如果你希望参与该工具的开发,可以使用以下命令下载源代码,然后在 `~/.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

Windows 安装

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 上运行):

  • 安装 Python 3.12(Windows 7 版本:Python 3.7)或更新版本(请务必勾选相关选项,将其加入 PATH、为所有用户安装并安装 pip)
  • 安装 Wireshark 4.2(Windows 7 版本:安装 Wireshark 3.6)或更新版本
  • 安装 libusb-win32 1.2.7.3(Windows 7 版本:libusb-win32 1.2.3.7)或更新版本
  • 重新启动命令提示符/终端,以确保 %PATH% 系统变量已更新。
  • 下载并解压 QCSuper

要安装所需的 Python 模块,请打开命令提示符并输入:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip

root@kitploit:~
仍在命令提示符中,使用 `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

Same, but using an USB modem/phone exposing a Diag serial port

directly over USB, in the case where the "--adb" mode does not

work directly:

- With a compatible Android phone where the Diag port over USB has

been manually enabled by the user (see the "How to manually enable

the diagnostic ports on my phone" section below for a summary of

how this may be possible with most Qualcomm-based models)

In this case, you may try:

$ qcsuper --usb-modem auto --wireshark-live

Or, if selecting manually the USB device corresponding to the

Diag-enabled phone turns to be requried:

$ lsusb (..) Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode $ qcsuper --usb-modem 1d6b:0003 --wireshark-live # With vendor ID:product ID... $ qcsuper --usb-modem 002:001 --wireshark-live # ...or with bus ID:device ID

Or, if selecting the configuration number and interface number (referred as "bConfigurationValue" and "bInterfaceNumber" in the USB desciprtors) turn to be required:

$ lsusb -v (..) $ qcsuper --usb-modem 1d6b:0003:1:0 --wireshark-live # With vendor ID:product ID:configuration:interface... $ qcsuper --usb-modem 002:001:1:0 --wireshark-live # ...or with bus ID:device ID:configuration:interface

- With a generic serial-over-USB device where the "usbserial" module has

loaded a /dev/ttyUSB{0-9} device corresponding to the diagnostic port:

$ qcsuper --usb-modem /dev/ttyUSB2 --wireshark-live

- With an Option device where the "hsoserial" module has loaded a

/dev/ttyHS{0-9} device corresponding to the diagnostic port:

$ qcsuper --usb-modem /dev/ttyHS2 --wireshark-live

root@kitploit:~
以下是 QCSuper 的当前使用说明:```
usage: qcsuper [-h] [--cli] [--efs-shell] [--efs-shell2] [-v] (--adb | --adb-wsl2 ADB_WSL2 | --tcp IP_ADDRESS:TCP_PORT | --usb-modem TTY_DEV | --dlf-read DLF_FILE |
               --json-geo-read JSON_FILE) [--info] [--pcap-dump PCAP_FILE] [--wireshark-live] [--memory-dump OUTPUT_DIR] [--dlf-dump DLF_FILE] [--json-geo-dump JSON_FILE]
               [--decoded-sibs-dump] [--reassemble-sibs] [--decrypt-nas] [--include-ip-traffic] [--start MEMORY_START] [--stop MEMORY_STOP]

A tool for communicating with the Qualcomm DIAG protocol (also called QCDM or DM).

options:
  -h, --help            show this help message and exit
  --cli                 Use a command prompt, allowing for interactive completion of commands.
  --efs-shell           Spawn an interactive shell to navigate within the embedded filesystem (EFS) of the baseband device.
  --efs-shell2          Spawn an interactive shell to navigate within the embedded filesystem (EFS) of the baseband device. Use the secondary filesystem known as "alternate".
  -v, --verbose         Add output for each received or sent Diag packet.

Input mode:
  Choose an one least input mode for DIAG data.

  --adb                 Use a rooted Android phone with USB debugging enabled as input (requires adb).
  --adb-wsl2 ADB_WSL2   Unix path to the Windows adb executable. Equivalent of --adb command but with WSL2/Windows interoperability.
  --tcp IP_ADDRESS:TCP_PORT
                        Connect to remote TCP service exposing DIAG interface.
  --usb-modem TTY_DEV   Use an USB modem exposing a DIAG pseudo-serial port through USB.
                        Possible syntaxes:
                          - "auto": Use the first device interface in the system found where the
                            following criteria is matched, by order of preference:
                            - bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=48/bNumEndpoints=2
                            - bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=255/bNumEndpoints=2
                          - usbserial or hso device name (Linux/macOS): "/dev/tty{USB,HS,other}{0-9}"
                          - COM port identifier (Windows): "COM{0-9}"
                          - "vid:pid[:cfg:intf]" (vendor ID/product ID/optional bConfigurationValue/optional
                            bInterfaceNumber) format in hexa: e.g. "05c6:9091" or "05c6:9091:1:0 (vid and pid
                            are four zero-padded hex digits, cfg and intf are canonical values from the USB
                            descriptor, or guessed using the criteria specified for "auto" above if not specified)
                          - "bus:addr[:cfg:intf]" (USB bus/device address/optional bConfigurationValue/optional
                            bInterfaceNumber) format in decimal: e.g "001:003" or "001:003:0:3" (bus and addr are
                            three zero-padded digits, cfg and intf are canonical values from the USB descriptor)
  --dlf-read DLF_FILE   Read a DLF file generated by QCSuper or QXDM, enabling interoperability with vendor software.
  --json-geo-read JSON_FILE
                        Read a JSON file generated using --json-geo-dump.

Modules:
  Modules writing to a file will append when it already exists, and consider it Gzipped if their name contains ".gz".

  --info                Read generic information about the baseband device.
  --pcap-dump PCAP_FILE
                        Generate a PCAP file containing GSMTAP frames for 2G/3G/4G, to be loaded using Wireshark.
  --wireshark-live      Same as --pcap-dump, but directly spawn a Wireshark instance.
  --memory-dump OUTPUT_DIR
                        Dump the memory of the device (may not or partially work with recent devices).
  --dlf-dump DLF_FILE   Generate a DLF file to be loaded using QCSuper or QXDM, with network protocols logging.
  --json-geo-dump JSON_FILE
                        Generate a JSON file containing both raw log frames and GPS coordinates, for further reprocessing. To be used in combination with --adb.
  --decoded-sibs-dump   Print decoded SIBs to stdout (experimental, requires pycrate).

PCAP generation options:
  To be used along with --pcap-dump or --wireshark-live.

  --reassemble-sibs     Include reassembled UMTS SIBs as supplementary frames, also embedded fragmented in RRC frames.
  --decrypt-nas         Include unencrypted LTE NAS as supplementary frames, also embedded ciphered in RRC frames.
  --include-ip-traffic  Include unframed IP traffic from the UE.

Memory dumping options:
  To be used along with --memory-dump.

  --start MEMORY_START  Offset at which to start to dump memory (hex number), by default 00000000.
  --stop MEMORY_STOP    Offset at which to stop to dump memory (hex number), by default ffffffff.

Specifying - to pipe data from stdin or towards stdout is supported (gzipped content may not be detected).

如何 root 我的手机?

本 README 文件并非关于如何 root 手机(让手机允许您运行诸如 "su" 之类的命令)的指南。

在大多数较新的 Android 设备上,您必须首先使用手机开发者设置中的 "OEM/引导加载程序解锁" 选项来解锁引导加载程序,然后您可以使用诸如 Magisk 之类的工具,该工具将使您获得针对手机引导加载程序的修补镜像,然后您可以通过 fastboot 模式 将其加载到手机上。

当您的手机已 root 时,QCSuper 在基于 Qualcomm 的设备上更容易正常工作,但通常也有方法在不 root 手机的情况下启用手机上的 Qualcomm Diag USB 模式(也称为 "DM"、Diag Monitor)。这取决于您的手机厂商,并且通过例如在手机拨号键盘上输入一组神奇的数字组合来实现。请参阅下方"如何手动启用我手机上的诊断端口?"一节以了解更多详情。

在 root 手机之前,请记住,您可能还想在已解锁 OEM 的手机上加载备用恢复映像(例如 TWRP),以便使用 TWRP 等工具执行分区备份(这可能就像通过 Fastboot 加载映像、在 TWRP 设置中启用 ADB 链接,然后对 /dev/block/by-name 文件夹). 中的选定分区使用 adb pull 一样简单)。

有关在您的手机型号上获取 root 权限或启用 Diag 模式的具体说明,您可以在 XDA-developers 论坛上使用适当的关键字搜索相关信息。

如何手动启用我手机上的诊断端口?

在基于 Qualcomm/MSM 且搭载 Linux 内核 4.9 或更早版本的 Android 设备上(这大致包括 Android 12 之前的部分设备以及 Android 10 之前的所有设备),基于 Qualcomm 的 Android 设备通常包含一个名为 /dev/diag 的系统设备,该设备允许将数据传送到基带的诊断端口。

在基于 Qualcomm/MSM 且搭载 Linux 内核 4.14 或更高版本的 Android 设备上(这大致包括 Android 10 以来的部分设备以及 Android 13 以来的所有设备),/dev/diag 已消失,因为对应的 diagchar 模块在较新的 AOSP/Linux 内核中默认被禁用。

在搭载 Linux 4.9 或更早版本 MSM 内核的设备上,使用 --adb 标志时,QCSuper 将自动尝试通过 ADB 连接,然后尝试传输一个连接到 /dev/diag 设备的可执行工具,以便使用诸如 su -c /data/local/tmp/adb_bridge 之类的命令以 root 身份启动它,随后通过 TCP 与设备传输诊断数据(同时也通过 ADB 转发相应的 TCP 端口)。

在搭载 Linux 4.14 或更高版本 MSM 内核的设备上,使用 --adb 标志时,QCSuper 将尝试自动通过 ADB 连接,然后尝试使用诸如 su -c 'setprop sys.usb.config diag,adb' 之类的命令切换手机的 USB 端口模式,接着执行相当于 --usb-modem auto 标志的操作(见下文)。

--usb-modem <value> 标志允许 QCSuper 通过 USB 上的伪串行端口连接到 Qualcomm 诊断端口,与 ADB 无关,这是使用外部设备连接到基于 Android 的手机的 Qualcomm diag 协议的最常见方式。

要使用 --usb-modem <value> 标志,必须在相应的手机上启用 Qualcomm 诊断端口,换句话说,手机应该事先已进行 USB 模式切换。

对设备进行 USB 模式切换的最常见方法是以 root 身份执行诸如 setprop sys.usb.config diag,adb 之类的命令,但也可能存在其他方法(对于某些手机厂商)来启用 Qualcomm 的 USB 诊断模式,例如参见此页面了解在某些设备上无需 root 即可启用 Diag 的可能方法——这通常意味着在手机拨号键盘上输入一组神奇的数字组合。

在其他设备上,也可能可以使用由手机厂商签名并具有系统相关权限的 APK 文件来在无需 root 的情况下启用 Diag 模式(例如,搜索适用于小米设备的相关 com.longcheertel.midtest APK)。

一旦您的设备已正确切换模式,通过 ADB 运行 getprop sys.usb.config 命令应显示包含 diag 的文本字符串。

然后,在您的计算机一侧,运行 lsusb(在 Linux 上)应显示一行提及您设备的信息,例如:``` Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode

root@kitploit:~
注意此输出中出现的 `001:076`(总线索引/设备索引标识符)和 `05c6:9091`(供应商 ID/产品 ID)信息。

一旦你获得了这些信息,**你可以尝试在 QCSuper 中使用诸如 `--usb-modem 05c6:9091` 或 `--usb-modem 001:076` 之类的标志**(请注意数字填充)。

如果这还不能确定,你可以使用 `lsusb -v -d 05c6:9091` 命令,该命令应产生详细输出,包括相应 USB 设备的 USB 配置、接口和端点:```
Bus 001 Device 027: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.01
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x05c6 Qualcomm, Inc.
  idProduct          0x9091 Intex Aqua Fish & Jolla C Diagnostic Mode
  bcdDevice            5.04
  iManufacturer           1 Xiaomi
  iProduct                2 Mi 11
  iSerial                 3 d94f4341
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0086
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          4 Default composition
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol     48 
      iInterface              0 
[...]

在设备未被正确检测到的情况下,QCSuper 允许你手动选择希望尝试连接的配置和接口的标识符(在原始 USB 描述符中分别标记为 bConfigurationValue 和 bInterfaceNumber)。

例如,--usb-modem 05c6:9091:1:0 标志将分别在相关设备上选择配置 1 和接口 0。 --usb-modem 05c6:9091:1:4 将使用配置 1 选择接口 4。

如果未指定配置和接口索引的详细信息,它将按优先顺序选择系统 USB 总线上符合以下条件的第一个接口描述符:

  • bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=48/bNumEndpoints=2
  • bInterfaceClass=255/bInterfaceSubClass=255/bInterfaceProtocol=255/bNumEndpoints=2

当使用 --usb-modem auto 标志时,将选择第一个暴露符合此标准的 USB 接口的设备;如有必要,在 Linux 上还会选择底层的 /dev/ttyUSB*(usbserial 模块)或 /dev/ttyHS*(hso 模块)字符设备,前提是设备已被内核模块检测并挂载(请参阅下方“将 QCSuper 与 USB 调制解调器配合使用”一节)。

另外,在 Linux 上,也可以使用 usbserial 模块手动创建与给定 USB 设备接口相对应的 /dev/ttyUSB* 端点,然后你即可使用 QCSuper 并通过诸如 --usb-modem /dev/ttyUSB0 之类的标志进行连接(这可能要求以 root 权限运行 QCSuper)。为此,你可以使用如下命令:``` sudo rmmod usbserial sudo modprobe usbserial vendor=0x05c6 product=0x9091

root@kitploit:~
## 将 QCSuper 与 USB 调制解调器配合使用

您可以使用 `--usb-modem <device>` 选项将 QCSuper 与暴露 Diag 端口的 USB 调制解调器配合使用,其中 `<device>` 是 Linux 上伪串行设备的名称(例如 `/dev/ttyUSB0`、`/dev/ttyHS2` 及其他可能)或 Windows 上 COM 端口的名称(例如 `COM2`、`COM3`)。

请注意,在大多数设置中,您需要以 root 身份运行 QCSuper 才能使用此模式,尤其是为了处理串口干扰。

如果您不知道 `/dev` 下哪些设备暴露了 Diag 端口,您可能需要逐一尝试多个设备。您可以尝试通过停止 ModemManager 守护进程(`sudo systemctl stop ModemManager`)并运行以下命令来自动检测:`sudo ModemManager --debug 2>&1 | grep -i 'port is QCDM-capable'`,然后按 Ctrl-C。

请注意,如果一开始您就无法通过例如 ModemManager 使用您的设备,那么很可能该设备并未完全配置好,它也无法与 QCSuper 配合使用。一些可能的坑包括:

  * 您没有为设备应用正确的[模式切换](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching)命令。
  
  * 如果您购买的设备之前插有来自其他运营商的 SIM 卡,您的设备可能被 SIM 卡锁定。您可能需要使用原运营商的解锁码,并将其像 PIN 码一样提交给设备:`sudo mmcli -i 0 --pin=<your_unlock_code>`

如果您的基于 Qualcomm 的 USB 设备默认不暴露 Diag 端口,您可能需要通过 AT 端口输入以下内容以启用 Diag 端口:```
AT$QCDMG

请注意,同一时间只能有一个客户端与 Diag 端口通信。这适用于两个 QCSuper 实例,或 QCSuper 与 ModemManager 实例。

如果您的系统上运行着 ModemManager,QCSuper 将尝试动态添加一条 udev 规则,以防止其访问 Diag 端口并重启其守护进程,因为这是目前实现此目的的最佳方式。关闭 QCSuper 时会移除该规则。

支持的设备

QCSuper 已成功在以下设备上测试通过:

  • Sony Xperia Z (手机) - 4G - root 并启用 adb 后开箱即用
  • Nexus 6P (手机) - 4G - root 并启用 adb 后开箱即用
  • ZTE MF823 (USB 调制解调器) - 4G - 可能需要将设备模式切换为 CDC-WDM,将设备设置为工厂模式,然后执行上述 AT 命令
  • ZTE MF667 (USB 调制解调器) - 3G,2011 - 应该开箱即用(可能需要进行模式切换)
  • Option Icon 225 (USB 调制解调器) - 3G,2008
  • Novatel Ovation MC998D (USB 调制解调器)
  • ZTE WCDMA Technologies MSM MF110/MF627/MF636 (USB 调制解调器)
  • ZTE 403zt (USB 调制解调器) - 4G
  • OnePlus One 和 3 (手机)
  • Andromax A16C3H (手机)
  • Samsung Galaxy S4 GT-I9505 (手机)
  • Virtual Access GW1150 - 使用 TCP 连接
  • Westermo Merlin 4600 - 使用 TCP 连接
  • Fairphone 5 - 查看完整指南

不过,其目标是在捕获功能上兼容尽可能广泛的基于高通芯片组的设备。

其他可用设备列表见:https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working"

欢迎通过提交 Github issue 来报告您的设备是否工作正常。

使用 Diag 协议的相关工具

还有一些其他实现了部分 Diag 协议的开源工具,用途各异:

  • ModemManager:Linux 上使用 USB 调制解调器的主要守护进程,实现了部分 Diag 协议(标记为 QCDM),用于获取 USB 调制解调器设备的基本信息。
  • SnoopSnitch(特别是 gsm-parser):主要是一款 Android 应用,旨在检测针对无线层的潜在攻击(IMSI 捕获器、伪基站等)。它还有一个辅助功能,可将部分信令流量捕获为 PCAP,但这与 QCSuper 提供的功能并不完全相同(例如,LTE 流量不会封装为 GSMTAP,设备支持也可能不同)。
    • diag-parser:一款 Linux 工具,源自 SnoopSnitch 的 PCAP 生成功能并有所改进,设计用于 USB 调制解调器。
  • MobileInsight:这款 Android 应用旨在解析高通和联发科设备输出的各种日志(不仅包含信令信息,还包括专有调试结构),并将其转储为特定的 XML 表示格式。它不提供面向用户的 PCAP(但以前曾使用 Wireshark 作为后端,将某些协议信息转换为 XML)。
  • qcombbdbg:一个针对高通基带的调试器,通过钩住允许写入内存的 Diag 命令来自行设置,适用于 Option Icon 225 USB 调制解调器。
  • OpenPST:一套与高通设备相关的工具,其中包括一个 GUI 实用程序,例如可以通过 Diag(EFS)读取小型嵌入式文件系统上的数据。
  • SCAT:一款具有类似 GSMTAP 生成能力的工具,以串口作为输入,同时支持三星 Exynos。
下载工具