Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
QCSuper — QCSuper هي أداة تتواصل مع الهواتف وأجهزة المودم القائمة على معالجات Qualcomm، مما يتيح التقاط إطارات الراديو الخام لشبكات 2G/3G/4G، من بين أمور أخرى. | Kitploit
أدوات/GitHubGitHub/p1sec/qcsuper
أمان الأنظمة المدمجةالتقاط وتحليل الحزمتحليل الذاكرة الجنائيتحليل الشبكة الجنائيتحليل الأجهزة المحمولة الجنائيأمن الشبكات اللاسلكيةأمن الجوال
GitHubp1sec/qcsuper

QCSuper

QCSuper هي أداة تتواصل مع الهواتف وأجهزة المودم القائمة على معالجات Qualcomm، مما يتيح التقاط إطارات الراديو الخام لشبكات 2G/3G/4G، من بين أمور أخرى.

عرض المستودع
1.6k27913منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

QCSuper

QCSuper هي أداة تتواصل مع الهواتف وأجهزة المودم القائمة على Qualcomm، وتسمح بـالتقاط إطارات الراديو الخام لشبكات 2G/3G/4G (وبالنسبة لبعض الطرازات 5G)، من بين أشياء أخرى.

ستتيح لك إنشاء ملفات PCAP لالتقاطها باستخدام هاتف Android بصلاحيات الروت، أو دونغل USB، أو ملف التقاط موجود بتنسيق آخر.

لقطة شاشة لاستخدام QCSuper مع Wireshark

بعد تثبيته، يمكنك توصيل هاتفك المجذّر عبر USB واستخدامه مع جهاز متوافق بكل بساطة كما يلي:```bash qcsuper --adb --wireshark-live

root@kitploit:~
أو، إذا قمت بتمكين كشف منفذ Diag يدويًا على هاتفك (قد يختلف الإجراء المقابل اعتمادًا على مودم هاتفك والشركة المصنعة، انظر أدناه لمزيد من التوضيحات)، أو إذا قمت بتوصيل دونغل نطاق عريض متنقل:```bash
qcsuper --usb-modem auto --wireshark-live

يستخدم بروتوكول Qualcomm Diag، المعروف أيضًا باسم QCDM أو DM (Diagnostic Monitor)، للتواصل مع النطاق الأساسي لهاتفك.

هل ترغب في الإبلاغ عما إذا كان جهازك يعمل أم لا؟ يمكنك فتح مشكلة على GitHub.

جدول المحتويات

  • التثبيت
    • التثبيت على لينكس (PIP)
    • التثبيت على لينكس (UV)
    • التثبيت على ويندوز
  • البروتوكولات المدعومة
  • إشعار الاستخدام

الملاحق:

  • استخدام QCSuper مع مودم USB
  • الأجهزة المدعومة
  • أدوات ذات صلة تستخدم بروتوكول Diag

تدوينة/عرض توضيحي: تقديم QCSuper: أداة لالتقاط حركة مرور 2G/3G/4G عبر الأثير على هواتف Qualcomm

مزيد من الوثائق:

  • بروتوكول Diag
  • بنية QCSuper

التثبيت

تم اختبار QCSuper مؤخرًا وتطويره على Ubuntu LTS 22.04+ كما استُخدم أيضًا على Windows 11. يعتمد على عدد من وحدات Python. يُنصح باستخدام لينكس لتوافق أفضل.

لاستخدامه، يجب أن يكون هاتفك متجذرًا (Root) أو يعرض منفذ خدمة diag عبر USB. للتحقق من التوافق مع هاتفك، ابحث عن طراز الهاتف على موقع مثل GSMArena وتحقق مما إذا كان يحتوي على معالج Qualcomm.

لفتح ملفات PCAP التي ينتجها QCSuper، يمكنك استخدام أي إصدار من Wireshark 2.x - 4.x لإطارات 2G/3G، لكنك تحتاج إلى Wireshark 2.5.x على الأقل لإطارات 4G (وإصدار 2.6.x لرسائل NAS الفردية التي تم فك تشفيرها من إطارات 4G). يوفر Ubuntu حاليًا إصدارًا حديثًا بما يكفي لجميع الإصدارات.

تم اختبار فك تشفير إطارات 5G باستخدام Wireshark 3.6.x والإصدارات الأحدث، وسيتم ذلك من خلال التثبيت التلقائي لملحق Lua الخاص بـ Wireshark (في %APPDATA%\Wireshark\plugins على ويندوز أو في ~/.local/lib/wireshark/plugins على لينكس وmacOS)، ويمكن تجنب ذلك عن طريق تعيين متغير البيئة DONT_INSTALL_WIRESHARK_PLUGIN=1 إذا كنت ترغب في تجنبه.

التثبيت على لينكس (PIP)

لتثبيت الإصدار الثابت من QCSuper على مستوى النظام من PyPI، يمكنك تشغيل هذه الأوامر:```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/ باستخدام الأمر ./qcsuper.py في الطرفية.

تثبيت لينكس (UV)

في لينكس، يمكنك تثبيت QCSuper باستخدام مدير الحزم uv الذي يُعد بديلًا حديثًا لـ PIP.

أولًا، قم بتشغيل أحد هذه الأوامر في الطرفية لتثبيت 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، على سبيل المثال لأنك تقرأ بيانات من جهاز مودم، فقد لا يكون qcsuper في $PATH عند استخدام uv مع sudo، لذلك قد يتطلب الأمر القيام بشيء مثل:```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

التثبيت على ويندوز

يمكن تشغيل QCSuper على ويندوز، ولكن يجب عليك مسبقًا التأكد من أن موجه ADB الخاص بجوجل يعمل بشكل صحيح على جهازك مع جهازك، كما يجب عليك أيضًا إنشاء عوامل تصفية libusb-win32 يدويًا (من خلال الأداة المتاحة في قائمة ابدأ بعد تثبيتها) في حال احتياج جهازك إلى الاتصال المباشر بمنفذ Diag عبر USB شبه تسلسلي.

(يرجى ملاحظة أنه إذا قمت بتبديل وضع جهازك، فقد تتغير معرفات USB PID/VID المرتبطة، وقد يتطلب الأمر إعادة ربط برامج التشغيل في أداة إنشاء عوامل تصفية libusb-win32 - و/أو في إدارة الأجهزة الطرفية في ويندوز حسب الحالة)

على ويندوز، قد تحتاج (بالإضافة إلى برامج تشغيل نواة ADB الخاصة بجوجل) إلى تنزيل وتثبيت برامج تشغيل USB الخاصة بهاتفك وفقًا لطراز هاتفك (قد يشمل ذلك برامج تشغيل USB العامة من Qualcomm). يرجى البحث في جوجل عن طراز هاتفك + "USB driver" أو "ADB driver" للحصول على الإرشادات.

بعد ذلك، تحتاج إلى التأكد من أنك تستطيع الوصول إلى جهازك باستخدام adb. يمكنك العثور على برنامج تعليمي حول كيفية تنزيل adb وإعداده هنا. يجب أن يعرض أمر adb.exe shell (أو أي مسار تنفيذي تستخدمه، توجد نسخة من ملف ADB التنفيذي في مجلد qcsuper/inputs/external/adb الخاص بـ QCSuper) موجه أوامر للمتابعة.

ثم اتبع هذه الروابط (تم اختبار الأداة مؤخرًا على ويندوز 11 - وهي غير مضمونة للعمل على ويندوز 7) بالترتيب التالي:

  • ثبّت Python 3.12 (إصدار ويندوز 7: Python 3.7) أو إصدار أحدث (تأكد من تحديد الخيارات لإدراجه في PATH، وتثبيته لجميع المستخدمين وتثبيت pip)
  • ثبّت Wireshark 4.2 (إصدار ويندوز 7: ثبّت Wireshark 3.6) أو إصدار أحدث
  • ثبّت libusb-win32 1.2.7.3 (إصدار ويندوز 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:~
بينما لا تزال في موجه الأوامر، انتقل إلى المجلد الذي يحتوي على QCSuper باستخدام الأمر `cd`. يمكنك بعد ذلك تنفيذ الأوامر (التي يجب أن تبدأ بـ `py qcsuper.py` أو `py3 qcsuper.py` إذا قمت بتثبيت Python 3 من المثبّت عبر الإنترنت، أو `python3.exe .\qcsuper.py` إذا قمت بتثبيته من متجر Windows).

كما ذُكر أعلاه، من الممكن أن تضطر إلى إضافة عامل تصفية `libusb-win32` من خلال الأداة المتاحة في قائمة ابدأ لضمان أن الواجهة المقابلة لمنفذ Diag مرئية لـ QCSuper على الجهاز المُبدَّل وضع تشغيله (من المفترض أن تؤدي المحاولة الفاشلة الأولى لتشغيل الأداة باستخدام علامة `--adb` إلى تبديل الوضع إذا كان برنامج تشغيل ADB يعمل وكان الجهاز مُجذَّرًا بشكل صحيح).

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/48811/e7aab43a3643cd941857febb8fcb8e2d7bf8c3638629a4e5591dc689afa48c07.png" alt="لقطة شاشة لإضافة عامل تصفية libusb-win32 لمنفذ Diag لهاتف Mi">
</p>

## البروتوكولات المدعومة

يدعم QCSuper التقاط عدد من بروتوكولات الراديو المحمول. تُوضع هذه البروتوكولات بعد ترويسة [GSMTAP](http://osmocom.org/projects/baseband/wiki/GSMTAP)، وهي ترويسة قياسية (مغلّفة داخل UDP/IP) تسمح بتحديد البروتوكول، وتوضع حزم GSMTAP في ملف [PCAP](https://wiki.wireshark.org/Development/LibpcapFileFormat) يمكن تحليله بالكامل باستخدام Wireshark.

يمكن تقسيم بروتوكولات 2G/3G/4G إلى عدد قليل من "الطبقات": الطبقة 1 تتعلق بتعديل الراديو الرقمي وتعدد الإرسال، والطبقة 2 تتعامل مع أمور مثل التجزئة والإقرار، والطبقة 3 هي الإشارات الفعلية أو بيانات المستخدم.

تتيح لك QCSuper غالبًا التقاط الطبقة 3، لأنها الأكثر عملية للتحليل باستخدام Wireshark، وهي ما يوفره بروتوكول Diag بشكل أصلي (وبعض المعلومات المثيرة للاهتمام موجودة هنا).

* 2G (GSM): الطبقة 3 وما فوق (RR/...)
* 2.5G (GPRS وEDGE): الطبقة 2 وما فوق (MAC-RLC/...) لإقرارات البيانات
* 3G (UMTS): الطبقة 3 وما فوق (RRC/...)
  * بالإضافة إلى ذلك، يدعم إعادة تجميع SIBs (كتل معلومات النظام، البيانات التي تُبث لجميع المستخدمين) في إطارات GSMTAP منفصلة، لأن Wireshark لا يمكنه القيام بذلك بنفسه حاليًا: العلامة `--reassemble-sibs`
* 4G (LTE): الطبقة 3 وما فوق (RRC/...)
  * بالإضافة إلى ذلك، يدعم وضع رسائل NAS المفكوكة تشفيرها، وهي رسائل مشفرة ومضمّنة داخل حزمة RRC، في إطارات إضافية: العلامة `--decrypt-nas`

بشكل افتراضي، لا يتم تضمين حركة مرور IP المرسلة من جهازك، فأنت ترى إطارات الإشارات فقط. يمكنك تضمين حركة مرور IP التي تولّدها باستخدام الخيار `--include-ip-traffic` (حيث تكون IP بالكاد الطبقة 3 لحركة بياناتك في 2G/3G/4G، مع تفصيل أن ترويساتها قد تكون مضغوطة (ROHC) وقد يُضمَّن ترويسة PPP صغيرة جدًا).

حركة البيانات التي ترسلها تستخدم قناة مختلفة عن حركة الإشارات، ويتم إعداد هذه القناة عبر حركة الإشارات؛ وبالتالي يجب أن تُظهر لك QCSuper كل التفاصيل ذات الصلة بكيفية بدء هذه القناة.

## ملاحظة الاستخدام

لاستخدام QCSuper، تحدّد مدخلًا واحدًا (مثل: `--adb` (هاتف Android)، `--usb-modem`) ووحدة أو أكثر (`--wireshark-live` لفتح Wireshark، `--pcap-dump` لكتابة الحركة إلى ملف PCAP، `--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.

تحديد - لتوجيه البيانات من الإدخال القياسي (stdin) أو نحو الإخراج القياسي (stdout) مدعوم (قد لا يتم اكتشاف المحتوى المضغوط gzip).

كيف أقوم بتجذير هاتفي؟

هذا الملف التمهيدي (README) ليس دليلاً حول كيفية تجذير هاتفك (الحصول على هاتف يمكنك من تشغيل أوامر مثل "su").

في معظم أجهزة أندرويد الحديثة، يجب عليك أولاً استخدام خيار "فتح قفل OEM/bootloader" الموجود في إعدادات المطورين بالهاتف لفتح قفل الـ bootloader، ثم يمكنك استخدام أداة مثل Magisk التي تمكنك من الحصول على صورة معدّلة (patched) لـ bootloader هاتفك، لتتمكن بعدها من تحميلها على هاتفك في نمط fastboot.

سيكون لدى QCSuper فرصة أكبر للعمل بسهولة على جهازك القائم على Qualcomm عندما يكون هاتفك مجذّرًا (rooted)، لكن غالبًا ما توجد طرق لتمكين وضع USB التشخيصي من Qualcomm (يُعرف أيضًا باسم "DM"، Diag Monitor) على هاتفك دون الحاجة إلى تجذير الهاتف. هذا يعتمد على الشركة المصنعة لهاتفك ويتم عبر، على سبيل المثال، كتابة مجموعة سحرية من الأرقام على لوحة مفاتيح الاتصال بالهاتف. يرجى الاطلاع على قسم "كيف أقوم بتمكين المنافذ التشخيصية يدويًا على هاتفي؟" أدناه لمزيد من التفاصيل.

قبل تجذير هاتفك، تذكر أنك قد ترغب أيضًا في تحميل صورة استرداد بديلة مثل TWRP على هاتفك المفتوح القفل من OEM لإجراء نسخ احتياطي للقسم (Partition) باستخدام أداة مثل TWRP (قد يكون الأمر ببساطة تحميل الصورة عبر Fastboot، ثم تفعيل رابط ADB في إعدادات TWRP، واستخدام adb pull على الأقسام المحددة في مجلد /dev/block/by-name).

للحصول على تفاصيل محددة حول تجذير أو تفعيل وضع Diag على طراز هاتفك، يمكنك البحث عن المعلومات في منتدى XDA-developers باستخدام كلمات مفتاحية مناسبة.

كيف أقوم بتمكين المنافذ التشخيصية يدويًا على هاتفي؟

على أجهزة أندرويد القائمة على Qualcomm/MSM التي تحمل نواة Linux 4.9 أو إصدارًا أقدم (يشمل ذلك تقريبًا جزءًا من الأجهزة حتى Android 12 وجميع الأجهزة قبل Android 10)، تحتوي أجهزة أندرويد القائمة على Qualcomm عادةً على جهاز نظام يسمى /dev/diag يسمح بنقل البيانات إلى المنفذ التشخيصي لقاعدة البيانات الأساسية (Baseband).

على أجهزة أندرويد القائمة على Qualcomm/MSM التي تحمل نواة Linux 4.14 أو إصدارًا أحدث (يشمل ذلك تقريبًا جزءًا من الأجهزة بدءًا من Android 10 وجميع الأجهزة بدءًا من Android 13)، اختفى /dev/diag، لأن وحدة diagchar المقابلة معطّلة افتراضيًا في نوى AOSP/Linux الحديثة.

على الأجهزة التي تحمل نواة MSM لإصدار Linux 4.9 أو أقدم، عند استخدام الخيار --adb، ستحاول QCSuper الاتصال عبر ADB تلقائيًا، ثم ستحاول نقل أداة تنفيذية تتصل بجهاز /dev/diag، لتشغيلها بصلاحيات الجذر (root) باستخدام أمر مثل su -c /data/local/tmp/adb_bridge، ومن ثم نقل البيانات التشخيصية من الجهاز عبر TCP (مع إعادة توجيه منفذ TCP المقابل عبر ADB أيضًا).

على الأجهزة التي تحمل نواة MSM لإصدار Linux 4.14 أو أحدث، عند استخدام الخيار --adb، ستحاول QCSuper الاتصال عبر ADB تلقائيًا، ثم ستحاول تبديل نمط منفذ USB للهاتف باستخدام أمر مثل su -c 'setprop sys.usb.config diag,adb'، ثم تنفيذ ما يعادل الخيار --usb-modem auto (انظر أدناه).

يسمح الخيار --usb-modem <value> لـ QCSuper بالاتصال بمنفذ التشخيص الخاص بـ Qualcomm عبر منفذ تسلسلي افتراضي (pseudo-serial) فوق USB، بشكل مستقل عن ADB، وهي الطريقة الأكثر شيوعًا للاتصال ببروتوكول Qualcomm diag لهاتف قائم على أندرويد باستخدام جهاز خارجي.

لاستخدام الخيار --usb-modem <value>، يجب أن يكون منفذ التشخيص الخاص بـ Qualcomm مفعّلاً على الهاتف المقابل، وبعبارة أخرى يجب أن يكون الهاتف قد خضع لتبديل نمط USB مسبقًا.

الطريقة الأكثر شيوعًا لتبديل نمط USB لجهازك هي تنفيذ أمر مثل setprop sys.usb.config diag,adb بصلاحيات الجذر (root)، لكن قد توجد طرق أخرى (مع بعض الشركات المصنعة للهواتف) لتفعيل وضع Qualcomm التشخيصي عبر USB، انظر على سبيل المثال هذه الصفحة لمعرفة الطرق الممكنة، لبعض الأجهزة، لتفعيل Diag بدون جذر - وغالبًا ما يتضمن ذلك كتابة مجموعة سحرية من الأرقام على لوحة مفاتيح الاتصال بالهاتف.

في أجهزة أخرى، قد يكون من الممكن أيضًا استخدام ملف APK موقّع من الشركة المصنعة للهاتف وله صلاحيات متعلقة بالنظام (System) لتفعيل وضع Diag دون تجذير (ابحث عن APK باسم com.longcheertel.midtest لأجهزة Xiaomi على سبيل المثال).

بمجرد تبديل نمط جهازك بشكل صحيح، فإن تشغيل الأمر getprop sys.usb.config عبر ADB يجب أن يعرض سلسلة نصية تحتوي على diag.

على جهاز الكمبيوتر الخاص بك، بعد ذلك، يجب أن يعرض تشغيل lsusb (على Linux) سطرًا يشير إلى جهازك، على سبيل المثال:``` Bus 001 Device 076: ID 05c6:9091 Qualcomm, Inc. Intex Aqua Fish & Jolla C Diagnostic Mode

root@kitploit:~
لاحظ `001:076` (مُعرّف فهرس الناقل/فهرس الجهاز)، ومعلومات `05c6:9091` (مُعرّف البائع/مُعرّف المنتج) الموجودة في هذا المخرَج.

بمجرد أن تتوفر لديك هذه المعلومات، **يمكنك محاولة استخدام علم مثل `--usb-modem 05c6:9091` أو `--usb-modem 001:076`** مع QCSuper (يرجى مراعاة حشو الأرقام).

إذا لم يكن ذلك حاسمًا، يمكنك استخدام الأمر `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 تحديد معرّفات التهيئة والواجهة التي ترغب في محاولة الاتصال بها على الجهاز المعني يدويًا (المعيّنة كـ bConfigurationValue و bInterfaceNumber في واصف USB الخام)، في حالة عدم اكتشافها بشكل صحيح. على سبيل المثال، العلم --usb-modem 05c6:9091:1:0 سيختار التهيئة 1 والواجهة 0 على الجهاز المعني على التوالي. وسيختار --usb-modem 05c6:9091:1:4 الواجهة 4 على التهيئة 1.

إذا لم يتم تحديد تفاصيل فهارس التهيئة والواجهة، فسيتم اختيار أول واصف واجهة على ناقل USB للنظام يتم العثور عليه مطابقًا للمعايير التالية، حسب ترتيب الأفضلية:

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

عند استخدام العلم --usb-modem auto، يتم اختيار أول جهاز يكشف واجهة USB متوافقة مع هذه المعايير، وعند الحاجة على لينكس، يتم تحديد جهاز الأحرف الأساسي /dev/ttyUSB* (وحدة usbserial) أو /dev/ttyHS* (وحدة hso) في حالة اكتشاف الجهاز وتثبيته بواسطة وحدة النواة (انظر قسم "استخدام QCSuper مع مودم USB" أدناه).

بدلاً من ذلك، على لينكس، قد يكون من الممكن أيضًا إنشاء نقاط نهاية /dev/ttyUSB* يدويًا المقابلة لواجهات جهاز USB معين، وستكون قادرًا على الاتصال باستخدام QCSuper مع علم مثل --usb-modem /dev/ttyUSB0 (قد يتطلب ذلك تشغيل QCSuper بصلاحيات الجذر)، باستخدام وحدة usbserial. للقيام بذلك، يمكنك استخدام أمر مثل:``` sudo rmmod usbserial sudo modprobe usbserial vendor=0x05c6 product=0x9091

root@kitploit:~
## استخدام QCSuper مع مودم USB

يمكنك استخدام QCSuper مع مودم USB يعرض منفذ Diag باستخدام الخيار `--usb-modem <device>`، حيث `<device>` هو اسم الجهاز شبه التسلسلي على لينكس (مثل `/dev/ttyUSB0`، `/dev/ttyHS2` واحتمالات أخرى) أو منفذ 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 من مشغل مختلف، فقد يكون جهازك مقفلاً بالشريحة. قد تحتاج إلى استخدام رمز الفتح من المشغل السابق وإدخاله إلى الجهاز، كما لو كان رمز PIN: `sudo mmcli -i 0 --pin=<your_unlock_code>`

إذا كان جهاز USB القائم على Qualcomm لا يعرض منفذ Diag افتراضيًا، فقد تحتاج إلى كتابة ما يلي عبر منفذ AT لتمكين منفذ Diag:```
AT$QCDMG

يرجى ملاحظة أنه يمكن لعميل واحد فقط التواصل مع منفذ Diag في نفس الوقت. ينطبق هذا على مثيلين من QCSuper، أو مثيلات QCSuper و ModemManager.

إذا كان ModemManager نشطًا على نظامك، فسيحاول QCSuper إضافة قاعدة udev ديناميكيًا لمنعه من الوصول إلى منفذ Diag وإعادة تشغيل الخفي الخاص به، حيث أن هذه هي أفضل طريقة حاليًا لتحقيق ذلك. وسيقوم بحذف هذه القاعدة عند الإغلاق.

الأجهزة المدعومة

تم اختبار QCSuper بنجاح مع:

  • Sony Xperia Z (هاتف) - 4G - يعمل مباشرة بعد عمل روت وتفعيل adb
  • Nexus 6P (هاتف) - 4G - يعمل مباشرة بعد عمل روت وتفعيل 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.

أدوات ذات صلة تستخدم بروتوكول Diag

هناك عدد قليل من الأدوات المفتوحة الأخرى التي تنفذ أجزاءً من بروتوكول Diag، وتخدم أغراضًا مختلفة:

  • ModemManager: الخفي الرئيسي الذي يتيح استخدام مودمات USB على Linux، وينفذ أجزاءً من بروتوكول Diag (المسمى QCDM) من أجل استرجاع معلومات أساسية حول أجهزة مودم USB.
  • SnoopSnitch (وتحديدًا gsm-parser): تطبيق Android بشكل أساسي الغرض منه اكتشاف الهجمات المحتملة على طبقة الراديو (مصيدة IMSI، وBTS وهمية...). كما أن لديه ميزة ثانوية لالتقاط بعض حركة الإشارات إلى PCAP، وهو ما لا يقدم بالضبط نفس ما يقدمه QCSuper (حركة LTE غير مغلفة في GSMTAP على سبيل المثال، وقد يكون دعم الأجهزة مختلفًا).
    • diag-parser: أداة Linux مشتقة من ميزة توليد PCAP من SnoopSnitch، محسّنة إلى حد ما، ومصممة للعمل مع مودمات USB.
  • MobileInsight: تطبيق Android يهدف إلى تحليل جميع أنواع السجلات التي تنتجها أجهزة Qualcomm و Mediatek (ليس فقط تلك التي تحتوي على معلومات إشارات، ولكن أيضًا بنى تصحيح الأخطاء الخاصة)، وتفريغها في تنسيق تمثيل XML محدد. لا يوفر ملفات PCAP موجهة للمستخدم (لكنه استخدم سابقًا Wireshark كخلفية لتحويل معلومات بروتوكول معينة إلى XML).
  • qcombbdbg: مصحح أخطاء لقاعدة Qualcomm الأساسية (baseband) يقوم بإعداد نفسه عبر خطاف (hook) لأمر Diag، من خلال استخدام أمر Diag الذي يسمح بالكتابة في الذاكرة، وذلك لمودم USB من نوع Option Icon 225.
  • OpenPST: مجموعة أدوات متعلقة بأجهزة Qualcomm، بما في ذلك أداة واجهة رسومية (GUI) تسمح، على سبيل المثال، بقراءة البيانات من نظام الملفات المدمج الصغير الذي يمكن الوصول إليه عبر Diag (EFS).
  • SCAT: أداة ذات قدرات مشابهة لتوليد GSMTAP، تأخذ منفذًا تسلسليًا كمدخل، وتدعم أيضًا Samsung Exynos.
تنزيل الأداة