Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
QCSuper — Diag経由でQualcommベースバンドから生の2G/3G/4G/5Gセルラーシグナリングをキャプチャし、Wireshark用のPCAPを出力、EFS/メモリ診断を公開します。 | Kitploit
ツール/GitHubGitHub/p1sec/qcsuper
組み込みシステムセキュリティパケットスニッフィングと分析メモリフォレンジックネットワークフォレンジックモバイルフォレンジックワイヤレスセキュリティモバイルセキュリティ
GitHubp1sec/qcsuper

QCSuper

Diag経由でQualcommベースバンドから生の2G/3G/4G/5Gセルラーシグナリングをキャプチャし、Wireshark用のPCAPを出力、EFS/メモリ診断を公開します。

リポジトリを見る
1.6k27927日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

QCSuper

QCSuper は、Qualcomm ベースのスマートフォンやモデムと通信するツールで、生の 2G/3G/4G(一部モデルでは 5G)無線フレームなどをキャプチャできます。

これを使うと、root化したAndroid端末、USBドングル、または別形式の既存キャプチャを使って、PCAPキャプチャを生成できます。

Screenshot of using QCSuper along with Wireshark

インストール後、互換性のあるデバイスでは、root化したスマートフォンをUSBに接続して、次のように簡単に使用できます:```bash qcsuper --adb --wireshark-live

root@kitploit:~
または、手動で携帯電話のDiagポートを公開するように設定している場合(対応する手順は携帯電話のモデムやメーカーによって異なる場合があります。詳細は以下を参照してください)、またはモバイルブロードバンドドングルを接続している場合:```bash
qcsuper --usb-modem auto --wireshark-live

It uses the Qualcomm Diag プロトコル(QCDM または DM(Diagnostic Monitor)とも呼ばれます)を使用して、スマートフォンのベースバンドと通信します。

お使いのデバイスが動作するかどうかを報告していただけますか?Github issue を開いてください。

目次

  • インストール
    • Linux インストール (PIP)
    • Linux インストール (UV)
    • Windows インストール
  • 対応プロトコル
  • 使用方法に関する注意

付録:

  • USB モデムで QCSuper を使用する
  • 対応デバイス
  • Diag プロトコルを使用する関連ツール

ブログ記事/デモ: QCSuper の紹介: Qualcomm ベースのスマートフォンで 2G/3G/4G の無線トラフィックをキャプチャするツール

その他のドキュメント:

  • Diag プロトコル
  • QCSuper アーキテクチャ

インストール

QCSuper は最近、Ubuntu LTS 22.04+ でテストおよび開発され、Windows 11 でも使用されています。いくつかの Python モジュールに依存しています。互換性を高めるには Linux の使用をお勧めします。

使用するには、スマートフォンが root 化されているか、USB 経由で diag サービスポートを公開している必要があります。スマートフォンとの互換性を確認するには、GSMArena などのサイトでスマートフォンのモデルを調べ、Qualcomm プロセッサを搭載しているか確認してください。

QCSuper が生成した PCAP ファイルを開くには、2G/3G フレームには Wireshark 2.x - 4.x の任意のバージョンを使用できますが、4G フレームには少なくとも Wireshark 2.5.x が必要です(4G フレームから復号された個々の NAS メッセージには 2.6.x が必要です)。Ubuntu は現在、すべてのバージョンに対応する十分に新しいビルドを提供しています。

5G フレームのデコードは Wireshark 3.6.x 以上でテストされており、Wireshark Lua プラグインを自動的にインストールすることで実行されます(Windows では %APPDATA%\Wireshark\plugins、Linux および macOS では ~/.local/lib/wireshark/plugins)。これを避けたい場合は、DONT_INSTALL_WIRESHARK_PLUGIN=1 環境変数を設定することで回避できます。

Linux インストール (PIP)

PyPI から QCSuper の安定版をシステム全体にインストールするには、次のコマンドを実行します:```bash

Install dependencies

sudo apt install python3-pip wireshark

Install stable QCSuper system-wide

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

root@kitploit:~
そして、ターミナルで `qcsuper` と入力するだけで QCSuper を実行できます。

開発版を特定のフォルダにインストールするには、ターミナルを開いて次のように入力します:```bash
# Download QCSuper
git clone https://github.com/P1sec/qcsuper
cd qcsuper

# Install dependencies
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade . --break-system-packages

次に、ターミナルで qcsuper/ ディレクトリから ./qcsuper.py コマンドを使用して QCSuper を実行します。

Linux でのインストール (UV)

Linux では、PIP に代わる最新のパッケージマネージャーである uv を使用して QCSuper をインストールできます。

まず、uv をインストールするために、ターミナルで次のいずれかのコマンドを実行します:```bash sudo snap install --classic astral-uv # On Ubuntu sudo dnf install -y uv # On Fedora sudo pacman -S uv # On Archlinux, Manjaro curl -LsSf https://astral.sh/uv/install.sh | sh # On Debian and others

root@kitploit:~
次に、これを実行して最新の安定版をインストールします:```bash
uv tool install qcsuper

または、以下のコマンドを使用して最新の開発版をインストールできます:```bash uv tool install git+https://github.com/P1sec/qcsuper

root@kitploit:~
あとはこれをターミナルに入力するだけです:```bash
qcsuper

ただし、qcsuper を root として実行する必要がある場合(例: モデムデバイスからデータを読み取っている場合)、sudo で uv を使用すると qcsuper が $PATH に含まれない可能性があります。そのため、次のような対応が必要になる場合があります:```bash sudo env "PATH=$PATH" qcsuper

root@kitploit:~
ツールの開発に参加したい場合は、ソースをダウンロードしてから、ソースディレクトリを指す QCSuper へのシンボリックリンクを `~/.local/bin` に作成するには、以下のコマンドを使用できます:```bash
git clone https://github.com/P1sec/qcsuper
cd qcsuper
uv sync # Create .venv in the current directory
uv tool install -e . # Create symlinks into ~/.local/bin

Windows でのインストール

QCSuper は Windows でも動作しますが、事前に Google の ADB プロンプトがお使いのマシンとデバイスで正しく動作することを確認しておく必要があります。また、お使いのデバイスが疑似シリアル USB 経由で Diag ポートに直接接続する必要がある場合は、libusb-win32 フィルタを手動で作成する必要があります(インストール後にスタートメニューからアクセスできるユーティリティを使用します)。

(デバイスのモードを切り替えると、関連する USB PID/VID が変わる可能性があり、libusb-win32 フィルタ作成ユーティリティや、場合によっては Windows の周辺機器デバイスマネージャーでドライバの関連付けをやり直す必要があることに注意してください)

Windows では、(Google の ADB カーネルドライバに加えて)お使いのスマートフォンの機種に応じた USB ドライバをダウンロードしてインストールする必要がある場合があります(これには Qualcomm 汎用 USB ドライバが含まれる場合があります)。手順については、Google で「お使いのスマートフォンの機種名 + "USB driver"」または「"ADB driver"」を検索してください。

次に、adb を使用してデバイスにアクセスできることを確認する必要があります。adb のダウンロードとセットアップ方法のチュートリアルはここにあります。adb.exe shell(または使用する実行ファイルのパス。ADB 実行ファイルのコピーは QCSuper の qcsuper/inputs/external/adb フォルダにあります)コマンドがプロンプトを表示して続行できることを確認してください。

次に、以下のリンクを順に参照してください(このツールは最近 Windows 11 でテストされていますが、Windows 7 での動作は保証されていません):

  • Python 3.12 をインストール(Windows 7 版: Python 3.7)またはそれ以降(PATH に追加するオプション、すべてのユーザー向けにインストールするオプション、pip をインストールするオプションに必ずチェックを入れてください)
  • Wireshark 4.2 をインストール(Windows 7 版: Wireshark 3.6 をインストール)またはそれ以降
  • libusb-win32 1.2.7.3 をインストール(Windows 7 版: libusb-win32 1.2.3.7)またはそれ以降
  • システム環境変数 %PATH% が更新されていることを確認するため、コマンドプロンプト/ターミナルを再起動してください。
  • QCSuper をダウンロードして展開

必要な Python モジュールをインストールするには、コマンドプロンプトを開いて次のように入力してください:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip

root@kitploit:~
コマンドプロンプトのまま、`cd` コマンドを使用して QCSuper を含むディレクトリに移動します。その後、コマンドを実行できます(オンラインインストーラーから Python 3 をインストールした場合は `py qcsuper.py` または `py3 qcsuper.py` で始まり、Windows ストアからインストールした場合は `python3.exe .\qcsuper.py` で始まります)。

上記のとおり、モードスイッチされたデバイス上の Diag ポートに対応するインターフェイスが QCSuper から見えるようにするために、スタートメニューにあるユーティリティを使用して `libusb-win32` フィルタを追加する必要がある場合があります(ADB ドライバが動作しており、デバイスが正しく root 化されている場合、`--adb` フラグを使用してツールを最初に実行したときに失敗すると、モードスイッチがトリガーされるはずです)。

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Mi スマートフォンの Diag ポートに libusb-win32 フィルタを追加するスクリーンショット">
</p>

## 対応プロトコル

QCSuper は、いくつかのモバイル無線プロトコルのキャプチャをサポートしています。これらのプロトコルは、プロトコルを識別できるようにする標準ヘッダー(UDP/IP にカプセル化される)である [GSMTAP ヘッダー](http://osmocom.org/projects/baseband/wiki/GSMTAP) の後に配置され、GSMTAP パケットは Wireshark で完全に分析可能な [PCAP ファイル](https://wiki.wireshark.org/Development/LibpcapFileFormat) に格納されます。

2G/3G/4G プロトコルはいくつかの「レイヤー」に分類できます。レイヤー1 はデジタル無線変調と多重化に関するもので、レイヤー2 は断片化や確認応答などの処理を担当し、レイヤー3 は本来のシグナリングまたはユーザーデータです。

QCSuper は、ほとんどの場合レイヤー3 でキャプチャできます。これは Wireshark での分析に最も実用的であり、Diag プロトコルがネイティブに提供するものだからです(ここにはいくつかの興味深い情報もあります)。

* 2G (GSM): レイヤー3 以上(RR/...)
* 2.5G (GPRS and EDGE): データの確認応答用のレイヤー2 以上(MAC-RLC/...)
* 3G (UMTS): レイヤー3 以上(RRC/...)
  * さらに、Wireshark は現時点で独自に処理できないため、SIBs(System Information Blocks、全ユーザーにブロードキャストされるデータ)を個別の GSMTAP フレームに再構築することをサポートしています: フラグ `--reassemble-sibs`
* 4G (LTE): レイヤー3 以上(RRC/...)
  * さらに、RRC パケット内に暗号化されて埋め込まれている NAS メッセージを復号し、追加のフレームに格納することをサポートしています: フラグ `--decrypt-nas`

デフォルトでは、デバイスが送信する IP トラフィックは含まれず、シグナリングフレームのみが表示されます。`--include-ip-traffic` オプションを使用すると、生成した IP トラフィックを含めることができます(IP は 2G/3G/4G におけるデータトラフィックのほぼレイヤー3 であり、ヘッダーが圧縮(ROHC)され、小さな PPP ヘッダーが含まれる場合があるという詳細があります)。

送信するデータトラフィックはシグナリングトラフィックとは異なるチャネルを使用します。このチャネルはシグナリングトラフィックを通じて設定されます。したがって、QCSuper はこのチャネルがどのように開始されるかに関するすべての詳細を表示するはずです。

## 使用上の注意

QCSuper を使用するには、1 つの入力(例: `--adb`(Android フォン)、`--usb-modem`)と 1 つ以上のモジュール(Wireshark を開くための `--wireshark-live`、トラフィックを PCAP ファイルに書き込むための `--pcap-dump`、デバイスに関する一般的な情報を取得するための `--info` など)を指定します。

入力できるコマンドの例:```bash
# Open Wireshark directly, using a rooted Android phone as an input,
# for compatible phones:
$ qcsuper --adb --wireshark-live

# ^ this command is equivalent to (prefer this when running as root):
$ qcsuper --adb --pcap-dump - | wireshark -k -i -

# Same, but dump to a PCAP file instead of opening Wireshark directly
$ qcsuper --adb --pcap-dump /tmp/my_pcap.pcap

または、動作するほど単純でない場合は:```bash

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

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

work directly:

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

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

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

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

In this case, you may try:

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

Or, if selecting manually the USB device corresponding to the

Diag-enabled phone turns to be requried:

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

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

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

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

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

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

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

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

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

root@kitploit:~
以下は、QCSuperの現在の使用上の注意です:```
usage: qcsuper [-h] [--cli] [--efs-shell] [--efs-shell2] [-v] (--adb | --adb-wsl2 ADB_WSL2 | --tcp IP_ADDRESS:TCP_PORT | --usb-modem TTY_DEV | --dlf-read DLF_FILE |
               --json-geo-read JSON_FILE) [--info] [--pcap-dump PCAP_FILE] [--wireshark-live] [--memory-dump OUTPUT_DIR] [--dlf-dump DLF_FILE] [--json-geo-dump JSON_FILE]
               [--decoded-sibs-dump] [--reassemble-sibs] [--decrypt-nas] [--include-ip-traffic] [--start MEMORY_START] [--stop MEMORY_STOP]

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

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

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

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

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

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

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

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

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

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

- を指定して標準入力からデータをパイプしたり、標準出力へパイプしたりすることがサポートされています(gzip 圧縮されたコンテンツは検出されない場合があります)。

スマホを root 化するには?

この README ファイルは、スマホを root 化する方法(スマホで su などのコマンドを実行できるようにすること)のガイドではありません。

最近のほとんどの Android 端末では、まず電話の開発者向けオプションにある「OEM/ブートローダー ロック解除」オプションを使用してブートローダーのロックを解除する必要があります。次に、Magisk などのツールを使用して、スマホのブートローダー用のパッチ済みイメージを取得し、その後 fastboot モード でスマホに読み込むことができます。

QCSuper は、スマホが root 化されている場合、Qualcomm ベースの端末でより簡単に動作する可能性が高くなります。しかし、root 化しなくても Qualcomm Diag USB モード(「DM」、Diag Monitor とも呼ばれる)をスマホで有効にする方法がしばしばあります。これはスマホのベンダーに依存し、例えば、スマホのダイヤラー キーパッドで魔法のような数字の組み合わせを入力するなどの方法があります。詳細については、以下の「スマホの診断ポートを手動で有効にするには?」セクションを参照してください。

スマホを root 化する前に、OEM ロック解除済みのスマホに TWRP などの代替リカバリイメージを読み込んで、TWRP などのツールでパーティションのバックアップを実行することも検討してください(Fastboot 経由でイメージを読み込み、TWRP の設定で ADB リンクを有効にし、/dev/block/by-name フォルダ内の選択したパーティションに対して adb pull を使用するだけで完了する場合があります)。

スマホの機種における root 化や Diag モードの有効化について具体的な情報を求める場合は、適切なキーワードを使用して XDA-developers フォーラムで情報を検索するとよいでしょう。

スマホの診断ポートを手動で有効にするには?

Linux カーネル 4.9 以前を搭載した Qualcomm/MSM Android ベースの端末(Android 12 までの一部の端末と Android 10 より前のすべての端末がおおよそ含まれます)では、Qualcomm ベースの Android 端末は通常、ベースバンドの診断ポートとデータを通信できる /dev/diag というシステムデバイスを備えています。

Linux カーネル 4.14 以降を搭載した Qualcomm/MSM Android ベースの端末(Android 10 以降の一部の端末と Android 13 以降のすべての端末がおおよそ含まれます)では、対応する diagchar モジュールが最近の AOSP/Linux カーネルでデフォルトで無効になっているため、/dev/diag は存在しなくなりました。

Linux 4.9 以前の MSM カーネルを搭載した端末では、--adb フラグを使用すると、QCSuper は ADB 経由での接続を自動的に試み、次に /dev/diag デバイスに接続する実行可能ユーティリティを転送しようとし、su -c /data/local/tmp/adb_bridge のようなコマンドで root として起動し、その後 TCP 経由でデバイスと診断データを送受信します(対応する TCP ポートも ADB 経由で転送します)。

Linux 4.14 以降の MSM カーネルを搭載した端末では、--adb フラグを使用すると、QCSuper は ADB 経由での接続を自動的に試み、次に su -c 'setprop sys.usb.config diag,adb' のようなコマンドを使用してスマホの USB ポートをモード切り替えしようとし、その後 --usb-modem auto フラグと同等の処理を実行します(下記参照)。

--usb-modem <value> フラグを使用すると、QCSuper は ADB とは独立して、USB 上の擬似シリアルポートを介して Qualcomm 診断ポートに接続できます。これは、外部デバイスを使用して Android ベースのスマホの Qualcomm diag プロトコルに接続する最も一般的な方法です。

--usb-modem <value> フラグを使用するには、対応するスマホで Qualcomm 診断ポートが有効になっている必要があります。言い換えれば、スマホが事前に USB モード切り替えされている必要があります。

デバイスを USB モード切り替えする最も一般的な方法は、root で setprop sys.usb.config diag,adb のようなコマンドを実行することです。ただし、特定のスマホベンダーでは、Qualcomm の USB 経由診断モードを有効にする他の方法もあるかもしれません。例えば、このページ を参照してください。特定のデバイスで root なしで Diag を有効にする方法が紹介されており、多くの場合、スマホのダイヤラー キーパッドで魔法のような数字の組み合わせを入力する必要があります。

他のデバイスでは、スマホベンダーによって署名され、System 関連の権限を持つ APK ファイルを使用して、root 化せずに Diag モードを有効にできる場合もあります(例えば、Xiaomi ベースのデバイスについては com.longcheertel.midtest APK を調べてみてください)。

デバイスが正しくモード切り替えされると、ADB 経由で getprop sys.usb.config コマンドを実行すると、diag を含むテキスト文字列が表示されるはずです。

次に、コンピュータ側で(Linux 上で)lsusb を実行すると、あなたのデバイスを示す行が表示されるはずです。例:``` Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode

root@kitploit:~
この出力に含まれる `001:076`(バスインデックス/デバイスインデックス識別子)と `05c6:9091`(ベンダーID/プロダクトID)の情報に注意してください。

この情報が得られたら、QCSuper で **`--usb-modem 05c6:9091` や `--usb-modem 001:076` のようなフラグを試すことができます**(ゼロ埋めに注意してください)。

これで判断がつかない場合は、`lsusb -v -d 05c6:9091` コマンドを使用できます。このコマンドは、対応する USB デバイスの USB 構成、インターフェース、エンドポイントを含む詳細な出力を生成するはずです:```
Bus 001 Device 027: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.01
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x05c6 Qualcomm, Inc.
  idProduct          0x9091 Intex Aqua Fish & Jolla C Diagnostic Mode
  bcdDevice            5.04
  iManufacturer           1 Xiaomi
  iProduct                2 Mi 11
  iSerial                 3 d94f4341
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0086
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          4 Default composition
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol     48 
      iInterface              0 
[...]

QCSuper では、関連デバイス上で接続を試みたい構成とインターフェースの識別子を手動で選択できます(生の USB ディスクリプタでは bConfigurationValue および bInterfaceNumber と呼ばれます)。これは、デバイスが正しく検出されない場合に使用します。たとえば、--usb-modem 05c6:9091:1:0 フラグは、関連デバイス上でそれぞれ構成 1 とインターフェース 0 を選択します。 --usb-modem 05c6:9091:1:4 は、構成 1 上のインターフェース 4 を選択します。

構成とインターフェースのインデックス詳細が指定されない場合、システムの USB バス上で以下の基準に一致すると判明した最初のインターフェースディスクリプタを、優先順位の高い順に選択します:

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

--usb-modem auto フラグを使用する場合、この基準に適合する USB インターフェースを公開する最初のデバイスが選択され、Linux では必要に応じて、デバイスがカーネルモジュールによって検出およびマウントされている場合に、基になる /dev/ttyUSB*(usbserial モジュール)または /dev/ttyHS*(hso モジュール)キャラクタデバイスが選択されます(下記の「QCSuper を USB モデムで使用する」セクションを参照してください)。

別の方法として、Linux では、特定の USB デバイスのインターフェースに対応する /dev/ttyUSB* エンドポイントを手動で作成し、--usb-modem /dev/ttyUSB0 のようなフラグを指定して QCSuper で接続することも可能です(これには QCSuper を root 権限で実行する必要がある場合があります)。これには usbserial モジュールを使用します。たとえば、次のようなコマンドを使用できます:``` sudo rmmod usbserial sudo modprobe usbserial vendor=0x05c6 product=0x9091

root@kitploit:~
## QCSuper を USB モデムで使う

`--usb-modem <device>` オプションを使うと、Diag ポートを公開している USB モデムで QCSuper を使用できます。ここで `<device>` は、Linux 上の疑似シリアルデバイス名(`/dev/ttyUSB0`、`/dev/ttyHS2` などの候補)または Windows 上の COM ポート名(`COM2`、`COM3` など)です。

多くのセットアップでは、このモードを使用するために QCSuper を root として実行する必要があることに注意してください。特にシリアルポートの競合を処理する場合が該当します。

`/dev` 配下のどのデバイスが Diag ポートを公開しているか分からない場合は、複数のデバイスを試す必要があるかもしれません。ModemManager デーモンを停止し(`sudo systemctl stop ModemManager`)、次のコマンドを使用して自動検出を試すことができます: `sudo ModemManager --debug 2>&1 | grep -i 'port is QCDM-capable'` その後 Ctrl-C を押します。

そもそも ModemManager などでデバイスを使用できない場合、そのデバイスが完全にセットアップされておらず、QCSuper でも動作しない可能性が高いことに注意してください。考えられる注意点は次のとおりです:

  * デバイスに対して適切な[モード切替](https://wiki.archlinux.org/index.php/USB_3G_Modem#Mode_switching)コマンドを適用していない。

  * 以前に別の事業者の SIM が挿入されていたデバイスを購入した場合、そのデバイスは SIM ロックされている可能性があります。以前の事業者のロック解除コードを PIN コードと同じようにデバイスに送信する必要があるかもしれません: `sudo mmcli -i 0 --pin=<your_unlock_code>`

Qualcomm ベースの USB デバイスがデフォルトで Diag ポートを公開しない場合、Diag ポートを有効にするために AT ポート経由で次のコマンドを入力する必要があるかもしれません:```
AT$QCDMG

一度にDiagポートと通信できるクライアントは1つだけであることに注意してください。これは、2つのQCSuperインスタンス、またはQCSuperとModemManagerのインスタンスにも適用されます。

システム上でModemManagerがアクティブな場合、QCSuperは、ModemManagerがDiagポートにアクセスするのを防ぐudevルールを動的に追加し、そのデーモンを再起動しようとします。現在のところ、これがこの目的を達成する最善の方法であるためです。QCSuperを閉じると、このルールは削除されます。

対応デバイス

QCSuperは以下のデバイスで正常にテストされています:

  • Sony Xperia Z(スマートフォン) - 4G - root化してadbを有効にすれば、そのまま動作します
  • Nexus 6P(スマートフォン) - 4G - root化してadbを有効にすれば、そのまま動作します
  • ZTE MF823(USBモデム) - 4G - デバイスをCDC-WDMにモードスイッチし、デバイスをファクトリーモードに設定してから、前述のATコマンドを実行する必要がある場合があります
  • ZTE MF667(USBモデム) - 3G、2011年 - そのまま動作するはずです(モードスイッチが必要な場合があります)
  • Option Icon 225(USBモデム) - 3G、2008年
  • Novatel Ovation MC998D(USBモデム)
  • ZTE WCDMA Technologies MSM MF110/MF627/MF636(USBモデム)
  • ZTE 403zt(USBモデム) - 4G
  • OnePlus Oneおよび3(スマートフォン)
  • Andromax A16C3H(スマートフォン)
  • Samsung Galaxy S4 GT-I9505(スマートフォン)
  • Virtual Access GW1150 - TCP接続を使用
  • Westermo Merlin 4600 - TCP接続を使用
  • Fairphone 5 - 完全ガイドを参照

ただし、キャプチャ部分に関しては、Qualcommチップセットを搭載した可能な限り幅広いデバイスとの互換性を目指しています。

その他の動作確認済みデバイスは、https://github.com/P1sec/QCSuper/issues?q=label:"confirmed+working" にリストされています。

お使いのデバイスが正常に動作するかどうかを、Github issue を開いてお気軽にご報告ください。

Diagプロトコルを使用する関連ツール

Diagプロトコルの一部を実装し、さまざまな目的に役立つオープンなツールが他にもいくつかあります:

  • ModemManager:Linux上でUSBモデムを使用可能にする主要なデーモンであり、USBモデムデバイスに関する基本情報を取得するために、Diagプロトコル(QCDMと呼ばれる)の一部を実装しています。
  • SnoopSnitch(特にgsm-parser):主に無線レイヤーへの潜在的な攻撃(IMSIキャッチャー、偽のBTS...)を検出することを目的としたAndroidアプリケーションです。また、一部のシグナリングトラフィックをPCAPにキャプチャする二次機能もありますが、これはQCSuperとまったく同じものを提供するわけではありません(例えば、LTEトラフィックはGSMTAPにカプセル化されず、対応デバイスも異なる場合があります)。
    • diag-parser:SnoopSnitchのPCAP生成機能から派生したLinuxツールで、多少改善されており、USBモデムで動作するように設計されています。
  • MobileInsight:QualcommおよびMediatekデバイスが出力するあらゆる種類のログ(シグナリング情報を含むものだけでなく、独自のデバッグ構造も)を解析し、これらを特定のXML表現形式にダンプすることを目的としたAndroidアプリケーションです。ユーザー向けのPCAPは提供しません(ただし、以前は特定のプロトコル情報をXMLに変換するためのバックエンドとしてWiresharkを使用していました)。
  • qcombbdbg:Diagコマンドをフックして自身をセットアップするQualcommベースバンド用のデバッガで、メモリへの書き込みを可能にするDiagコマンドを使用します。Option Icon 225 USBモデムを対象としています。
  • OpenPST:Qualcommデバイスに関連するツールセットで、例えばDiag(EFS)を介してアクセスできる小さな組み込みファイルシステム上のデータを読み取ることができるGUIユーティリティを含みます。
  • SCAT:シリアルポートを入力として受け取り、同様のGSMTAP生成機能を備えたツールで、Samsung Exynosにも対応しています。
ツールをダウンロード