Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
QCSuper — Cattura la segnalazione cellulare grezza 2G/3G/4G/5G dai baseband Qualcomm tramite Diag, genera output PCAP per Wireshark ed espone la diagnostica EFS/memoria. | Kitploit
Strumenti/GitHubGitHub/p1sec/qcsuper
Sicurezza Sistemi EmbeddedSniffing e Analisi dei PacchettiMemory ForensicsNetwork ForensicsMobile ForensicsSicurezza WirelessSicurezza Mobile
GitHubp1sec/qcsuper

QCSuper

Cattura la segnalazione cellulare grezza 2G/3G/4G/5G dai baseband Qualcomm tramite Diag, genera output PCAP per Wireshark ed espone la diagnostica EFS/memoria.

Vedi Repository
1.6k27927 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

QCSuper

QCSuper è uno strumento che comunica con telefoni e modem basati su Qualcomm, consentendo di catturare frame radio 2G/3G/4G grezzi (e su alcuni modelli 5G), tra le altre cose.

Ti permetterà di generare catture PCAP utilizzando un telefono Android rooted, un dongle USB o una cattura esistente in un altro formato.

Screenshot dell'uso di QCSuper con Wireshark

Dopo averlo installato, puoi collegare il tuo telefono rooted via USB e, con un dispositivo compatibile, usarlo è semplice come:```bash qcsuper --adb --wireshark-live

root@kitploit:~
Oppure, se hai abilitato manualmente l'esposizione di una porta Diag sul tuo telefono (la procedura corrispondente può variare a seconda del modem e del produttore del telefono, vedi sotto per ulteriori spiegazioni), oppure se hai collegato un dongle di banda larga mobile:```bash
qcsuper --usb-modem auto --wireshark-live

Utilizza il protocollo Qualcomm Diag, chiamato anche QCDM o DM (Diagnostic Monitor), per comunicare con il modem del telefono.

Vuoi segnalare se il tuo dispositivo funziona o non funziona? Puoi aprire una issue su GitHub.

Indice

  • Installazione
    • Installazione su Linux (PIP)
    • Installazione su Linux (UV)
    • Installazione su Windows
  • Protocolli supportati
  • Avviso sull'uso

Appendici:

  • Usare QCSuper con un modem USB
  • Dispositivi supportati
  • Strumenti correlati che usano il protocollo Diag

Post del blog/demo: Presenting QCSuper: a tool for capturing your 2G/3G/4G air traffic on Qualcomm-based phones

Altra documentazione:

  • Il protocollo Diag
  • Architettura di QCSuper

Installazione

QCSuper è stato recentemente testato e sviluppato su Ubuntu LTS 22.04+ ed è stato utilizzato anche su Windows 11. Dipende da alcuni moduli Python. Si consiglia di usare Linux per una migliore compatibilità.

Per usarlo, il telefono deve essere rooted o esporre una porta di servizio diag via USB. Per verificare la compatibilità con il tuo telefono, cerca il modello del telefono su un sito come GSMArena e controlla se ha un processore Qualcomm.

Per aprire i file PCAP prodotti da QCSuper, puoi usare qualsiasi Wireshark 2.x - 4.x per i frame 2G/3G, ma ti serve almeno Wireshark 2.5.x per i frame 4G (e 2.6.x per i singoli messaggi NAS decifrati dai frame 4G). Ubuntu fornisce attualmente una build abbastanza recente per tutte le versioni.

La decodifica dei frame 5G è stata testata con Wireshark 3.6.x e versioni successive e viene eseguita installando automaticamente un plug-in Lua di Wireshark (in %APPDATA%\Wireshark\plugins su Windows o in ~/.local/lib/wireshark/plugins su Linux e macOS), cosa che può essere evitata impostando la variabile d'ambiente DONT_INSTALL_WIRESHARK_PLUGIN=1 se desideri evitarlo.

Installazione su Linux (PIP)

Per installare a livello di sistema la versione stabile di QCSuper da PyPI, puoi eseguire questi comandi:```bash

Install dependencies

sudo apt install python3-pip wireshark

Install stable QCSuper system-wide

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

root@kitploit:~
Quindi, puoi semplicemente digitare `qcsuper` nel tuo terminale per eseguire QCSuper.

Per installare la versione di sviluppo in una cartella specifica, apri un terminale e digita quanto segue:```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

Quindi, esegui QCSuper dalla directory qcsuper/, usando il comando ./qcsuper.py nel terminale.

Installazione su Linux (UV)

Su Linux, puoi installare QCSuper usando il gestore pacchetti uv, che è un'alternativa moderna a PIP.

Per prima cosa, esegui uno di questi comandi nel tuo terminale per installare 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:~
Quindi, esegui questo per installare l'ultima versione stabile:```bash
uv tool install qcsuper

In alternativa, puoi installare l'ultima versione di sviluppo usando questo comando:```bash uv tool install git+https://github.com/P1sec/qcsuper

root@kitploit:~
Puoi quindi semplicemente digitare questo nel tuo terminale:```bash
qcsuper

Tuttavia, se è necessario eseguire qcsuper come root, ad esempio perché si leggono dati da un dispositivo modem, qcsuper potrebbe non essere in $PATH quando si usa uv con sudo, quindi potrebbe essere necessario fare qualcosa come:```bash sudo env "PATH=$PATH" qcsuper

root@kitploit:~
Se desideri partecipare allo sviluppo dello strumento, puoi usare questi comandi per scaricare il sorgente, quindi creare link simbolici a QCSuper in `~/.local/bin` verso la directory del sorgente:```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

Installazione su Windows

QCSuper può essere eseguito su Windows, ma prima dovresti assicurarti che il prompt ADB di Google funzioni correttamente sulla tua macchina con il tuo dispositivo, e dovresti anche creare manualmente i filtri libusb-win32 (tramite l'utility accessibile dal menu Start dopo averlo installato) nel caso in cui il tuo dispositivo debba connettersi direttamente alla porta Diag tramite USB pseudo-serial.

(Nota: se cambi modalità al tuo dispositivo, il PID/VID USB associato potrebbe cambiare e potrebbe essere necessario rifare le associazioni dei driver nell'utility di creazione filtri libusb-win32 - e/o nel gestione periferiche di Windows a seconda dei casi)

Su Windows, potrebbe essere necessario (oltre ai driver kernel ADB di Google) scaricare e installare i driver USB del tuo telefono in base al modello (questo può includere driver USB Qualcomm generici). Cerca su Google il modello del tuo telefono + "USB driver" o "ADB driver" per istruzioni.

Poi, devi assicurarti di poter raggiungere il tuo dispositivo usando adb. Puoi trovare un tutorial su come scaricare e configurare adb qui. Il comando adb.exe shell (o qualunque percorso eseguibile tu usi, una copia dell'eseguibile ADB è presente nella cartella qcsuper/inputs/external/adb di QCSuper) deve mostrare un prompt per continuare.

Quindi, segui questi link (lo strumento è stato testato recentemente su Windows 11 - non è garantito che funzioni su Windows 7) per:

  • Installa Python 3.12 (versione per Windows 7: Python 3.7) o più recente (assicurati di selezionare le opzioni per includerlo nel PATH, installarlo per tutti gli utenti e installare pip)
  • Installa Wireshark 4.2 (versione per Windows 7: Installa Wireshark 3.6) o più recente
  • Installa libusb-win32 1.2.7.3 (versione per Windows 7: libusb-win32 1.2.3.7) o più recente
  • Riavvia il prompt dei comandi/terminale per assicurarti che la variabile di sistema %PATH% sia stata aggiornata.
  • Scarica ed estrai QCSuper

Per installare i moduli Python richiesti, apri il prompt dei comandi e digita:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip

root@kitploit:~
Sempre nel prompt dei comandi, spostati nella directory che contiene QCSuper usando il comando `cd`. Potrai quindi eseguire i comandi (che dovrebbero iniziare con `py qcsuper.py` o `py3 qcsuper.py` se hai installato Python 3 dal programma di installazione online, oppure `python3.exe .\qcsuper.py` se lo hai installato da Microsoft Store).

Come già accennato sopra, è possibile che tu debba aggiungere un filtro `libusb-win32` tramite l'utilità disponibile nel menu Start per assicurarti che l'interfaccia corrispondente alla porta Diag sia visibile da QCSuper sul dispositivo con modalità cambiata (un primo tentativo fallito di eseguire lo strumento usando il flag `--adb` dovrebbe innescare un cambio di modalità se il driver ADB funziona e il dispositivo è rootato correttamente).

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Screenshot of adding a libusb-win32 filter for the Diag port of a Mi phone">
</p>

## Protocolli supportati

QCSuper supporta la cattura di un piccolo numero di protocolli radio mobili. Questi protocolli vengono inseriti dopo un'[intestazione GSMTAP](http://osmocom.org/projects/baseband/wiki/GSMTAP), un'intestazione standard (incapsulata in UDP/IP) che consente di identificare il protocollo, e i pacchetti GSMTAP vengono inseriti in un [file PCAP](https://wiki.wireshark.org/Development/LibpcapFileFormat) completamente analizzabile con Wireshark.

I protocolli 2G/3G/4G possono essere suddivisi in alcuni "livelli": il livello 1 riguarda la modulazione radio digitale e il multiplexing, il livello 2 gestisce aspetti come la frammentazione e l'acknowledgement (conferma di ricezione), il livello 3 è la segnalazione vera e propria o i dati utente.

QCSuper ti permette il più delle volte di catturare a livello 3, poiché è il più pratico da analizzare con Wireshark, ed è ciò che il protocollo Diag fornisce nativamente (e qui ci sono alcune informazioni interessanti).

* 2G (GSM): Livello 3 e superiori (RR/...)
* 2.5G (GPRS e EDGE): Livello 2 e superiori (MAC-RLC/...) per le conferme di ricezione dei dati
* 3G (UMTS): Livello 3 e superiori (RRC/...)
  * Inoltre, supporta il riassemblaggio dei SIB (System Information Blocks, i dati trasmessi a tutti gli utenti) in frame GSMTAP separati, dato che Wireshark attualmente non può farlo da solo: flag `--reassemble-sibs`
* 4G (LTE): Livello 3 e superiori (RRC/...)
  * Inoltre, supporta l'inserimento dei messaggi NAS decifrati, che sono incorporati crittografati nei pacchetti RRC, in frame aggiuntivi: flag `--decrypt-nas`

Per impostazione predefinita, il traffico IP inviato dal tuo dispositivo non è incluso: vedi solo i frame di segnalazione. Puoi includere il traffico IP che generi usando l'opzione `--include-ip-traffic` (l'IP è pressoché il livello 3 per il traffico dati in 2G/3G/4G, con la precisazione che le sue intestazioni possono essere compresse (ROHC) e che può essere inclusa una piccola intestazione PPP).

Il traffico dati che invii utilizza un canale diverso dal traffico di segnalazione; questo canale viene configurato tramite il traffico di segnalazione; QCSuper dovrebbe quindi mostrarti tutti i dettagli relativi a come viene avviato questo canale.

## Note sull'utilizzo

Per usare QCSuper, specifichi un input (ad es.: `--adb` (telefono Android), `--usb-modem`) e uno o più moduli (`--wireshark-live` per aprire Wireshark, `--pcap-dump` per scrivere il traffico su un file PCAP, `--info` per informazioni generiche sul dispositivo...).

Ecco alcuni comandi che puoi digitare:```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

Oppure, se non è abbastanza semplice da funzionare:```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:~
Ecco l'avviso di utilizzo corrente per 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.

È supportato specificare - per convogliare dati da stdin o verso stdout (il contenuto gzippato potrebbe non essere rilevato).

Come effettuare il root del mio telefono?

Questo file README non è una guida su come effettuare il root del telefono (far sì che il telefono vi permetta di eseguire comandi come "su").

Nella maggior parte dei recenti dispositivi Android, devi prima utilizzare l'opzione "OEM/bootloader unlock" presente nelle impostazioni sviluppatore del telefono per sbloccare il bootloader, poi puoi usare uno strumento come Magisk che ti consentirà di ottenere un'immagine patchata per il bootloader del tuo telefono, che potrai poi caricare sul telefono in modalità fastboot.

QCSuper avrà più probabilità di funzionare facilmente sul tuo dispositivo basato su Qualcomm quando il telefono è rooted, ma spesso ci sono modi per abilitare la modalità USB Diag di Qualcomm (nota anche come "DM", Diag Monitor) sul telefono senza che sia rooted. Questo dipende dal produttore del telefono e passa, ad esempio, dalla digitazione di una combinazione magica di cifre sul tastierino numerico del telefono. Consulta la sezione "Come abilitare manualmente le porte diagnostiche sul mio telefono?" qui sotto per maggiori dettagli.

Prima di effettuare il root del telefono, ricorda che potresti anche voler caricare un'immagine di recovery alternativa come TWRP sul telefono con bootloader sbloccato OEM per eseguire un backup delle partizioni usando uno strumento come TWRP (può essere semplice come caricare l'immagine tramite Fastboot, abilitare il collegamento ADB nelle impostazioni di TWRP e usare adb pull su partizioni selezionate nella cartella `/dev/block/by-name``).

Per istruzioni specifiche sul root o sull'abilitazione della modalità Diag sul modello del tuo telefono, puoi cercare le informazioni sul forum XDA-developers con parole chiave appropriate.

Come abilitare manualmente le porte diagnostiche sul mio telefono?

Sui dispositivi Android basati su Qualcomm/MSM con kernel Linux 4.9 o precedente (questo include all'incirca parte dei dispositivi fino ad Android 12 e tutti i dispositivi prima di Android 10), i dispositivi Android basati su Qualcomm normalmente contengono un dispositivo di sistema chiamato /dev/diag che consente di comunicare dati alla porta diagnostica della banda base.

Sui dispositivi Android basati su Qualcomm/MSM con kernel Linux 4.14 o successivo (questo include all'incirca parte dei dispositivi da Android 10 e tutti i dispositivi da Android 13), /dev/diag è scomparso, poiché il modulo diagchar corrispondente è disabilitato per impostazione predefinita nei kernel AOSP/Linux recenti.

Sui dispositivi con kernel MSM Linux 4.9 o precedente, quando si usa il flag --adb, QCSuper proverà a connettersi automaticamente tramite ADB, tenterà quindi di trasferire un'utilità eseguibile che si connette al dispositivo /dev/diag, per avviarla come root usando un comando come su -c /data/local/tmp/adb_bridge, e successivamente trasmetterà i dati diagnostici dal dispositivo tramite TCP (inoltrando anche la porta TCP corrispondente attraverso ADB).

Sui dispositivi con kernel MSM Linux 4.14 o successivo, quando si usa il flag --adb, QCSuper proverà a connettersi automaticamente tramite ADB, tenterà quindi di commutare la modalità della porta USB del telefono usando un comando come su -c 'setprop sys.usb.config diag,adb', e poi eseguirà l'equivalente del flag --usb-modem auto (vedi sotto).

Il flag --usb-modem <value> consente a QCSuper di connettersi alla porta diagnostica Qualcomm tramite una porta pseudo-seriale su USB, indipendentemente da ADB, che è il modo più comune per connettersi al protocollo diag Qualcomm di un telefono Android usando un dispositivo esterno.

Per usare il flag --usb-modem <value>, la porta diagnostica Qualcomm deve essere abilitata sul telefono corrispondente, in altre parole il telefono deve essere stato commutato in modalità USB in anticipo.

Il modo più comune per commutare in modalità USB il tuo dispositivo è eseguire un comando come setprop sys.usb.config diag,adb come root, ma potrebbero esserci altri modi (con alcuni produttori di telefoni) per abilitare la modalità Qualcomm diagnostics-over-USB, vedi ad esempio questa pagina per possibili modi, per alcuni dispositivi, di abilitare Diag senza root - spesso implica digitare una combinazione magica di cifre sul tastierino del telefono.

In altri dispositivi, potrebbe anche essere possibile usare un file APK firmato dal produttore del telefono e con permessi relativi al sistema per abilitare la modalità Diag senza root (cerca ad esempio l'APK com.longcheertel.midtest per dispositivi basati su Xiaomi).

Una volta che il dispositivo è stato correttamente commutato in modalità USB, eseguire il comando getprop sys.usb.config tramite ADB dovrebbe mostrare una stringa di testo contenente diag.

Sul lato del tuo computer, poi, eseguendo lsusb (su Linux) dovrebbe mostrare una riga che si riferisce al tuo dispositivo, ad esempio:``` Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode

root@kitploit:~
Nota l'identificatore `001:076` (indice bus/indice dispositivo) e le informazioni `05c6:9091` (ID vendor/ID prodotto) presenti in questo output.

Una volta disponibili queste informazioni, **puoi provare a usare un flag come `--usb-modem 05c6:9091` oppure `--usb-modem 001:076`** con QCSuper (rispettando il padding delle cifre).

Se questo non fosse conclusivo, puoi usare il comando `lsusb -v -d 05c6:9091`, che dovrebbe produrre un output dettagliato, incluse le configurazioni USB, le interfacce e gli endpoint del dispositivo USB corrispondente:```
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 ti consente di selezionare manualmente gli identificatori della configurazione e dell'interfaccia a cui desideri tentare di connetterti sul dispositivo interessato (designati come bConfigurationValue e bInterfaceNumber nel descrittore USB grezzo), nel caso in cui non venga rilevato correttamente. Ad esempio, il flag --usb-modem 05c6:9091:1:0 selezionerà rispettivamente la configurazione 1 e l'interfaccia 0 sul dispositivo interessato. --usb-modem 05c6:9091:1:4 selezionerà l'interfaccia 4 sulla configurazione 1.

Se il dettaglio degli indici di configurazione e interfaccia non è specificato, verrà selezionato il primo descrittore di interfaccia sul bus USB di sistema che risulta corrispondere ai seguenti criteri, in ordine di preferenza:

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

Quando si usa il flag --usb-modem auto, viene selezionato il primo dispositivo che espone un'interfaccia USB conforme a questi criteri e, se necessario su Linux, viene selezionato il dispositivo a caratteri sottostante /dev/ttyUSB* (modulo usbserial) o /dev/ttyHS* (modulo hso), nel caso in cui il dispositivo sia stato rilevato e montato da un modulo del kernel (vedere la sezione "Uso di QCSuper con un modem USB" più avanti).

In alternativa, su Linux, potrebbe anche essere possibile creare manualmente gli endpoint /dev/ttyUSB* corrispondenti alle interfacce di un dato dispositivo USB, che potrai collegare usando QCSuper con un flag come --usb-modem /dev/ttyUSB0 (questo potrebbe richiedere l'esecuzione di QCSuper con privilegi di root), utilizzando il modulo usbserial. Per fare questo, puoi usare un comando come:``` sudo rmmod usbserial sudo modprobe usbserial vendor=0x05c6 product=0x9091

root@kitploit:~
## Uso di QCSuper con un modem USB

Puoi usare QCSuper con un modem USB che espone una porta Diag tramite l'opzione `--usb-modem <device>`, dove `<device>` è il nome del dispositivo pseudo-serial su Linux (come `/dev/ttyUSB0`, `/dev/ttyHS2` e altre possibilità) o della porta COM su Windows (come `COM2`, `COM3`).

Tieni presente che nella maggior parte delle configurazioni, dovrai eseguire QCSuper come root per poter usare questa modalità, in particolare per gestire l'interferenza sulla porta seriale.

Se non sai quali dispositivi sotto `/dev` espongono la porta Diag, potrebbe essere necessario provarne diversi. Puoi provare a rilevarlo automaticamente fermando il demone ModemManager (`sudo systemctl stop ModemManager`) e usando il seguente comando: `sudo ModemManager --debug 2>&1 | grep -i 'port is QCDM-capable'` e poi Ctrl-C.

Tieni presente che se non riesci a usare il tuo dispositivo con, ad esempio, ModemManager in primo luogo, è probabile che non sia completamente configurato e che non funzionerà neanche con QCSuper. Alcuni possibili problemi sono:

  * Non hai applicato il corretto comando di [mode switching](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching) per il tuo dispositivo.
  
  * Se hai acquistato un dispositivo che in precedenza aveva una SIM di un altro operatore, il tuo dispositivo potrebbe essere bloccato tramite SIM. Potrebbe essere necessario usare il codice di sblocco del vecchio operatore e inviarlo al dispositivo, come se fosse un codice PIN: `sudo mmcli -i 0 --pin=<your_unlock_code>`

Se il tuo dispositivo USB basato su Qualcomm non espone una porta Diag per impostazione predefinita, potrebbe essere necessario digitare quanto segue attraverso la porta AT per abilitare la porta Diag:```
AT$QCDMG

Si prega di notare che un solo client può comunicare con la porta Diag alla volta. Questo vale per due istanze di QCSuper, oppure per istanze di QCSuper e ModemManager.

Se ModemManager è attivo sul sistema, QCSuper tenterà di aggiungere dinamicamente una regola udev per impedirgli di accedere alla porta Diag e riavvierà il suo demone, poiché attualmente è il modo migliore per ottenere questo risultato. Rimuoverà questa regola alla chiusura.

Dispositivi supportati

QCSuper è stato testato con successo con:

  • Sony Xperia Z (Telefono) - 4G - funziona subito dopo il rooting e l'abilitazione di adb
  • Nexus 6P (Telefono) - 4G - funziona subito dopo il rooting e l'abilitazione di adb
  • ZTE MF823 (Modem USB) - 4G - potrebbe richiedere di fare lo mode-switch del dispositivo a CDC-WDM, impostare il dispositivo in modalità factory, quindi eseguire il comando AT menzionato sopra
  • ZTE MF667 (Modem USB) - 3G, 2011 - dovrebbe funzionare subito (potrebbe richiedere lo mode switching)
  • Option Icon 225 (Modem USB) - 3G, 2008
  • Novatel Ovation MC998D (Modem USB)
  • ZTE WCDMA Technologies MSM MF110/MF627/MF636 (Modem USB)
  • ZTE 403zt (Modem USB) - 4G
  • OnePlus One e 3 (Telefoni)
  • Andromax A16C3H (Telefono)
  • Samsung Galaxy S4 GT-I9505 (Telefono)
  • Virtual Access GW1150 - tramite connessione TCP
  • Westermo Merlin 4600 - tramite connessione TCP
  • Fairphone 5 - vedere la guida completa

Tuttavia, mira a essere compatibile con la più ampia gamma possibile di dispositivi basati su chipset Qualcomm, per quanto riguarda la parte di cattura.

Altri dispositivi funzionanti sono elencati in: https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working"

Non esitate a segnalare se il vostro dispositivo funziona o meno aprendo una issue su Github.

Strumenti correlati che utilizzano il protocollo Diag

Ci sono alcuni altri strumenti open source che implementano parti del protocollo Diag, con vari scopi:

  • ModemManager: il demone principale che consente di utilizzare i modem USB su Linux, implementa parti del protocollo Diag (indicato come QCDM) per recuperare informazioni di base sui modem USB.
  • SnoopSnitch (in particolare gsm-parser): principalmente un'applicazione Android il cui scopo è rilevare potenziali attacchi al livello radio (IMSI catcher, BTS false...). Ha anche una funzionalità secondaria per catturare parte del traffico di segnalazione in PCAP, che non fornisce esattamente la stessa cosa di QCSuper (ad esempio il traffico LTE non è incapsulato in GSMTAP, il supporto dei dispositivi può essere diverso).
    • diag-parser: uno strumento Linux che deriva dalla funzionalità di generazione PCAP di SnoopSnitch, leggermente migliorato, progettato per funzionare con modem USB.
  • MobileInsight: questa applicazione Android intende analizzare tutti i tipi di log prodotti da dispositivi Qualcomm e Mediatek (non solo quelli contenenti informazioni di segnalazione, ma anche strutture di debug proprietarie), e riversarli in uno specifico formato di rappresentazione XML. Non fornisce PCAP orientati all'utente (ma in precedenza usava Wireshark come backend per convertire determinate informazioni di protocollo in XML).
  • qcombbdbg: un debugger per il baseband Qualcomm che si configura agganciando un comando Diag, tramite l'uso del comando Diag che consente di scrivere in memoria, per il modem USB Option Icon 225.
  • OpenPST: un insieme di strumenti relativi ai dispositivi Qualcomm, inclusa un'utilità GUI che consente, ad esempio, di leggere i dati dal minuscolo filesystem embedded accessibile tramite Diag (EFS).
  • SCAT: uno strumento con capacità simili di generazione GSMTAP, che accetta in input una porta seriale, supportando anche Samsung Exynos.
Scarica lo strumento