
QCSuper는 Qualcomm 기반 휴대폰 및 모뎀과 통신하는 도구로, 무엇보다도 원시 2G/3G/4G 무선 프레임을 캡처할 수 있게 해줍니다.
QCSuper는 Qualcomm 기반 휴대폰 및 모뎀과 통신하는 도구로, 2G/3G/4G 원시(일부 모델의 경우 5G) 무선 프레임을 캡처할 수 있게 해줍니다.
이를 통해 루팅된 Android 휴대폰, USB 동글 또는 다른 형식의 기존 캡처를 사용하여 PCAP 캡처를 생성할 수 있습니다.

설치한 후에는 루팅된 휴대폰을 USB에 연결하고 호환 기기와 함께 사용하는 것은 다음과 같이 간단합니다:```bash qcsuper --adb --wireshark-live
또는, 휴대폰에서 Diag port 노출을 수동으로 활성화한 경우(해당 절차는 휴대폰 모뎀 및 제조업체에 따라 다를 수 있으며, 자세한 설명은 아래를 참조하세요), 또는 모바일 광대역 동글을 연결한 경우:```bash
qcsuper --usb-modem auto --wireshark-live
Qualcomm Diag 프로토콜(QCDM 또는 DM(진단 모니터)이라고도 함)을 사용하여 휴대폰의 베이스밴드와 통신합니다.
기기가 작동하는지 작동하지 않는지 보고하시겠습니까? Github issue를 열 수 있습니다.
부록:
블로그 게시물/데모: QCSuper 소개: Qualcomm 기반 휴대폰에서 2G/3G/4G 무선 트래픽을 캡처하는 도구
추가 문서:
QCSuper는 최근 **Ubuntu LTS 22.04+**에서 테스트 및 개발되었으며 Windows 11에서도 사용되었습니다. 이 도구는 몇 가지 Python 모듈에 의존합니다. 더 나은 호환성을 위해 Linux 사용을 권장합니다.
사용하려면 휴대폰이 루팅되어 있어야 하거나 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.py 명령을 사용하여 qcsuper/ 디렉터리에서 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
If you wish to participate to the development of the tool, you can use these commands in order to download the source, then create symbolic links to QCSuper into `~/.local/bin` towards the source directory:
도구 개발에 참여하려면 다음 명령을 사용하여 소스를 다운로드한 다음 `~/.local/bin`에 있는 QCSuper에 대한 심볼릭 링크를 소스 디렉터리로 만들 수 있습니다:```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(또는 사용하는 실행 파일 경로, QCSuper의 qcsuper/inputs/external/adb 폴더에 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 Store에서 설치한 경우 `python3.exe .\qcsuper.py`로 시작해야 합니다).
위에서 언급한 대로, 모드 전환된 장치에서 Diag 포트에 해당하는 인터페이스가 QCSuper에 보이도록 하려면 시작 메뉴에서 제공되는 유틸리티를 통해 `libusb-win32` 필터를 추가해야 할 수 있습니다 (`--adb` 플래그를 사용하여 도구를 처음 실행하려는 시도가 실패하면 ADB 드라이버가 작동 중이고 장치가 올바르게 루팅된 경우 모드 전환이 트리거되어야 합니다).
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="Mi 폰의 Diag 포트에 libusb-win32 필터를 추가하는 스크린샷">
</p>
## 지원되는 프로토콜
QCSuper는 몇 가지 모바일 무선 프로토콜의 캡처를 지원합니다. 이 프로토콜들은 프로토콜을 식별할 수 있게 해주는 표준 헤더인 [GSMTAP 헤더](http://osmocom.org/projects/baseband/wiki/GSMTAP) 뒤에 배치되며 (UDP/IP로 캡슐화됨), GSMTAP 패킷은 Wireshark로 완전히 분석할 수 있는 [PCAP 파일](https://wiki.wireshark.org/Development/LibpcapFileFormat)에 저장됩니다.
2G/3G/4G 프로토콜은 몇 가지 '계층(layer)'으로 나눌 수 있습니다. 계층 1은 디지털 무선 변조와 다중화에 관한 것이고, 계층 2는 분할(fragmentation)과 확인 응답(acknowledgement) 같은 것을 처리하며, 계층 3은 실제 시그널링 또는 사용자 데이터입니다.
QCSuper는 대부분 계층 3에서 캡처할 수 있게 해줍니다. 계층 3은 Wireshark로 분석하기에 가장 실용적이고, Diag 프로토콜이 기본적으로 제공하는 것이기도 합니다 (그리고 여기에 몇 가지 흥미로운 정보가 있습니다).
* 2G (GSM): 계층 3 이상 (RR/...)
* 2.5G (GPRS 및 EDGE): 데이터 확인 응답을 위한 계층 2 이상 (MAC-RLC/...)
* 3G (UMTS): 계층 3 이상 (RRC/...)
* 또한 Wireshark가 현재 자체적으로 수행할 수 없으므로 SIB(시스템 정보 블록, 모든 사용자에게 브로드캐스트되는 데이터)를 별도의 GSMTAP 프레임으로 재조립하는 것을 지원합니다: `--reassemble-sibs` 플래그
* 4G (LTE): 계층 3 이상 (RRC/...)
* 또한 RRC 패킷에 암호화되어 포함된 복호화된 NAS 메시지를 추가 프레임에 넣는 것을 지원합니다: `--decrypt-nas` 플래그
기본적으로 장치에서 전송되는 IP 트래픽은 포함되지 않으며 시그널링 프레임만 볼 수 있습니다. `--include-ip-traffic` 옵션을 사용하여 생성하는 IP 트래픽을 포함할 수 있습니다 (IP는 2G/3G/4G에서 데이터 트래픽의 계층 3이며, 헤더가 압축될 수 있고(ROHC) 아주 작은 PPP 헤더가 포함될 수 있다는 세부 사항이 있습니다).