
androidqf (أندرويد كويك فورينكس) يساعد في جمع الأدلة الجنائية بسرعة من أجهزة أندرويد، من أجل تحديد الآثار المحتملة للاختراق.
androidqf (Android Quick Forensics) هي أداة محمولة لتبسيط الحصول على بيانات الطب الشرعي ذات الصلة من أجهزة Android.
تهدف androidqf إلى توفير أداة مساعدة محمولة وبسيطة متعددة المنصات للحصول على البيانات من أجهزة Android بسرعة. وهي مشابهة في الوظائف لـ mvt-android. ومع ذلك، وعلى عكس MVT، صُممت androidqf لتكون سهلة التشغيل من قِبل المستخدمين غير التقنيين أيضًا. يمكن تحليل البيانات المستخرجة بواسطة androidqf باستخدام MVT.
هذا المستودع هو نسخة متفرعة (fork) من androidqf تتم صيانتها من قِبل مختبر الأمن في منظمة العفو الدولية. تم تطوير أداة androidqf في الأصل بواسطة Claudio Guarnieri.

ينبغي أن تكون الملفات التنفيذية الثنائية لنظامي Linux وWindows وMac متاحة في أحدث إصدار. في حال واجهت مشكلات في تشغيل الملف الثنائي، فقد ترغب في بنائه بنفسك.
يستخدم هذا المشروع GoReleaser لعمليات البناء والإصدار الآلية. للبناء محليًا:
قم بتثبيت GoReleaser:
go install github.com/goreleaser/goreleaser/[email protected]
شغّل بناء لقطة (snapshot build) (بدون نشر):
./build_locally.sh
سيؤدي هذا إلى إنشاء ملفات ثنائية لجميع المنصات في دليل dist/، بما في ذلك ملف ثنائي شامل لنظام macOS يعمل على كل من Intel وApple Silicon.
لا يزال بإمكانك استخدام نهج Makefile التقليدي. ستحتاج إلى تثبيت Go 1.26.5+، إلى جانب make وgit وunzip وcurl. يتضمن AndroidQF أداة collector مُجمَّعة تبادليًا تعمل على الجهاز المستهدف لاستخراج المعلومات ذات الصلة بالتحليل الجنائي بشكل أكثر موثوقية.
قم أولاً ببناء وحدة collector:
make collector
ثم قم بتجميع AndroidQF للمنصة التي تختارها:
make linux
make darwin
make windows
ستُنشئ هذه الأوامر ملفات ثنائية في مجلد build/.
يمكن لحزم التوزيع اختيار عدم تضمين ملفات ADB وcollector الثنائية المرفقة من خلال البناء باستخدام وسم البناء unbundle:
go build -tags unbundle -o build/
عند تفعيل هذه العلامة، يتوقع androidqf ما يلي:
adb متاحًا من PATH الخاص بالنظام./usr/lib/androidqf/android-collector/ باستخدام الأسماء التي يتوقعها
androidqf، مثل collector_arm وcollector_arm64.يجوز لمسؤولي التغليف إزالة ملفات الأصول الثنائية المضمّنة من assets/ قبل البناء،
لكن يجب أن يبقى دليل حزمة assets/ وملفات مصدر Go الخاصة به موجودة.
لا يزال بناء unbundle يستورد حزمة assets، وسيفشل البناء
إذا حُذف دليل assets/ بالكامل.
تُنشر صورة الحاوية الخاصة بالإصدار على GitHub Container Registry:
docker pull ghcr.io/mvt-project/androidqf:latest
لجمع البيانات من جهاز Android متصل عبر USB على Linux، مرّر ناقل USB واربط دليل إخراج:
docker run --rm -it --privileged \
-v /dev/bus/usb:/dev/bus/usb \
-v "$(pwd)/output:/output" \
ghcr.io/mvt-project/androidqf:latest -fast -output /output
يمكنك أيضًا بناء الصورة محليًا لإصدار صادر:
docker build --build-arg VERSION=1.8.3 -t androidqf .
[!TIP] راجع أرشيفات الاستحواذ للاطلاع على تنسيق الأرشيف وتجزئات السلامة والتشفير والتعامل مع الملفات الكبيرة. للحصول على قاموس بالملفات المجمّعة، راجع قاموس ملفات مخرجات SocialTIC AndroidQF التابع لجهة خارجية.
قبل تشغيل androidqf، تحتاج إلى توصيل جهاز Android المستهدف بجهاز الكمبيوتر عبر USB، ويجب أن تكون قد فعّلت تصحيح أخطاء USB. يُرجى الرجوع إلى الوثائق الرسمية لمعرفة كيفية القيام بذلك، مع الانتباه إلى أن هواتف Android من مختلف الشركات المصنّعة قد تتطلب خطوات تنقّل مختلفة عن الخطوات الافتراضية.
بمجرد تفعيل تصحيح أخطاء USB، يمكنك المتابعة بتشغيل androidqf. سيحاول أولاً الاتصال بالجهاز عبر جسر USB، مما ينبغي أن يؤدي إلى مطالبة هاتف Android لك بتفويض مفاتيح المضيف يدويًا. تأكد من تفويضها، ويُفضّل أن يكون ذلك بشكل دائم حتى لا تظهر المطالبة مرة أخرى.
الآن ينبغي أن يكون androidqf قيد التنفيذ وأن ينشئ أرشيف استحواذ بصيغة zip في دليل العمل الحالي، أو في الدليل المحدد باستخدام -output. في مرحلة ما أثناء التنفيذ، سيطالبك androidqf ببعض الخيارات: ستوقف هذه المطالبات عملية الاستحواذ حتى تقدّم اختيارًا، لذا انتبه جيدًا. يمكن أيضًا الإجابة على كل مطالبة مسبقًا باستخدام علامة سطر أوامر، راجع عمليات الاستحواذ غير المراقبة.
يمكن استخراج البيانات التالية:
| البيانات | اختيارية؟ | مسار (مسارات) المخرجات |
|---|---|---|
| نسخة احتياطية كاملة أو نسخة احتياطية لرسائل SMS وMMS. | ✅ | backup.ab |
| مخرجات أمر getprop في الصدفة، والتي توفّر معلومات البناء ومعاملات التهيئة. | getprop.txt | |
| جميع إعدادات النظام | settings_*.txt | |
| مخرجات أمر ps في الصدفة، والتي توفّر قائمة بجميع العمليات قيد التشغيل. | processes.json عند توفر المجمّع، وإلا processes.txt | |
| قائمة خدمات النظام. | services.txt | |
| نسخة من جميع سجلات النظام. | logs/, logcat.txt | |
| مخرجات أمر dumpsys في الصدفة، والتي توفّر معلومات تشخيصية عن الجهاز. | dumpsys.txt | |
| قائمة بجميع الحزم المثبّتة وملفات التوزيع المرتبطة بها. | packages.json | |
| نسخة من جميع ملفات APK المثبّتة أو من تلك غير المعلّمة كتطبيقات نظام فقط. | ✅ | apks/* |
| جرد APEX وحاويات APEX الكاملة الخاصة بالمصنع والمثبّتة للتحليل دون اتصال. | apex/* | |
| سجلات Intrusion Logging. تحتوي على بيانات خاصة مثل سجل التنقّل. | ✅ | intrusion_logs/* |
| بيانات وصفية لوحدات Magisk المثبّتة وعلامات الحالة، عند توفر وصول جذر (root) قائم. | ✅ | magisk_modules/* |
الملفات في /system/etc/init.d، عند توفر وصول جذر (root) قائم. | init_scripts/* | |
| قائمة بالملفات الموجودة على النظام، مع تضمين تجزئات على الجهاز اختياريًا. | ✅ | files.json |
| نسخة من الملفات المتاحة في مجلدات temp. | tmp/* | |
| تقرير أخطاء يحتوي على سجلات خاصة بالنظام والتطبيقات، دون تضمين أي بيانات خاصة. | bugreport.zip | |
تقارير الأخطاء الموجودة والملفات المرافقة من /bugreports/، المجمّعة قبل إنشاء تقرير جديد. | bugreports/ |
يقتصر جمع تقارير الأخطاء الموجودة على الملفات التي يمكن الوصول إليها عبر /bugreports/
باستخدام أذونات صدفة ADB. وهو يتبع الرابط الرمزي لذلك الدليل، لكن ليس
الروابط الرمزية الموجودة داخله. لا يتم البحث في النسخ المصدّرة في التخزين المشترك والمواقع
الخاصة بالمصنّعين. قد يكون Android قد حذف بالفعل التقارير الأقدم وفقًا لسياسة
الاحتفاظ الخاصة به، لذا فإن الدليل الفارغ أو المفقود لا يعني أنه لم يتم إنشاء أي تقارير
على الإطلاق. يتم نسخ الملفات الموجودة دون حذفها من الجهاز.
يتحقق وحدة init_scripts من وجود وصول جذر (root) حالي باستخدام su قبل الوصول إلى /system/etc/init.d. ويجمع الملفات العادية بشكل تكراري، بما في ذلك الملفات المخفية، إلى init_scripts/ مع الحفاظ على مساراتها النسبية. لا يتم تنفيذ السكربتات أبدًا، ولا يتم اتباع الروابط الرمزية (symlinks) داخل الدليل. يتم تخطي الأجهزة التي لا تملك وصول جذر عامل أو التي لا تحتوي على هذا الدليل. استخدم -module init_scripts لجمع هذه الملفات فقط.