
एक ओपन-सोर्स डिजिटल इमेज फोरेंसिक टूलसेट
डिजिटल छवि फोरेंसिक के लिए एक ओपन सोर्स टूलसेट
"फोरेंसिक छवि विश्लेषण, कानूनी मामलों में किसी छवि की सामग्री और/या छवि की व्याख्या करने के लिए छवि विज्ञान और डोमेन विशेषज्ञता का अनुप्रयोग है। कानून प्रवर्तन अनुप्रयोगों के साथ फोरेंसिक छवि विश्लेषण के प्रमुख उप-विषयों में शामिल हैं: फोटोग्रामेट्री, फोटोग्राफिक तुलना, सामग्री विश्लेषण और छवि प्रमाणीकरण।" (इमेजिंग टेक्नोलॉजीज पर वैज्ञानिक कार्य समूह)
Sherloq डिजिटल छवि फोरेंसिक के लिए एक पूरी तरह से एकीकृत वातावरण लागू करने के बारे में एक व्यक्तिगत शोध परियोजना है। इसका उद्देश्य कोई स्वचालित उपकरण नहीं है जो यह तय करे कि कोई छवि जाली है या नहीं (वह उपकरण शायद कभी अस्तित्व में नहीं होगा...), बल्कि नवीनतम शोध पत्रों और कार्यशालाओं में पाए जाने वाले विभिन्न एल्गोरिदम के साथ प्रयोग करने में एक साथी के रूप में है।
जबकि कई व्यावसायिक समाधानों की उच्च खुदरा कीमतें होती हैं और अक्सर केवल कानून प्रवर्तन और सरकारी एजेंसियों के लिए आरक्षित होती हैं, यह टूलसेट एक विस्तार योग्य ढांचा और डिजिटल सिग्नल प्रोसेसिंग के इस विशेष अनुप्रयोग में प्रयोग करने में रुचि रखने वाले किसी भी व्यक्ति के लिए एक शुरुआती बिंदु दोनों होने का लक्ष्य रखता है।
मैं दृढ़ता से मानता हूं कि सुरक्षा-द्वारा-अस्पष्टता किसी भी प्रकार की फोरेंसिक सेवा प्रदान करने का गलत तरीका है (जैसे, "इस मालिकाना सॉफ्टवेयर का उपयोग करके मैं गारंटी देता हूं कि यह फोटो शुद्ध है... और आपको मुझ पर भरोसा करना होगा!")। ओपन-सोर्स दर्शन का पालन करते हुए, सभी को अपने दम पर विभिन्न तकनीकों को आजमाने, ज्ञान प्राप्त करने और इसे समुदाय के साथ साझा करने में सक्षम होना चाहिए... और भी बेहतर अगर वे कोड में सुधार के साथ योगदान करते हैं! :)
पहला संस्करण 2015 में C++11 का उपयोग करके कई विकल्पों के साथ एक कमांड लाइन उपयोगिता बनाने के लिए लिखा गया था, लेकिन जल्द ही यह बहुत बोझिल और बहुत अंतःक्रियात्मक नहीं साबित हुआ। उस संस्करण को OpenCV, Boost और AlgLib लाइब्रेरी स्थापित करने के बाद CMake के साथ संकलित किया जा सकता था। इस पहले प्रूफ-ऑफ-कॉन्सेप्ट ने लगभग 80% नियोजित सुविधाओं की पेशकश की (पूरी सूची के लिए नीचे देखें)।
जबकि इसमें नए एल्गोरिदम भी शामिल थे, 2017 के संस्करण ने मुख्य रूप से बेहतर उपयोगकर्ता अनुभव प्रदान करने के लिए Qt-आधारित मल्टी-विंडो GUI जोड़ा। स्क्रीन पर कई विश्लेषण दिखाए जा सकते थे और आसान छवि नेविगेशन के लिए एक तेज़ ज़ूम/स्क्रॉल व्यूअर लागू किया गया था। उस परियोजना को Qt Creator के साथ Qt 5 और OpenCV 3 के साथ संकलित किया जा सकता था और इसमें लगभग 70% नियोजित सुविधाओं को शामिल किया गया था।
2020 में तेजी से आगे बढ़ते हुए जब मैंने आसान विकास और परिनियोजन के लिए सब कुछ Python (PySide2 + Matplotlib + OpenCV) में पोर्ट करने का फैसला किया। जबकि यह पुनरावृत्ति अभी शुरू हुई है और मुझे अभी भी पिछले सभी कोड को नए प्लेटफॉर्म पर पोर्ट करना है, मुझे लगता है कि यह परियोजना का अंतिम "रूप" होगा (जब तक कोई एक अच्छा वेब एप्लिकेशन विकसित करने के लिए स्वेच्छा से आगे नहीं आता!)।
मुझे अपना कोड साझा करने और इसे बेहतर बनाने या परीक्षण करने में रुचि रखने वाले किसी भी व्यक्ति के संपर्क में आने में खुशी है, लेकिन कृपया ध्यान रखें कि इस रिपॉजिटरी का उद्देश्य अंतिम उत्पाद वितरित करना नहीं है, मेरा उद्देश्य केवल एक सादा शैक्षिक उपकरण के विकास को सार्वजनिक रूप से ट्रैक करना है, इसलिए बग, अपरिष्कृत कोड और लापता सुविधाओं की अपेक्षा करें! ;)
इस सूची में वे कार्य शामिल हैं जो टूलकिट बीटा चरण तक पहुंचने पर (उम्मीद है) प्रदान करेगा (नोट: कार्यक्रम के अंदर इटैलिक में प्रदर्शित कार्य अभी तक लागू नहीं किए गए हैं!)।
सामान्य: मूल छवि, हेक्स संपादक, फ़ाइल डाइजेस्ट, समान खोज
मेटाडेटा: EXIF पूर्ण डंप, हेडर संरचना
निरीक्षण: संवर्धित आवर्धक, चैनल हिस्टोग्राम, संदर्भ तुलना
विवरण: ल्यूमिनेंस ग्रेडिएंट, इको एज फ़िल्टर, वेवलेट थ्रेसहोल्ड, आवृत्ति विभाजन
रंग: RGB/HSV प्लॉट, अंतरिक्ष रूपांतरण, PCA प्रक्षेपण, पिक्सेल सांख्यिकी
शोर: सिग्नल पृथक्करण, न्यूनतम/अधिकतम विचलन, बिट प्लेन मान
JPEG: गुणवत्ता अनुमान, त्रुटि स्तर विश्लेषण
छेड़छाड़: कंट्रास्ट वृद्धि, कॉपी/मूव जालसाजी, समग्र स्प्लिसिंग, माध्यिका फ़िल्टरिंग
वर्तमान रिपॉजिटरी को स्थानीय फ़ोल्डर में क्लोन करें और वर्तमान निर्देशिका को उसमें बदलें।
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
कुछ प्रायोगिक AI-समर्थित उपकरणों को अतिरिक्त पैकेजों की आवश्यकता होती है। उन्हें केवल तभी स्थापित करें यदि आप उन उपकरणों का उपयोग करने की योजना बनाते हैं:
$ 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
यदि आपने वैकल्पिक AI निर्भरताएँ स्थापित की हैं, तो उन्हें भी ताज़ा करें:
$ uv pip install --upgrade -r gui/requirements_ai_solutions.txt
gui