Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
QCSuper — QCSuper is a tool communicating with Qualcomm-based phones and modems, allowing to capture raw 2G/3G/4G radio frames, among other things. | Kitploit
Herramientas/GitHubGitHub/p1sec/qcsuper
Embedded Systems SecurityPacket Sniffing & AnalysisMemory ForensicsNetwork ForensicsMobile ForensicsWireless SecurityMobile Security
GitHubp1sec/qcsuper

QCSuper

QCSuper is a tool communicating with Qualcomm-based phones and modems, allowing to capture raw 2G/3G/4G radio frames, among other things.

Ver Repositorio
1.6k279hace 28 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

QCSuper

QCSuper es una herramienta que se comunica con teléfonos y módems basados en Qualcomm, permitiendo capturar tramas de radio 2G/3G/4G (y 5G en ciertos modelos) en bruto, entre otras cosas.

Te permitirá generar capturas PCAP de ello usando ya sea un teléfono Android rooteado, un dongle USB o una captura existente en otro formato.

Captura de pantalla del uso de QCSuper junto con Wireshark

Después de instalarlo, puedes conectar tu teléfono rooteado por USB y usarlo, con un dispositivo compatible, es tan simple como:```bash qcsuper --adb --wireshark-live

root@kitploit:~
O, si has habilitado manualmente la exposición de un puerto Diag en tu teléfono (el procedimiento correspondiente puede variar según el módem y el fabricante de tu teléfono, consulta más abajo para más explicaciones), o si has conectado un dongle de banda ancha móvil:```bash
qcsuper --usb-modem auto --wireshark-live

Utiliza el protocolo Diag de Qualcomm, también llamado QCDM o DM (Diagnostic Monitor) para comunicarse con el módem de tu teléfono.

¿Estás dispuesto a informar de que tu dispositivo funciona o no? Puedes abrir un issue en GitHub.

Tabla de contenidos

  • Instalación
    • Instalación en Linux (PIP)
    • Instalación en Linux (UV)
    • Instalación en Windows
  • Protocolos compatibles
  • Aviso de uso

Anexos:

  • Usar QCSuper con un módem USB
  • Dispositivos compatibles
  • Herramientas relacionadas que usan el protocolo Diag

Entrada de blog/demo: Presentación de QCSuper: una herramienta para capturar tu tráfico aéreo 2G/3G/4G en teléfonos basados en Qualcomm

Más documentación:

  • El protocolo Diag
  • Arquitectura de QCSuper

Instalación

QCSuper se ha probado y desarrollado recientemente en Ubuntu LTS 22.04+ y también se ha usado en Windows 11. Depende de algunos módulos de Python. Se recomienda usar Linux para una mayor compatibilidad.

Para usarlo, tu teléfono debe estar rooteado o exponer un puerto de servicio diag por USB. Para comprobar la compatibilidad con tu teléfono, busca el modelo del teléfono en un sitio como GSMArena y verifica si tiene un procesador Qualcomm.

Para abrir archivos PCAP generados por QCSuper, puedes usar cualquier Wireshark 2.x - 4.x para tramas 2G/3G, pero necesitas al menos Wireshark 2.5.x para tramas 4G (y 2.6.x para mensajes NAS individuales descifrados fuera de las tramas 4G). Ubuntu actualmente proporciona una compilación lo bastante reciente para todas las versiones.

La decodificación de tramas 5G se probó con Wireshark 3.6.x y superior y se realizará mediante la instalación automática de un complemento Lua de Wireshark (en %APPDATA%\Wireshark\plugins en Windows o en ~/.local/lib/wireshark/plugins en Linux y macOS), que se puede evitar configurando la variable de entorno DONT_INSTALL_WIRESHARK_PLUGIN=1 si deseas evitarlo.

Instalación en Linux (PIP)

Para instalar la versión estable de QCSuper en todo el sistema desde PyPI, puedes ejecutar estos comandos:```bash

Install dependencies

sudo apt install python3-pip wireshark

Install stable QCSuper system-wide

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

root@kitploit:~
Después, simplemente puedes escribir `qcsuper` en tu terminal para ejecutar QCSuper.

Para instalar la versión de desarrollo en una carpeta específica, abre una terminal y escribe lo siguiente:```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

Luego, ejecuta QCSuper desde el directorio qcsuper/, usando el comando ./qcsuper.py en la terminal.

Instalación en Linux (UV)

En Linux, puedes instalar QCSuper usando el gestor de paquetes uv, que es una alternativa moderna a PIP.

Primero, ejecuta uno de estos comandos en tu terminal para instalar 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:~
Luego, ejecuta esto para instalar la última versión estable:```bash
uv tool install qcsuper

Alternativamente, puedes instalar la última versión de desarrollo usando este comando:```bash uv tool install git+https://github.com/P1sec/qcsuper

root@kitploit:~
Entonces puedes simplemente escribir esto en tu terminal:```bash
qcsuper

Sin embargo, si necesitas ejecutar qcsuper como root, por ejemplo porque estás leyendo datos desde un dispositivo módem, qcsuper puede no estar en $PATH cuando usas uv con sudo, por lo que esto puede requerir hacer algo como:```bash sudo env "PATH=$PATH" qcsuper

root@kitploit:~
Si deseas participar en el desarrollo de la herramienta, puedes usar estos comandos para descargar el código fuente y luego crear enlaces simbólicos a QCSuper en `~/.local/bin` hacia el directorio del código fuente:```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

Instalación en Windows

QCSuper puede ejecutarse en Windows, pero antes debe asegurarse de que el símbolo del sistema de ADB de Google se ejecute correctamente en su máquina con su dispositivo, y también debe crear manualmente los filtros libusb-win32 (mediante la utilidad accesible desde el Menú Inicio después de instalarla) en caso de que su dispositivo necesite conectarse directamente al puerto Diag a través de USB pseudo-serial.

(Tenga en cuenta que si cambia el modo de su dispositivo, el PID/VID USB asociado puede cambiar y puede ser necesario rehacer las asociaciones de controladores en la utilidad de creación de filtros libusb-win32 - y/o en el administrador de dispositivos periféricos de Windows dependiendo del caso)

En Windows, es posible que necesite (además de los controladores de kernel ADB de Google) descargar e instalar los controladores USB de su teléfono según su modelo (esto puede incluir controladores USB genéricos de Qualcomm). Busque en Google el modelo de su teléfono + "USB driver" o "ADB driver" para obtener instrucciones.

Luego, debe asegurarse de que puede acceder a su dispositivo mediante adb. Puede encontrar un tutorial sobre cómo descargar y configurar adb aquí. El comando adb.exe shell (o la ruta del ejecutable que utilice; hay una copia del ejecutable de ADB en la carpeta qcsuper/inputs/external/adb de QCSuper) debe mostrar un símbolo del sistema para continuar.

Luego, siga estos enlaces (la herramienta se ha probado recientemente en Windows 11 - no se garantiza que funcione en Windows 7) para:

  • Instale Python 3.12 (versión para Windows 7: Python 3.7) o más reciente (asegúrese de marcar las opciones para incluirlo en PATH, instalarlo para todos los usuarios e instalar pip)
  • Instale Wireshark 4.2 (versión para Windows 7: Instale Wireshark 3.6) o más reciente
  • Instale libusb-win32 1.2.7.3 (versión para Windows 7: libusb-win32 1.2.3.7) o más reciente
  • Reinicie su símbolo del sistema/terminal para asegurarse de que la variable de sistema %PATH% se haya actualizado.
  • Descargue y extraiga QCSuper

Para instalar los módulos de Python necesarios, abra su símbolo del sistema y escriba:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip

root@kitploit:~
Todavía en el símbolo del sistema, muévete al directorio que contiene QCSuper usando el comando `cd`. A continuación puedes ejecutar comandos (que deberían comenzar con `py qcsuper.py` o `py3 qcsuper.py` si instalaste Python 3 desde el instalador en línea, o `python3.exe .\qcsuper.py` si lo instalaste desde Microsoft Store).

Como se ha indicado anteriormente, es posible que tengas que añadir un filtro `libusb-win32` mediante la utilidad disponible en el menú Inicio para asegurarte de que la interfaz correspondiente al puerto Diag sea visible para QCSuper en el dispositivo con el modo cambiado (un primer intento fallido de ejecutar la herramienta con la opción `--adb` debería provocar un cambio de modo si el controlador ADB funciona y el dispositivo está correctamente rooteado).

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Captura de pantalla de cómo añadir un filtro libusb-win32 para el puerto Diag de un teléfono Mi">
</p>

## Protocolos compatibles

QCSuper permite capturar un puñado de protocolos de radio móvil. Estos protocolos se colocan después de una [cabecera GSMTAP](http://osmocom.org/projects/baseband/wiki/GSMTAP), una cabecera estándar (encapsulada en UDP/IP) que permite identificar el protocolo, y los paquetes GSMTAP se colocan en un [archivo PCAP](https://wiki.wireshark.org/Development/LibpcapFileFormat) que se puede analizar completamente con Wireshark.

Los protocolos 2G/3G/4G se pueden dividir en unas pocas "capas": la capa 1 se ocupa de la modulación y multiplexión de la radio digital, la capa 2 maneja cosas como la fragmentación y el acuse de recibo, la capa 3 es la señalización o los datos de usuario propiamente dichos.

QCSuper te permite, en la mayoría de los casos, capturar en la capa 3, ya que es la más práctica de analizar con Wireshark, y es lo que el protocolo Diag proporciona de forma nativa (y aquí hay información interesante).

* 2G (GSM): Capa 3 y superiores (RR/...)
* 2.5G (GPRS y EDGE): Capa 2 y superiores (MAC-RLC/...) para acuses de recibo de datos
* 3G (UMTS): Capa 3 y superiores (RRC/...)
  * Además, soporta el reensamblado de SIB (Bloques de Información del Sistema, los datos difundidos a todos los usuarios) en tramas GSMTAP separadas, ya que Wireshark actualmente no puede hacerlo por sí mismo: opción `--reassemble-sibs`
* 4G (LTE): Capa 3 y superiores (RRC/...)
  * Además, soporta colocar mensajes NAS descifrados, que están incrustados cifrados dentro de los paquetes RRC, en tramas adicionales: opción `--decrypt-nas`

Por defecto, el tráfico IP enviado por tu dispositivo no se incluye; solo ves las tramas de señalización. Puedes incluir el tráfico IP que generes usando la opción `--include-ip-traffic` (siendo IP prácticamente la capa 3 para tu tráfico de datos en 2G/3G/4G, con el detalle de que sus cabeceras pueden estar comprimidas (ROHC) y puede incluirse una pequeña cabecera PPP).

El tráfico de datos que envías utiliza un canal diferente del tráfico de señalización; dicho canal se establece mediante el tráfico de señalización; por lo tanto, QCSuper debería mostrarte todos los detalles relevantes sobre cómo se inicia este canal.

## Aviso de uso

Para usar QCSuper, especificas una entrada (p. ej.: `--adb` (teléfono Android), `--usb-modem`) y uno o más módulos (`--wireshark-live` para abrir Wireshark, `--pcap-dump` para escribir tráfico en un archivo PCAP, `--info` para obtener información genérica sobre el dispositivo...).

Algunos comandos que puedes escribir son:```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

O, si no es lo suficientemente simple para funcionar:```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:~
Aquí está el aviso de uso actual para 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.

Especificar - para canalizar datos desde stdin o hacia stdout es compatible (el contenido comprimido con gzip puede no detectarse).

¿Cómo hago root a mi teléfono?

Este archivo README no es una guía sobre cómo hacer root a tu teléfono (conseguir que tu teléfono te permita ejecutar comandos como "su").

En la mayoría de los dispositivos Android recientes, primero debes usar la opción "desbloqueo OEM/bootloader" disponible en los ajustes de desarrollador del teléfono para desbloquear el bootloader, y luego puedes usar una herramienta como Magisk que te permitirá obtener una imagen parcheada para el bootloader de tu teléfono, que luego podrás cargar en tu teléfono en modo fastboot.

QCSuper tendrá más posibilidades de funcionar fácilmente en tu dispositivo basado en Qualcomm cuando tu teléfono tenga root, pero a menudo hay formas de habilitar el modo USB Diag de Qualcomm (también conocido como "DM", Diag Monitor) en tu teléfono sin tener root. Esto depende de tu fabricante de teléfono y se logra, por ejemplo, escribiendo una combinación mágica de dígitos en el teclado de marcación del teléfono. Consulta la sección "¿Cómo habilitar manualmente los puertos de diagnóstico en mi teléfono?" a continuación para más detalles.

Antes de hacer root a tu teléfono, recuerda que también puedes querer cargar una imagen de recuperación alternativa como TWRP en tu teléfono con el OEM desbloqueado para realizar una copia de seguridad de particiones usando una herramienta como TWRP (puede ser tan simple como cargar la imagen mediante Fastboot, habilitar el enlace ADB en los ajustes de TWRP, y usar adb pull sobre las particiones seleccionadas en la carpeta /dev/block/by-name).

Para instrucciones específicas sobre cómo hacer root o habilitar el modo Diag en tu modelo de teléfono, puedes buscar información en el foro de desarrolladores de XDA con las palabras clave adecuadas.

¿Cómo habilitar manualmente los puertos de diagnóstico en mi teléfono?

En dispositivos Android basados en Qualcomm/MSM con kernel Linux 4.9 o anterior (esto incluye aproximadamente parte de los dispositivos hasta Android 12 y todos los dispositivos anteriores a Android 10), los dispositivos Android basados en Qualcomm normalmente contienen un dispositivo de sistema llamado /dev/diag que permite comunicar datos al puerto de diagnóstico del módem de banda base.

En dispositivos Android basados en Qualcomm/MSM con kernel Linux 4.14 o posterior (esto incluye aproximadamente parte de los dispositivos desde Android 10 y todos los dispositivos desde Android 13), /dev/diag desapareció, ya que el módulo diagchar correspondiente está deshabilitado por defecto en los kernels AOSP/Linux recientes.

En los dispositivos con kernel MSM Linux 4.9 o anterior, al usar el indicador --adb, QCSuper intentará conectarse mediante ADB automáticamente, luego intentará transferir una utilidad ejecutable que se conecta al dispositivo /dev/diag, para lanzarla como root usando un comando como su -c /data/local/tmp/adb_bridge, y posteriormente transmitirá los datos de diagnóstico con el dispositivo a través de TCP (también reenviando el puerto TCP correspondiente mediante ADB).

En los dispositivos con kernel MSM Linux 4.14 o posterior, al usar el indicador --adb, QCSuper intentará conectarse mediante ADB automáticamente, luego intentará cambiar el modo del puerto USB del teléfono usando un comando como su -c 'setprop sys.usb.config diag,adb', y después ejecutará el equivalente del indicador --usb-modem auto (ver más abajo).

El indicador --usb-modem <valor> permite a QCSuper conectarse al puerto de diagnóstico de Qualcomm a través de un puerto pseudo-serial sobre USB, independientemente de ADB, que es la forma más común de conectarse al protocolo diag de Qualcomm de un teléfono Android usando un dispositivo externo.

Para usar el indicador --usb-modem <valor>, el puerto de diagnóstico de Qualcomm debe estar habilitado en el teléfono correspondiente, es decir, el teléfono debería haber sido cambiado de modo USB previamente.

La forma más común de cambiar el modo USB de tu dispositivo es ejecutar un comando como setprop sys.usb.config diag,adb como root, pero puede haber otras formas (con ciertos fabricantes de teléfono) de habilitar el modo de diagnóstico de Qualcomm sobre USB, consulta por ejemplo esta página para ver posibles formas, en ciertos dispositivos, de habilitar Diag sin root; a menudo implica escribir una combinación mágica de dígitos en el teclado de marcación del teléfono.

En otros dispositivos, también puede ser posible usar un archivo APK firmado por el fabricante del teléfono y con permisos relacionados con el sistema para habilitar el modo Diag sin hacer root (busca, por ejemplo, información sobre el APK com.longcheertel.midtest para dispositivos Xiaomi).

Una vez que tu dispositivo haya sido correctamente cambiado de modo, ejecutar el comando getprop sys.usb.config a través de ADB debería mostrar una cadena de texto que contenga diag.

En el lado de tu computadora, luego, ejecutar lsusb (en Linux) debería mostrar una línea que haga referencia a tu dispositivo, por ejemplo:``` Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode

root@kitploit:~
Tenga en cuenta el `001:076` (identificador de índice de bus/índice de dispositivo) y la información `05c6:9091` (ID de proveedor/ID de producto) presente en esta salida.

Una vez que tenga esta información disponible, **puede intentar usar una opción como `--usb-modem 05c6:9091` o `--usb-modem 001:076`** con QCSuper (por favor, respete el relleno de dígitos).

Si esto no es concluyente, puede usar el comando `lsusb -v -d 05c6:9091`, que debería producir una salida detallada, incluyendo las configuraciones USB, interfaces y endpoints para el dispositivo USB correspondiente:```
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 le permite seleccionar manualmente los identificadores de la configuración y de la interfaz a la que desea intentar conectarse en el dispositivo en cuestión (designados como bConfigurationValue y bInterfaceNumber en el descriptor USB sin procesar), en el caso de que no se detecte correctamente. Por ejemplo, la opción --usb-modem 05c6:9091:1:0 seleccionará respectivamente la configuración 1 y la interfaz 0 en el dispositivo en cuestión. --usb-modem 05c6:9091:1:4 seleccionará la interfaz 4 sobre la configuración 1.

Si no se especifica el detalle de los índices de configuración e interfaz, seleccionará el primer descriptor de interfaz en el bus USB del sistema que coincida con los siguientes criterios, por orden de preferencia:

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

Al utilizar la opción --usb-modem auto, se escoge el primer dispositivo que exponga una interfaz USB que cumpla estos criterios, y si es necesario, en Linux se selecciona el dispositivo de caracteres subyacente /dev/ttyUSB* (módulo usbserial) o /dev/ttyHS* (módulo hso), en el caso de que el dispositivo haya sido detectado y montado por un módulo del kernel (consulte la sección "Uso de QCSuper con un módem USB" más abajo).

Alternativamente, en Linux, también puede ser posible crear manualmente los endpoints /dev/ttyUSB* correspondientes a las interfaces de un dispositivo USB determinado, a los que podrá conectarse mediante QCSuper con una opción como --usb-modem /dev/ttyUSB0 (esto puede requerir ejecutar QCSuper con privilegios de root), usando el módulo usbserial. Para ello, puede utilizar un comando como:``` sudo rmmod usbserial sudo modprobe usbserial vendor=0x05c6 product=0x9091

root@kitploit:~
## Usando QCSuper con un módem USB

Puedes usar QCSuper con un módem USB que exponga un puerto Diag utilizando la opción `--usb-modem <device>`, donde `<device>` es el nombre del dispositivo pseudo-serial en Linux (como `/dev/ttyUSB0`, `/dev/ttyHS2` y otras posibilidades) o del puerto COM en Windows (como `COM2`, `COM3`).

Ten en cuenta que en la mayoría de las configuraciones, necesitarás ejecutar QCSuper como root para poder usar este modo, especialmente para manejar la interferencia del puerto serie.

Si no sabes qué dispositivos bajo `/dev` exponen el puerto Diag, es posible que tengas que probar varios de ellos. Puedes intentar autodetectarlo deteniendo el daemon de ModemManager (`sudo systemctl stop ModemManager`) y usando el siguiente comando: `sudo ModemManager --debug 2>&1 | grep -i 'port is QCDM-capable'` y luego Ctrl-C.

Ten en cuenta que si no puedes usar tu dispositivo con, por ejemplo, ModemManager en primer lugar, es probable que no esté completamente configurado y que tampoco funcione con QCSuper. Algunas posibles trampas son:

  * No aplicaste el comando [cambio de modo](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching) adecuado para tu dispositivo.
  
  * Si compraste un dispositivo que anteriormente tenía una SIM de otro operador, tu dispositivo puede estar bloqueado por SIM. Es posible que tengas que usar el código de desbloqueo del operador anterior e introducirlo en el dispositivo, como si fuera un código PIN: `sudo mmcli -i 0 --pin=<your_unlock_code>`

Si tu dispositivo USB basado en Qualcomm no expone un puerto Diag por defecto, es posible que necesites escribir lo siguiente a través del puerto AT para habilitar el puerto Diag:```
AT$QCDMG

Tenga en cuenta que solo un cliente puede comunicarse con el puerto Diag al mismo tiempo. Esto se aplica a dos instancias de QCSuper, o a instancias de QCSuper y ModemManager.

Si ModemManager está activo en su sistema, QCSuper intentará añadir dinámicamente una regla de udev para impedirle el acceso al puerto Diag y reiniciar su demonio, ya que actualmente es la mejor forma de lograrlo. Suprimirá esta regla al cerrarse.

Dispositivos compatibles

QCSuper se probó con éxito con:

  • Sony Xperia Z (Teléfono) - 4G - funciona sin configuración adicional después de rootear y habilitar adb
  • Nexus 6P (Teléfono) - 4G - funciona sin configuración adicional después de rootear y habilitar adb
  • ZTE MF823 (Módem USB) - 4G - puede requerir cambiar el modo del dispositivo a CDC-WDM, poner el dispositivo en modo fábrica y luego ejecutar el comando AT mencionado anteriormente
  • ZTE MF667 (Módem USB) - 3G, 2011 - debería funcionar sin configuración adicional (puede requerir cambio de modo)
  • Option Icon 225 (Módem USB) - 3G, 2008
  • Novatel Ovation MC998D (Módem USB)
  • ZTE WCDMA Technologies MSM MF110/MF627/MF636 (Módem USB)
  • ZTE 403zt (Módem USB) - 4G
  • OnePlus One y 3 (Teléfonos)
  • Andromax A16C3H (Teléfono)
  • Samsung Galaxy S4 GT-I9505 (Teléfono)
  • Virtual Access GW1150 - mediante conexión TCP
  • Westermo Merlin 4600 - mediante conexión TCP
  • Fairphone 5 - consulte la guía completa

Sin embargo, tiene como objetivo ser compatible con la gama más amplia posible de dispositivos basados en un chipset Qualcomm, para la parte de captura.

Otros dispositivos que funcionan se enumeran en: https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working"

No dude en informar si su dispositivo funciona correctamente o no abriendo un issue en Github.

Herramientas relacionadas que usan el protocolo Diag

Hay algunas otras herramientas de código abierto que implementan partes del protocolo Diag, con diversos propósitos:

  • ModemManager: el demonio principal que permite usar módems USB en Linux, implementa partes del protocolo Diag (etiquetado como QCDM) para recuperar información básica sobre dispositivos de módem USB.
  • SnoopSnitch (específicamente gsm-parser): principalmente una aplicación de Android cuyo propósito es detectar posibles ataques a la capa de radio (capturador de IMSI, BTS falsa...). También tiene una característica secundaria para capturar algo de tráfico de señalización a PCAP, que no proporciona exactamente lo mismo que QCSuper (por ejemplo, el tráfico LTE no está encapsulado en GSMTAP, la compatibilidad de dispositivos puede ser diferente).
    • diag-parser: una herramienta Linux que deriva de la función de generación de PCAP de SnoopSnitch, algo mejorada, diseñada para trabajar con módems USB.
  • MobileInsight: esta aplicación de Android pretende analizar todo tipo de registros emitidos por dispositivos Qualcomm y Mediatek (no solo los que contienen información de señalización, sino también estructuras de depuración propietarias) y volcarlos a un formato de representación XML específico. No proporciona PCAPs orientados al usuario (pero anteriormente usaba Wireshark como backend para convertir cierta información de protocolo a XML).
  • qcombbdbg: un depurador para la banda base de Qualcomm que se configura enganchando un comando Diag, mediante el comando Diag que permite escribir en memoria, para el módem USB Option Icon 225.
  • OpenPST: un conjunto de herramientas relacionadas con dispositivos Qualcomm, incluida una utilidad GUI que permite, por ejemplo, leer datos en el pequeño sistema de archivos embebido accesible a través de Diag (EFS).
  • SCAT: una herramienta con capacidades similares de generación de GSMTAP, que toma como entrada un puerto serie y también es compatible con Samsung Exynos.
Descargar herramienta