Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
QCSuper — Erfasst rohe 2G/3G/4G/5G-Mobilfunksignalisierung von Qualcomm-Basebands über Diag, erzeugt PCAP für Wireshark und stellt EFS-/Speicherdiagnosen bereit. | Kitploit
Tools/GitHubGitHub/p1sec/qcsuper
Embedded-System-SicherheitPaket-Sniffing & AnalyseSpeicherforensikNetzwerkforensikMobile ForensikDrahtlose SicherheitMobile Sicherheit
GitHubp1sec/qcsuper

QCSuper

Erfasst rohe 2G/3G/4G/5G-Mobilfunksignalisierung von Qualcomm-Basebands über Diag, erzeugt PCAP für Wireshark und stellt EFS-/Speicherdiagnosen bereit.

Repository anzeigen
1.6k279vor 27 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

QCSuper

QCSuper ist ein Tool, das mit Qualcomm-basierten Telefonen und Modems kommuniziert und es ermöglicht, rohe 2G/3G/4G- (und bei bestimmten Modellen 5G-) Funkrahmen zu erfassen, unter anderem.

Es ermöglicht Ihnen, PCAP-Erfassungen zu generieren – entweder mit einem gerooteten Android-Telefon, einem USB-Dongle oder einer vorhandenen Erfassung in einem anderen Format.

Screenshot der Verwendung von QCSuper zusammen mit Wireshark

Nachdem Sie es installiert haben, können Sie Ihr gerootetes Telefon per USB anschließen, und die Verwendung mit einem kompatiblen Gerät ist so einfach wie:```bash qcsuper --adb --wireshark-live

root@kitploit:~
Oder, wenn du manuell das Freigeben eines Diag-Ports über dein Telefon aktiviert hast (das entsprechende Verfahren kann je nach Telefonmodem und Hersteller variieren, siehe unten für weitere Erklärungen), oder wenn du einen Mobilfunk-Dongle angeschlossen hast:```bash
qcsuper --usb-modem auto --wireshark-live

Es verwendet das Qualcomm-Diag-Protokoll, auch QCDM oder DM (Diagnostic Monitor) genannt, um mit dem Baseband deines Telefons zu kommunizieren.

Du bist bereit zu melden, ob dein Gerät funktioniert oder nicht? Du kannst ein Github-Issue eröffnen.

Inhaltsverzeichnis

  • Installation
    • Linux-Installation (PIP)
    • Linux-Installation (UV)
    • Windows-Installation
  • Unterstützte Protokolle
  • Hinweise zur Verwendung

Anhänge:

  • Verwendung von QCSuper mit einem USB-Modem
  • Unterstützte Geräte
  • Verwandte Tools, die das Diag-Protokoll verwenden

Blogbeitrag/Demo: Vorstellung von QCSuper: Ein Tool zum Erfassen deines 2G/3G/4G-Funkverkehrs auf Qualcomm-basierten Telefonen

Weitere Dokumentation:

  • Das Diag-Protokoll
  • QCSuper-Architektur

Installation

QCSuper wurde zuletzt auf Ubuntu LTS 22.04+ getestet und entwickelt und wurde auch unter Windows 11 verwendet. Es hängt von einigen Python-Modulen ab. Für eine bessere Kompatibilität wird die Verwendung von Linux empfohlen.

Zur Verwendung muss dein Telefon gerootet sein oder einen Diag-Dienstport über USB bereitstellen. Um die Kompatibilität mit deinem Telefon zu prüfen, suche das Modell des Telefons auf einer Website wie GSMArena und prüfe, ob es einen Qualcomm-Prozessor hat.

Um PCAP-Dateien zu öffnen, die von QCSuper erzeugt wurden, kannst du jede Wireshark-2.x- bis 4.x-Version für 2G/3G-Frames verwenden, aber du benötigst mindestens Wireshark 2.5.x für 4G-Frames (und 2.6.x für einzelne NAS-Nachrichten, die aus 4G-Frames entschlüsselt wurden). Ubuntu bietet derzeit einen ausreichend aktuellen Build für alle Versionen.

Das Dekodieren von 5G-Frames wurde unter Wireshark 3.6.x und höher getestet und erfolgt durch die automatische Installation eines Wireshark-Lua-Plugins (in %APPDATA%\Wireshark\plugins unter Windows oder in ~/.local/lib/wireshark/plugins unter Linux und macOS), was durch Setzen der Umgebungsvariable DONT_INSTALL_WIRESHARK_PLUGIN=1 vermieden werden kann, falls du dies umgehen möchtest.

Linux-Installation (PIP)

Um die stabile Version von QCSuper systemweit von PyPI zu installieren, kannst du diese Befehle ausführen:```bash

Install dependencies

sudo apt install python3-pip wireshark

Install stable QCSuper system-wide

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

root@kitploit:~
Danach kannst du einfach `qcsuper` in deinem Terminal eingeben, um QCSuper auszuführen.

Um die Entwicklungsversion in einem bestimmten Ordner zu installieren, öffne ein Terminal und gib Folgendes ein:```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

Führen Sie dann QCSuper aus dem Verzeichnis qcsuper/ aus, indem Sie den Befehl ./qcsuper.py im Terminal verwenden.

Linux-Installation (UV)

Unter Linux können Sie QCSuper mit dem Paketmanager uv installieren, der eine moderne Alternative zu PIP ist.

Führen Sie zuerst einen der folgenden Befehle in Ihrem Terminal aus, um uv zu installieren:```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:~
Führen Sie dann Folgendes aus, um die neueste stabile Version zu installieren:```bash
uv tool install qcsuper

Alternativ können Sie die neueste Entwicklungsversion mit folgendem Befehl installieren:```bash uv tool install git+https://github.com/P1sec/qcsuper

root@kitploit:~
Du kannst das dann einfach in dein Terminal eingeben:```bash
qcsuper

Wenn Sie qcsuper jedoch als root ausführen müssen, zum Beispiel weil Sie Daten von einem Modemgerät lesen, ist qcsuper bei Verwendung von uv mit sudo möglicherweise nicht in $PATH, sodass möglicherweise so etwas erforderlich ist wie:```bash sudo env "PATH=$PATH" qcsuper

root@kitploit:~
Wenn Sie an der Entwicklung des Tools teilnehmen möchten, können Sie diese Befehle verwenden, um den Quellcode herunterzuladen und dann symbolische Links zu QCSuper in `~/.local/bin` in das Quellverzeichnis zu erstellen:```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-Installation

QCSuper kann unter Windows ausgeführt werden, aber Sie sollten zuvor sicherstellen, dass die ADB-Eingabeaufforderung von Google auf Ihrem Rechner mit Ihrem Gerät korrekt funktioniert, und Sie sollten außerdem manuell libusb-win32-Filter erstellen (über das Dienstprogramm, das nach der Installation im Startmenü verfügbar ist), falls Ihr Gerät sich direkt über pseudo-serielles USB mit dem Diag-Port verbinden muss.

(Bitte beachten Sie, dass sich bei einem Moduswechsel Ihres Geräts die zugehörige USB-PID/VID ändern kann und es erforderlich sein kann, die Treiberzuordnungen im libusb-win32-Filtererstellungsprogramm – und/oder je nach Fall im Windows-Geräte-Manager – erneut vorzunehmen)

Unter Windows müssen Sie möglicherweise (zusätzlich zu den Google-ADB-Kerneltreibern) die USB-Treiber Ihres Telefons für Ihr Telefonmodell herunterladen und installieren (dies kann generische Qualcomm-USB-Treiber einschließen). Bitte suchen Sie bei Google nach Ihrem Telefonmodell + „USB-Treiber" oder „ADB-Treiber" für Anweisungen.

Dann müssen Sie sicherstellen, dass Sie Ihr Gerät mit adb erreichen können. Eine Anleitung zum Herunterladen und Einrichten von adb finden Sie hier. Der Befehl adb.exe shell (oder welchen ausführbaren Pfad Sie auch verwenden, eine Kopie der ADB-Ausführungsdatei befindet sich im Ordner qcsuper/inputs/external/adb von QCSuper) muss eine Eingabeaufforderung anzeigen, um fortzufahren.

Folgen Sie dann diesen Links (das Tool wurde zuletzt unter Windows 11 getestet – es ist nicht garantiert, dass es unter Windows 7 funktioniert), um Folgendes zu tun:

  • Python 3.12 installieren (Windows-7-Version: Python 3.7) oder neuer (stellen Sie sicher, dass Sie die Optionen aktivieren, um es in PATH aufzunehmen, für alle Benutzer zu installieren und pip zu installieren)
  • Wireshark 4.2 installieren (Windows-7-Version: Wireshark 3.6 installieren) oder neuer
  • libusb-win32 1.2.7.3 installieren (Windows-7-Version: libusb-win32 1.2.3.7) oder neuer
  • Starten Sie Ihre Eingabeaufforderung/Ihr Terminal neu, um sicherzustellen, dass die Systemvariable %PATH% aktualisiert wurde.
  • QCSuper herunterladen und entpacken

Um die erforderlichen Python-Module zu installieren, öffnen Sie Ihre Eingabeaufforderung und geben Sie Folgendes ein:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip

root@kitploit:~
Noch in Ihrer Eingabeaufforderung wechseln Sie mit dem Befehl `cd` in das Verzeichnis, das QCSuper enthält. Sie können dann Befehle ausführen (die mit `py qcsuper.py` oder `py3 qcsuper.py` beginnen sollten, wenn Sie Python 3 über das Online-Installationsprogramm installiert haben, oder mit `python3.exe .\qcsuper.py`, wenn Sie es aus dem Microsoft Store installiert haben).

Wie oben erwähnt, müssen Sie möglicherweise über das im Startmenü verfügbare Dienstprogramm einen `libusb-win32`-Filter hinzufügen, um sicherzustellen, dass die dem Diag-Port entsprechende Schnittstelle für QCSuper auf dem umgeschalteten Gerät sichtbar ist (ein erster fehlgeschlagener Versuch, das Tool mit dem Flag `--adb` auszuführen, sollte einen Moduswechsel auslösen, wenn der ADB-Treiber funktioniert und das Gerät korrekt gerootet ist).

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Screenshot des Hinzufügens eines libusb-win32-Filters für den Diag-Port eines Mi-Telefons">
</p>

## Unterstützte Protokolle

QCSuper unterstützt das Erfassen einiger weniger Mobilfunkprotokolle. Diese Protokolle werden nach einem [GSMTAP-Header](http://osmocom.org/projects/baseband/wiki/GSMTAP) eingefügt, einem Standard-Header (in UDP/IP gekapselt), der die Identifizierung des Protokolls ermöglicht, und die GSMTAP-Pakete werden in eine [PCAP-Datei](https://wiki.wireshark.org/Development/LibpcapFileFormat) geschrieben, die mit Wireshark vollständig analysiert werden kann.

2G/3G/4G-Protokolle können in einige wenige "Schichten" unterteilt werden: Schicht 1 befasst sich mit der digitalen Funkmodulation und dem Multiplexing, Schicht 2 übernimmt Dinge wie Fragmentierung und Bestätigung, Schicht 3 ist die eigentliche Signalisierung oder die Nutzdaten.

QCSuper ermöglicht Ihnen meistens, auf Schicht 3 zu erfassen, da diese mit Wireshark am praktischsten zu analysieren ist und das Diag-Protokoll sie nativ bereitstellt (und einige interessante Informationen sind hier enthalten).

* 2G (GSM): Schicht 3 und darüber (RR/...)
* 2.5G (GPRS und EDGE): Schicht 2 und darüber (MAC-RLC/...) für Datenbestätigungen
* 3G (UMTS): Schicht 3 und darüber (RRC/...)
  * Zusätzlich unterstützt es das Reassemblieren von SIBs (System Information Blocks, die an alle Nutzer gesendeten Daten) in separaten GSMTAP-Frames, da Wireshark dies derzeit nicht selbst kann: Flag `--reassemble-sibs`
* 4G (LTE): Schicht 3 und darüber (RRC/...)
  * Zusätzlich unterstützt es das Einfügen entschlüsselter NAS-Nachrichten, die verschlüsselt in RRC-Pakete eingebettet sind, in zusätzliche Frames: Flag `--decrypt-nas`

Standardmäßig ist der von Ihrem Gerät gesendete IP-Verkehr nicht enthalten; Sie sehen nur die Signalisierungsframes. Sie können den von Ihnen erzeugten IP-Verkehr mithilfe der Option `--include-ip-traffic` einbeziehen (wobei IP sozusagen die Schicht 3 für Ihren Datenverkehr in 2G/3G/4G darstellt, abgesehen davon, dass seine Header komprimiert sein können (ROHC) und ein winziger PPP-Header enthalten sein kann).

Der von Ihnen gesendete Datenverkehr verwendet einen anderen Kanal als der Signalisierungsverkehr; dieser Kanal wird über den Signalisierungsverkehr eingerichtet. QCSuper sollte Ihnen daher alle Details anzeigen, die für die Initiierung dieses Kanals relevant sind.

## Nutzungshinweis

Um QCSuper zu verwenden, geben Sie eine Eingabequelle an (z. B. `--adb` (Android-Telefon), `--usb-modem`) und ein oder mehrere Module (`--wireshark-live` zum Öffnen von Wireshark, `--pcap-dump` zum Schreiben des Datenverkehrs in eine PCAP-Datei, `--info` für allgemeine Informationen über das Gerät ...).

Einige Befehle, die Sie eingeben können, sind:```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

Oder, wenn es nicht einfach genug ist, um zu funktionieren:```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:~
Hier ist der aktuelle Nutzungshinweis für 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.

Das Angeben von -, um Daten von stdin zu pipen oder an stdout zu senden, wird unterstützt (gzippter Inhalt wird möglicherweise nicht erkannt).

Wie roote ich mein Telefon?

Diese README-Datei ist kein Leitfaden zum Rooten deines Telefons (um dein Telefon dazu zu bringen, dir die Ausführung von Befehlen wie "su" zu ermöglichen).

Bei den meisten aktuellen Android-Geräten musst du zuerst die Option "OEM/Bootloader-Entsperrung" verwenden, die in den Entwickleroptionen des Telefons vorhanden ist, um den Bootloader zu entsperren. Danach kannst du ein Tool wie Magisk verwenden, das dir ein gepatchtes Image für den Bootloader deines Telefons liefert, das du dann im fastboot-Modus auf dein Telefon laden kannst.

QCSuper hat bessere Chancen, auf deinem Qualcomm-basierten Gerät problemlos zu funktionieren, wenn dein Telefon gerootet ist, aber es gibt oft Möglichkeiten, den Qualcomm-Diag-USB-Modus (auch bekannt als "DM", Diag Monitor) auf deinem Telefon zu aktivieren, ohne dass dein Telefon gerootet ist. Dies hängt von deinem Telefonhersteller ab und erfolgt beispielsweise durch die Eingabe einer magischen Zahlenkombination über die Wähltastatur deines Telefons. Weitere Einzelheiten findest du im Abschnitt "Wie aktiviere ich die Diagnoseports auf meinem Telefon manuell?" weiter unten.

Bevor du dein Telefon rootest, bedenke, dass du möglicherweise auch ein alternatives Recovery-Image wie TWRP auf dein OEM-entsperrtes Telefon laden möchtest, um eine Partitionssicherung mit einem Tool wie TWRP durchzuführen (es kann so einfach sein, das Image per Fastboot zu laden, den ADB-Link in den TWRP-Einstellungen zu aktivieren und adb pull auf ausgewählte Partitionen im Ordner /dev/block/by-name anzuwenden).

Für spezifische Anleitungen zum Rooten oder zum Aktivieren des Diag-Modus bei deinem Telefonmodell kannst du im XDA-Developers-Forum mit passenden Suchbegriffen nach Informationen suchen.

Wie aktiviere ich die Diagnoseports auf meinem Telefon manuell?

Auf Qualcomm/MSM-basierten Android-Geräten mit Linux-Kernel 4.9 oder älter (dies umfasst ungefähr einen Teil der Geräte bis Android 12 und alle Geräte vor Android 10) enthalten Qualcomm-basierte Android-Geräte normalerweise ein Systemgerät namens /dev/diag, das die Übertragung von Daten an den Diagnoseport des Basebands ermöglicht.

Auf Qualcomm/MSM-basierten Android-Geräten mit Linux-Kernel 4.14 oder neuer (dies umfasst ungefähr einen Teil der Geräte ab Android 10 und alle Geräte ab Android 13) ist /dev/diag verschwunden, da das entsprechende diagchar-Modul in neueren AOSP/Linux-Kerneln standardmäßig deaktiviert ist.

Bei Geräten mit einem MSM-Kernel mit Linux 4.9 oder älter wird QCSuper bei Verwendung des --adb-Flags automatisch versuchen, sich über ADB zu verbinden, dann versuchen, ein ausführbares Dienstprogramm zu übertragen, das eine Verbindung zum /dev/diag-Gerät herstellt, um es als Root mit einem Befehl wie su -c /data/local/tmp/adb_bridge zu starten und anschließend die Diagnosedaten mit dem Gerät über TCP zu übertragen (wobei auch der entsprechende TCP-Port über ADB weitergeleitet wird).

Bei Geräten mit einem MSM-Kernel mit Linux 4.14 oder neuer wird QCSuper bei Verwendung des --adb-Flags automatisch versuchen, sich über ADB zu verbinden, dann versuchen, den USB-Anschluss des Telefons umzuschalten (mode-switch) mit einem Befehl wie su -c 'setprop sys.usb.config diag,adb', und dann das Äquivalent des --usb-modem auto-Flags ausführen (siehe unten).

Das Flag --usb-modem <value> ermöglicht es QCSuper, sich über einen Pseudo-Seriell-Port über USB mit dem Qualcomm-Diagnoseport zu verbinden, unabhängig von ADB. Dies ist die häufigste Methode, um sich über ein externes Gerät mit dem Qualcomm-Diag-Protokoll eines Android-basierten Telefons zu verbinden.

Um das Flag --usb-modem <value> verwenden zu können, muss der Qualcomm-Diagnoseport auf dem entsprechenden Telefon aktiviert sein, anders gesagt das Telefon sollte zuvor per USB umgeschaltet worden sein (mode-switched).

Der gebräuchlichste Weg, dein Gerät per USB umzuschalten (mode-switch), ist die Ausführung eines Befehls wie setprop sys.usb.config diag,adb als Root, aber es kann auch andere Wege geben (bei bestimmten Telefonherstellern), um den Qualcomm-Diagnostics-over-USB-Modus zu aktivieren. Siehe zum Beispiel diese Seite für mögliche Wege, bei bestimmten Geräten Diag ohne Root zu aktivieren – das bedeutet oft, eine magische Zahlenkombination über die Wähltastatur des Telefons einzugeben.

Bei anderen Geräten ist es möglicherweise auch möglich, eine APK-Datei zu verwenden, die vom Telefonhersteller signiert ist und Systemberechtigungen besitzt, um den Diag-Modus ohne Rooting zu aktivieren (suche zum Beispiel nach der com.longcheertel.midtest-APK für Xiaomi-basierte Geräte).

Sobald dein Gerät korrekt umgeschaltet wurde, sollte die Ausführung des Befehls getprop sys.usb.config über ADB eine Textzeichenfolge anzeigen, die diag enthält.

Auf der Seite deines Computers sollte dann die Ausführung von lsusb (unter Linux) eine Zeile anzeigen, die auf dein Gerät verweist, zum Beispiel:``` Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode

root@kitploit:~
Beachten Sie die `001:076` (Bus-Index/Geräte-Index-Kennung) sowie die `05c6:9091` (Hersteller-ID/Produkt-ID) Informationen, die in dieser Ausgabe enthalten sind.

Sobald Ihnen diese Informationen vorliegen, **können Sie versuchen, ein Flag wie `--usb-modem 05c6:9091` oder `--usb-modem 001:076`** mit QCSuper zu verwenden (bitte beachten Sie die Ziffernauffüllung).

Falls dies nicht eindeutig ist, können Sie den Befehl `lsusb -v -d 05c6:9091` verwenden, der eine detaillierte Ausgabe erzeugen sollte, einschließlich der USB-Konfigurationen, Schnittstellen und Endpunkte des entsprechenden USB-Geräts:```
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 ermöglicht es Ihnen, die Kennungen der Konfiguration und der Schnittstelle, mit der Sie sich auf dem betreffenden Gerät zu verbinden versuchen möchten, manuell auszuwählen (im rohen USB-Deskriptor als bConfigurationValue und bInterfaceNumber bezeichnet), falls diese nicht korrekt erkannt werden. Beispielsweise wählt das Flag --usb-modem 05c6:9091:1:0 die Konfiguration 1 bzw. die Schnittstelle 0 auf dem betreffenden Gerät aus. --usb-modem 05c6:9091:1:4 wählt die Schnittstelle 4 über Konfiguration 1.

Wenn die Angabe der Konfigurations- und Schnittstellenindizes nicht spezifiziert ist, wird der erste Schnittstellendeskriptor auf dem USB-Bus des Systems ausgewählt, der die folgenden Kriterien in der Reihenfolge der Präferenz erfüllt:

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

Bei Verwendung des Flags --usb-modem auto wird das erste Gerät ausgewählt, das eine USB-Schnittstelle bereitstellt, die diesen Kriterien entspricht, und falls erforderlich wird unter Linux das zugrunde liegende Zeichengerät /dev/ttyUSB* (usbserial-Modul) oder /dev/ttyHS* (hso-Modul) ausgewählt, falls das Gerät von einem Kernelmodul erkannt und eingebunden wurde (siehe Abschnitt „Verwendung von QCSuper mit einem USB-Modem“ unten).

Alternativ ist es unter Linux möglicherweise auch möglich, /dev/ttyUSB*-Endpunkte, die den Schnittstellen eines bestimmten USB-Geräts entsprechen, manuell zu erstellen, mit denen Sie sich über ein Flag wie --usb-modem /dev/ttyUSB0 mit QCSuper verbinden können (dies kann Root-Rechte für die Ausführung von QCSuper erfordern), unter Verwendung des usbserial-Moduls. Hierfür können Sie einen Befehl wie den folgenden verwenden:``` sudo rmmod usbserial sudo modprobe usbserial vendor=0x05c6 product=0x9091

root@kitploit:~
## Verwendung von QCSuper mit einem USB-Modem

Sie können QCSuper mit einem USB-Modem verwenden, das einen Diag-Port bereitstellt, und zwar mit der Option `--usb-modem <device>`, wobei `<device>` der Name des pseudo-seriellen Geräts unter Linux (wie `/dev/ttyUSB0`, `/dev/ttyHS2` und andere Möglichkeiten) oder des COM-Ports unter Windows (wie `COM2`, `COM3`) ist.

Bitte beachten Sie, dass Sie QCSuper in den meisten Konfigurationen als Root ausführen müssen, um diesen Modus nutzen zu können, insbesondere für den Umgang mit Störungen an seriellen Schnittstellen.

Wenn Sie nicht wissen, welche Geräte unter `/dev` den Diag-Port bereitstellen, müssen Sie möglicherweise mehrere davon ausprobieren. Sie können versuchen, ihn automatisch zu erkennen, indem Sie den ModemManager-Daemon stoppen (`sudo systemctl stop ModemManager`) und den folgenden Befehl verwenden: `sudo ModemManager --debug 2>&1 | grep -i 'port is QCDM-capable'` und dann Strg-C drücken.

Bitte beachten Sie, dass Ihr Gerät, wenn Sie es beispielsweise mit ModemManager nicht nutzen können, wahrscheinlich nicht vollständig eingerichtet ist und es auch mit QCSuper nicht funktionieren wird. Einige mögliche Stolperfallen sind:

  * Sie haben den passenden [Modusumschaltung](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching)-Befehl für Ihr Gerät nicht angewendet.
  
  * Wenn Sie ein Gerät gekauft haben, das zuvor eine SIM-Karte eines anderen Anbieters enthielt, kann Ihr Gerät SIM-gesperrt sein. Möglicherweise müssen Sie den Entsperrcode des früheren Anbieters verwenden und ihn dem Gerät wie einen PIN-Code übermitteln: `sudo mmcli -i 0 --pin=<your_unlock_code>`

Wenn Ihr auf Qualcomm basierendes USB-Gerät keinen Diag-Port standardmäßig bereitstellt, müssen Sie möglicherweise Folgendes über den AT-Port eingeben, um den Diag-Port zu aktivieren:```
AT$QCDMG

Bitte beachten Sie, dass immer nur ein Client gleichzeitig mit dem Diag-Port kommunizieren kann. Dies gilt für zwei QCSuper-Instanzen oder für QCSuper- und ModemManager-Instanzen.

Wenn ModemManager auf Ihrem System aktiv ist, versucht QCSuper dynamisch eine udev-Regel hinzuzufügen, um den Zugriff auf den Diag-Port zu verhindern, und startet dessen Daemon neu, da dies derzeit der beste Weg ist, dies zu erreichen. Beim Schließen wird diese Regel wieder entfernt.

Unterstützte Geräte

QCSuper wurde erfolgreich getestet mit:

  • Sony Xperia Z (Telefon) - 4G - funktioniert nach dem Rooten und Aktivieren von adb sofort
  • Nexus 6P (Telefon) - 4G - funktioniert nach dem Rooten und Aktivieren von adb sofort
  • ZTE MF823 (USB-Modem) - 4G - es kann erforderlich sein, das Gerät per Mode-Switching auf CDC-WDM umzustellen, das Gerät in den Werksmodus zu versetzen und dann den oben genannten AT-Befehl auszuführen
  • ZTE MF667 (USB-Modem) - 3G, 2011 - sollte sofort funktionieren (Mode-Switching kann erforderlich sein)
  • Option Icon 225 (USB-Modem) - 3G, 2008
  • Novatel Ovation MC998D (USB-Modem)
  • ZTE WCDMA Technologies MSM MF110/MF627/MF636 (USB-Modem)
  • ZTE 403zt (USB-Modem) - 4G
  • OnePlus One und 3 (Telefone)
  • Andromax A16C3H (Telefon)
  • Samsung Galaxy S4 GT-I9505 (Telefon)
  • Virtual Access GW1150 - über TCP-Verbindung
  • Westermo Merlin 4600 - über TCP-Verbindung
  • Fairphone 5 - siehe vollständige Anleitung

Es zielt jedoch darauf ab, für den Erfassungsteil mit der größtmöglichen Bandbreite an Geräten auf Basis eines Qualcomm-Chipsatzes kompatibel zu sein.

Weitere funktionierende Geräte sind aufgeführt unter: https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working"

Zögern Sie nicht, durch das Öffnen eines Github-Issue zu melden, ob Ihr Gerät erfolgreich funktioniert oder nicht.

Verwandte Tools, die das Diag-Protokoll verwenden

Es gibt einige andere offene Tools, die Teile des Diag-Protokolls implementieren und verschiedene Zwecke erfüllen:

  • ModemManager: der wichtigste Daemon, der die Verwendung von USB-Modems unter Linux ermöglicht, implementiert Teile des Diag-Protokolls (als QCDM bezeichnet), um grundlegende Informationen über USB-Modem-Geräte abzurufen.
  • SnoopSnitch (insbesondere gsm-parser): hauptsächlich eine Android-Anwendung, deren Zweck es ist, potenzielle Angriffe auf die Funkschicht zu erkennen (IMSI-Catcher, Fake-BTS...). Sie verfügt außerdem über eine sekundäre Funktion zum Erfassen einiger Signalisierungsdaten in PCAP, die jedoch nicht genau dasselbe liefert wie QCSuper (LTE-Datenverkehr ist beispielsweise nicht in GSMTAP gekapselt, die Geräteunterstützung kann unterschiedlich sein).
    • diag-parser: Ein Linux-Tool, das von der PCAP-Erzeugungsfunktion von SnoopSnitch abgeleitet und etwas verbessert wurde und für die Arbeit mit USB-Modems ausgelegt ist.
  • MobileInsight: Diese Android-Anwendung soll alle Arten von Protokollen parsen, die von Qualcomm- und Mediatek-Geräten ausgegeben werden (nicht nur solche mit Signalisierungsinformationen, sondern auch proprietäre Debugging-Strukturen), und diese in ein spezifisches XML-Darstellungsformat ausgeben. Bietet keine für den Benutzer sichtbaren PCAPs (verwendete jedoch früher Wireshark als Backend zur Konvertierung bestimmter Protokollinformationen in XML).
  • qcombbdbg: Ein Debugger für das Qualcomm-Basisband, der sich selbst durch das Einhängen eines Diag-Befehls einrichtet, indem er den Diag-Befehl verwendet, der das Schreiben in den Speicher ermöglicht, für das USB-Modem Option Icon 225.
  • OpenPST: Eine Reihe von Tools im Zusammenhang mit Qualcomm-Geräten, einschließlich einer GUI-Anwendung, die es beispielsweise ermöglicht, Daten auf dem winzigen eingebetteten Dateisystem zu lesen, das über Diag (EFS) zugänglich ist.
  • SCAT: Ein Tool mit ähnlichen GSMTAP-Erzeugungsfähigkeiten, das eine serielle Schnittstelle als Eingabe verwendet und auch Samsung Exynos unterstützt.
Tool herunterladen