डिजिटल छवि फोरेंसिक के लिए एक ओपन सोर्स टूलसेट
परिचय
"फोरेंसिक छवि विश्लेषण, कानूनी मामलों में किसी छवि की सामग्री और/या छवि की व्याख्या करने के लिए छवि विज्ञान और डोमेन विशेषज्ञता का अनुप्रयोग है। कानून प्रवर्तन अनुप्रयोगों के साथ फोरेंसिक छवि विश्लेषण के प्रमुख उप-विषयों में शामिल हैं: फोटोग्रामेट्री, फोटोग्राफिक तुलना, सामग्री विश्लेषण और छवि प्रमाणीकरण।" (इमेजिंग टेक्नोलॉजीज पर वैज्ञानिक कार्य समूह)
Sherloq डिजिटल छवि फोरेंसिक के लिए एक पूरी तरह से एकीकृत वातावरण लागू करने के बारे में एक व्यक्तिगत शोध परियोजना है। इसका उद्देश्य कोई स्वचालित उपकरण नहीं है जो यह तय करे कि कोई छवि जाली है या नहीं (वह उपकरण शायद कभी अस्तित्व में नहीं होगा...), बल्कि नवीनतम शोध पत्रों और कार्यशालाओं में पाए जाने वाले विभिन्न एल्गोरिदम के साथ प्रयोग करने में एक साथी के रूप में है।
जबकि कई व्यावसायिक समाधानों की उच्च खुदरा कीमतें होती हैं और अक्सर केवल कानून प्रवर्तन और सरकारी एजेंसियों के लिए आरक्षित होती हैं, यह टूलसेट एक विस्तार योग्य ढांचा और डिजिटल सिग्नल प्रोसेसिंग के इस विशेष अनुप्रयोग में प्रयोग करने में रुचि रखने वाले किसी भी व्यक्ति के लिए एक शुरुआती बिंदु दोनों होने का लक्ष्य रखता है।
मैं दृढ़ता से मानता हूं कि सुरक्षा-द्वारा-अस्पष्टता किसी भी प्रकार की फोरेंसिक सेवा प्रदान करने का गलत तरीका है (जैसे, "इस मालिकाना सॉफ्टवेयर का उपयोग करके मैं गारंटी देता हूं कि यह फोटो शुद्ध है... और आपको मुझ पर भरोसा करना होगा!")। ओपन-सोर्स दर्शन का पालन करते हुए, सभी को अपने दम पर विभिन्न तकनीकों को आजमाने, ज्ञान प्राप्त करने और इसे समुदाय के साथ साझा करने में सक्षम होना चाहिए... और भी बेहतर अगर वे कोड में सुधार के साथ योगदान करते हैं! :)
इतिहास
पहला संस्करण 2015 में C++11 का उपयोग करके कई विकल्पों के साथ एक कमांड लाइन उपयोगिता बनाने के लिए लिखा गया था, लेकिन जल्द ही यह बहुत बोझिल और बहुत अंतःक्रियात्मक नहीं साबित हुआ। उस संस्करण को OpenCV, Boost और AlgLib लाइब्रेरी स्थापित करने के बाद CMake के साथ संकलित किया जा सकता था। इस पहले प्रूफ-ऑफ-कॉन्सेप्ट ने लगभग 80% नियोजित सुविधाओं की पेशकश की (पूरी सूची के लिए नीचे देखें)।
जबकि इसमें नए एल्गोरिदम भी शामिल थे, 2017 के संस्करण ने मुख्य रूप से बेहतर उपयोगकर्ता अनुभव प्रदान करने के लिए Qt-आधारित मल्टी-विंडो GUI जोड़ा। स्क्रीन पर कई विश्लेषण दिखाए जा सकते थे और आसान छवि नेविगेशन के लिए एक तेज़ ज़ूम/स्क्रॉल व्यूअर लागू किया गया था। उस परियोजना को Qt Creator के साथ Qt 5 और OpenCV 3 के साथ संकलित किया जा सकता था और इसमें लगभग 70% नियोजित सुविधाओं को शामिल किया गया था।
2020 में तेजी से आगे बढ़ते हुए जब मैंने आसान विकास और परिनियोजन के लिए सब कुछ Python (PySide2 + Matplotlib + OpenCV) में पोर्ट करने का फैसला किया। जबकि यह पुनरावृत्ति अभी शुरू हुई है और मुझे अभी भी पिछले सभी कोड को नए प्लेटफॉर्म पर पोर्ट करना है, मुझे लगता है कि यह परियोजना का अंतिम "रूप" होगा (जब तक कोई एक अच्छा वेब एप्लिकेशन विकसित करने के लिए स्वेच्छा से आगे नहीं आता!)।
मुझे अपना कोड साझा करने और इसे बेहतर बनाने या परीक्षण करने में रुचि रखने वाले किसी भी व्यक्ति के संपर्क में आने में खुशी है, लेकिन कृपया ध्यान रखें कि इस रिपॉजिटरी का उद्देश्य अंतिम उत्पाद वितरित करना नहीं है, मेरा उद्देश्य केवल एक सादा शैक्षिक उपकरण के विकास को सार्वजनिक रूप से ट्रैक करना है, इसलिए बग, अपरिष्कृत कोड और लापता सुविधाओं की अपेक्षा करें! ;)
विशेषताएं
इस सूची में वे कार्य शामिल हैं जो टूलकिट बीटा चरण तक पहुंचने पर (उम्मीद है) प्रदान करेगा (नोट: कार्यक्रम के अंदर इटैलिक में प्रदर्शित कार्य अभी तक लागू नहीं किए गए हैं!)।
इंटरफ़ेस
- कई टूल विंडो प्रबंधन के साथ आधुनिक Qt-आधारित GUI
- कई प्रारूपों के लिए समर्थन (JPEG, PNG, TIFF, BMP, WebP, PGM, PFM, GIF)
- रीयल-टाइम पैन और ज़ूम के साथ अत्यधिक उत्तरदायी छवि व्यूअर
- इंटरैक्टिव रूप से आज़माने के लिए कई अत्याधुनिक एल्गोरिदम
- विश्लेषण के दृश्य और पाठ्य दोनों परिणामों का निर्यात
- स्पष्टीकरण और ट्यूटोरियल के साथ व्यापक ऑनलाइन सहायता
उपकरण
सामान्य
- मूल छवि: दृश्य निरीक्षण के लिए अपरिवर्तित संदर्भ छवि प्रदर्शित करें
- फ़ाइल डाइजेस्ट: भौतिक फ़ाइल जानकारी, क्रिप्टो और अवधारणात्मक हैश प्राप्त करें
- हेक्स संपादक: कच्चे बाइट्स दिखाने और संपादित करने के लिए बाहरी हेक्साडेसिमल संपादक खोलें
- समान खोज: दृष्टि से समान छवियां खोजने के लिए ऑनलाइन खोज सेवाएं ब्राउज़ करें
मेटाडेटा
- हेडर संरचना: फ़ाइल हेडर संरचना डंप करें और एक इंटरैक्टिव दृश्य प्रदर्शित करें
- EXIF पूर्ण डंप: फ़ाइल मेटाडेटा के माध्यम से स्कैन करें और सभी उपलब्ध जानकारी एकत्र करें
- थंबनेल विश्लेषण: वैकल्पिक एम्बेडेड थंबनेल निकालें और मूल के साथ तुलना करें
- जियोलोकेशन डेटा: वैकल्पिक जियोलोकेशन डेटा प्राप्त करें और इसे विश्व मानचित्र पर दिखाएं
निरीक्षण
- संवर्धित आवर्धक: जालसाजी की बेहतर पहचान के लिए संवर्द्धन के साथ आवर्धक कांच
- चैनल हिस्टोग्राम: एकल रंग चैनल या RGB समग्र इंटरैक्टिव हिस्टोग्राम प्रदर्शित करें
- वैश्विक समायोजन: मानक छवि समायोजन लागू करें (चमक, रंग, संतृप्ति, ...)
- संदर्भ तुलना: किसी अन्य चित्र के साथ तुलना के लिए सिंक्रोनाइज़्ड डबल व्यू खोलें
विवरण
- ल्यूमिनेंस ग्रेडिएंट: छवि भर में क्षैतिज/ऊर्ध्वाधर चमक भिन्नताओं का विश्लेषण करें
- इको एज फ़िल्टर: कृत्रिम आउट-ऑफ-फ़ोकस क्षेत्रों को प्रकट करने के लिए व्युत्पन्न फ़िल्टर का उपयोग करें
- वेवलेट थ्रेसहोल्ड: विभिन्न तरंगिका गुणांक थ्रेसहोल्ड के साथ छवि का पुनर्निर्माण करें
- आवृत्ति विभाजन: छवि ल्यूमिनेंस को उच्च और निम्न आवृत्ति घटकों में विभाजित करें
रंग
- RGB/HSV प्लॉट: RGB और HSV पिक्सेल मानों के इंटरैक्टिव 2D और 3D प्लॉट प्रदर्शित करें
- अंतरिक्ष रूपांतरण: RGB चैनलों को HSV/YCbCr/Lab/Luv/CMYK/Gray स्पेस में बदलें
- PCA प्रक्षेपण: पिक्सेल को सबसे प्रमुख घटकों पर प्रोजेक्ट करने के लिए रंग PCA का उपयोग करें
- पिक्सेल सांख्यिकी: प्रत्येक पिक्सेल के लिए न्यूनतम/अधिकतम/औसत RGB मानों की गणना करें
शोर
- शोर पृथक्करण: विभिन्न प्रकार के छवि शोर घटकों का अनुमान लगाएं और निकालें
- न्यूनतम/अधिकतम विचलन: ब्लॉक-आधारित न्यूनतम/अधिकतम आंकड़ों से विचलित पिक्सेल को हाइलाइट करें
- बिट प्लेन मान: असंगत शोर पैटर्न खोजने के लिए व्यक्तिगत बिट प्लेन दिखाएं
- वेवलेट ब्लॉकिंग: शोर असंगतियों को खोजने के लिए एक छवि में औसत शोर स्तर दिखाता है
- PRNU पहचान: विभिन्न कैमरों द्वारा प्रस्तुत सेंसर पैटर्न शोर का शोषण करें
JPEG
- गुणवत्ता अनुमान: मात्रा निर्धारण तालिकाएं निकालें और अंतिम सहेजी गई JPEG गुणवत्ता का अनुमान लगाएं
- त्रुटि स्तर विश्लेषण: निश्चित संपीड़न स्तरों के विरुद्ध पिक्सेल-स्तरीय अंतर दिखाएं
- एकाधिक संपीड़न: एकाधिक संपीड़न का पता लगाने के लिए मशीन लर्निंग मॉडल का उपयोग करें
- JPEG घोस्ट मैप: अंतर छवियों में विभिन्न संपीड़न स्तरों के निशान हाइलाइट करें
छेड़छाड़
- कंट्रास्ट वृद्धि: कंट्रास्ट वृद्धि का पता लगाने के लिए रंग वितरण का विश्लेषण करें
- कॉपी-मूव जालसाजी: क्लोन किए गए क्षेत्र का पता लगाने के लिए अपरिवर्तनीय फीचर डिस्क्रिप्टर का उपयोग करें
- समग्र स्प्लिसिंग: स्वचालित स्प्लिसिंग ज़ोन का पता लगाने के लिए DCT आंकड़ों का शोषण करें
- छवि पुनर्नमूनाकरण: पुनर्नमूनाकरण के निशान का पता लगाने के लिए 2D पिक्सेल इंटरपोलेशन का अनुमान लगाएं
विविध
- माध्यिका फ़िल्टरिंग: अरेखीय माध्यिका फ़िल्टरिंग द्वारा छोड़े गए प्रसंस्करण निशान का पता लगाएं
- प्रकाश मानचित्र: अनुमानित 3D सतहों पर दृश्य स्थानीय प्रकाश दिशा का अनुमान लगाएं
- मृत/गर्म पिक्सेल: सेंसर की खामियों के कारण मृत/गर्म पिक्सेल का पता लगाएं और ठीक करें
- स्टीरियोग्राम डिकोडर: क्रॉस-आई ऑटोस्टीरियोग्राम में छिपी 3D छवियों को डिकोड करें
स्क्रीनशॉट
सामान्य: मूल छवि, हेक्स संपादक, फ़ाइल डाइजेस्ट, समान खोज
मेटाडेटा: EXIF पूर्ण डंप, हेडर संरचना