
مجموعة أدوات مفتوحة المصدر لتحليل الصور الرقمية الجنائي
مجموعة أدوات مفتوحة المصدر لتحليل الصور الرقمية الجنائي
"تحليل الصور الجنائي هو تطبيق علوم الصور والخبرة المتخصصة لتفسير محتوى الصورة و/أو الصورة نفسها في المسائل القانونية. تشمل التخصصات الفرعية الرئيسية لتحليل الصور الجنائي مع تطبيقات إنفاذ القانون: القياس التصويري، المقارنة التصويرية، تحليل المحتوى، والتحقق من الصحة." (مجموعة العمل العلمية لتقنيات التصوير)
Sherloq هو مشروع بحث شخصي حول تطبيق بيئة متكاملة بالكامل لتحليل الصور الرقمية الجنائي. ليس المقصود منه أداة تلقائية تقرر ما إذا كانت الصورة مزيفة أم لا (تلك الأداة ربما لن توجد أبدًا...)، بل كمرافق في تجربة خوارزميات متنوعة موجودة في أحدث الأوراق البحثية وورش العمل.
بينما العديد من الحلول التجارية لها أسعار تجزئة مرتفعة وغالبًا ما تكون مخصصة فقط لإنفاذ القانون والوكالات الحكومية، تهدف هذه المجموعة إلى أن تكون إطارًا قابلًا للتوسع ونقطة انطلاق لأي شخص مهتم بإجراء التجارب في هذا التطبيق المحدد لمعالجة الإشارات الرقمية.
أؤمن بشدة أن الأمن من خلال الغموض هو الطريق الخطأ لتقديم أي نوع من الخدمات الجنائية (على سبيل المثال: "باستخدام هذا البرنامج الاحتكاري، أضمن لك أن هذه الصورة سليمة... وعليك أن تثق بي!"). وفقًا لفلسفة المصدر المفتوح، يجب أن يكون الجميع قادرين على تجربة تقنيات متنوعة بأنفسهم، واكتساب المعرفة ومشاركتها مع المجتمع... بل أفضل إذا ساهموا بتحسينات في الكود! :)
تمت كتابة النسخة الأولى في عام 2015 باستخدام C++11 لبناء أداة سطر أوامر مع العديد من الخيارات، لكن سرعان ما أصبحت مرهقة وغير تفاعلية بدرجة كافية. يمكن تجميع تلك النسخة باستخدام CMake بعد تثبيت مكتبات OpenCV و Boost و AlgLib. عرضت هذه النسخة الأولى حوالي 80% من الميزات المخططة (انظر أدناه للقائمة الكاملة).
بينما تضمنت أيضًا خوارزميات جديدة، أضافت نسخة 2017 بشكل أساسي واجهة مستخدم رسومية متعددة النوافذ مبنية على Qt لتوفير تجربة مستخدم أفضل. يمكن عرض تحليلات متعددة على الشاشة وتم تنفيذ عارض سريع للتصغير/التكبير للتنقل في الصور بسهولة. يمكن تجميع هذا المشروع باستخدام Qt Creator مع Qt 5 و OpenCV 3 ويغطي حوالي 70% من الميزات المخططة.
بسرعة نحو عام 2020 عندما قررت نقل كل شيء إلى Python (PySide2 + Matplotlib + OpenCV) لتسهيل التطوير والنشر. على الرغم من أن هذه التكرار قد بدأت للتو ولم أنقل بعد كل الكود السابق إلى المنصة الجديدة، أعتقد أن هذا سيكون "الشكل" النهائي للمشروع (طالما لم يتطوع أحد لتطوير تطبيق ويب جميل!).
أنا سعيد بمشاركة كودي والتواصل مع أي شخص مهتم بتحسينه أو اختباره، لكن يرجى وضع في الاعتبار أن هذا المستودع ليس مخصصًا لتوزيع منتج نهائي، هدفي هو فقط تتبع التطوير علنًا لأداة تعليمية متواضعة، لذا توقع وجود أخطاء وكود غير مصقول وميزات مفقودة! ;)
تحتوي هذه القائمة على الوظائف التي ستوفرها المجموعة (نأمل) بمجرد الوصول إلى مرحلة بيتا (ملاحظة: الوظائف المعروضة بـ مائل داخل البرنامج لم يتم تنفيذها بعد!).
عام: Original Image, Hex Editor, File Digest, Similar Search
بيانات وصفية: EXIF Full Dump, Header Structure
فحص: Enhancing Magnifier, Channel Histogram, Reference Comparison
تفاصيل: Luminance Gradient, Echo Edge Filter, Wavelet Threshold, Frequency Split
ألوان: RGB/HSV Plots, Space Conversion, PCA Projection, Pixel Statistics
ضوضاء: Signal Separation, Min/Max Deviation, Bit Plane Values
JPEG: Quality Estimation, Error Level Analysis
تزوير: Contrast Enhancement, Copy/Move Forgery, Composite Splicing, Median Filtering
انسخ المستودع الحالي إلى مجلد محلي وانتقل إلى ذلك المجلد.
يستخدم Sherloq Python 3.11. الإعداد الموصى به يستخدم uv لأنه يوفر نفس سير العمل على Linux و macOS و Windows، ويمكنه تثبيت Python عند الحاجة، ويحتفظ ببيئة المشروع في مجلد .venv المحلي.
قم بتثبيت uv باتباع دليل التثبيت الرسمي، ثم أنشئ البيئة من مجلد Sherloq الجذر:
$ uv venv --python 3.11
يتضمن المستودع أيضًا ملف .python-version، لذلك ستستخدم أوامر uv المستقبلية Python 3.11 بشكل افتراضي.
$ uv pip install -r gui/requirements.txt
بعض الأدوات التجريبية المدعومة بالذكاء الاصطناعي تحتاج إلى حزم إضافية. قم بتثبيتها فقط إذا كنت تخطط لاستخدام تلك الأدوات:
$ uv pip install -r gui/requirements_ai_solutions.txt
يمكن تشغيل Sherloq من جذر المستودع. تحل حزمة التطبيق مسارات الرموز والنماذج والأدوات المضمنة من خلال مسارات المشروع المركزية.
$ source .venv/bin/activate
$ python -m gui.sherloq_app
> .venv\Scripts\Activate.ps1
> python -m gui.sherloq_app
يمكنك أيضًا استخدام مشغل التوافق الموجود في جذر المستودع:
$ python sherloq.py
ملاحظة لمستخدمي Linux: إذا ظهر هذا الخطأ:
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
قم بتشغيل هذا الأمر في الطرفية: sudo apt install -y libxcb-cursor-dev
توجد حزمة تطبيق Python Qt الآن في الحزمة القابلة للاستيراد gui/sherloq_app:
main.py: نقطة دخول تطبيق Qt والنافذة الرئيسية.core/: أدوات مساعدة مشتركة لمعالجة الصور مثل أدوات JPEG وتحميل الملفات.ui/: أدوات Qt قابلة لإعادة الاستخدام، العارضون، الجداول وشجرة الأدوات.tools/: أدوات التحليل مجمعة حسب فئة صندوق الأدوات (general, metadata, inspection, detail, colors, noise, jpeg, tampering, various).paths.py: وصول مركزي للرموز والنماذج والأدوات المساعدة المضمنة الأصلية بحيث لم يعد الكود يعتمد على التشغيل من .تبقى الأصول الكبيرة المضمنة ومكونات البحث من جهات خارجية تحت gui/icons، gui/models، gui/noiseprint، gui/pyexiftool، gui/butteraugli، gui/ssimulacra و gui/TruFor_main الاختياري.
انظر docs/project-structure.md للحصول على خريطة موجهة للمساهمين.
عند إصدار نسخة جديدة، قم بتحديث نسخة العمل المحلية باستخدام Git أو بتنزيل أحدث مصدر، ثم قم بتحديث البيئة من مجلد Sherloq الجذر:
$ uv pip install --upgrade -r gui/requirements.txt
إذا قمت بتثبيت التبعيات الاختيارية للذكاء الاصطناعي، قم بتحديثها أيضًا:
$ uv pip install --upgrade -r gui/requirements_ai_solutions.txt
gui