
QCSuperは、Qualcommベースのスマートフォンやモデムと通信するツールで、生の2G/3G/4G無線フレームのキャプチャなどを可能にします。
QCSuper は、Qualcomm ベースのスマートフォンやモデムと通信するツールで、生の 2G/3G/4G(一部モデルでは 5G)無線フレームなどをキャプチャできます。
これを使うと、root化したAndroid端末、USBドングル、または別形式の既存キャプチャを使って、PCAPキャプチャを生成できます。

インストール後、互換性のあるデバイスでは、root化したスマートフォンをUSBに接続して、次のように簡単に使用できます:```bash qcsuper --adb --wireshark-live
または、手動で携帯電話のDiagポートを公開するように設定している場合(対応する手順は携帯電話のモデムやメーカーによって異なる場合があります。詳細は以下を参照してください)、またはモバイルブロードバンドドングルを接続している場合:```bash
qcsuper --usb-modem auto --wireshark-live
It uses the Qualcomm Diag プロトコル(QCDM または DM(Diagnostic Monitor)とも呼ばれます)を使用して、スマートフォンのベースバンドと通信します。
お使いのデバイスが動作するかどうかを報告していただけますか?Github issue を開いてください。
付録:
ブログ記事/デモ: QCSuper の紹介: Qualcomm ベースのスマートフォンで 2G/3G/4G の無線トラフィックをキャプチャするツール
その他のドキュメント:
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 環境変数を設定することで回避できます。
PyPI から QCSuper の安定版をシステム全体にインストールするには、次のコマンドを実行します:```bash
sudo apt install python3-pip wireshark
sudo pip3 install --upgrade qcsuper --break-system-packages
そして、ターミナルで `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 では、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
次に、これを実行して最新の安定版をインストールします:```bash
uv tool install qcsuper
または、以下のコマンドを使用して最新の開発版をインストールできます:```bash uv tool install git+https://github.com/P1sec/qcsuper
あとはこれをターミナルに入力するだけです:```bash
qcsuper
ただし、qcsuper を root として実行する必要がある場合(例: モデムデバイスからデータを読み取っている場合)、sudo で uv を使用すると qcsuper が $PATH に含まれない可能性があります。そのため、次のような対応が必要になる場合があります:```bash
sudo env "PATH=$PATH" qcsuper
ツールの開発に参加したい場合は、ソースをダウンロードしてから、ソースディレクトリを指す 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
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 での動作は保証されていません):
%PATH% が更新されていることを確認するため、コマンドプロンプト/ターミナルを再起動してください。必要な Python モジュールをインストールするには、コマンドプロンプトを開いて次のように入力してください:```bash pip3 install --upgrade pyserial pyusb crcmod pycrate https://github.com/pyocd/libusb-package/archive/master.zip
コマンドプロンプトのまま、`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 ヘッダーが含まれる場合があるという詳細があります)。