छवियाँ और तस्वीरें · छवि मेटाडेटा गोपनीयता टूल
कैसे एक ब्राउज़र JPEG को अपलोड किए बिना EXIF को पढ़ता है
· यह काम किस प्रकार करता है
exif छवि-गोपनीयता ब्राउज़र-प्रसंस्करण फ़ाइल स्वरूपों
पेज पर JPEG को छोड़ने और उसके मेटाडेटा को देखने के बीच वास्तव में क्या होता है, इसका पूर्वाभ्यास: बाइट्स स्थानीय रूप से पढ़े जाते हैं, APP1 खंड स्थित होता है, और इसके अंदर TIFF निर्देशिकाओं को JavaScript में डीकोड किया जाता है, जिसमें कोई सर्वर शामिल नहीं होता है।
परीक्षण का दावा: 'कुछ भी अपलोड नहीं किया गया है' - मेटाडेटा निरीक्षक को केवल पहले से मौजूद बाइट्स को पढ़ने की आवश्यकता क्यों है, और कोई अनुरोध न होने की पुष्टि कैसे करें टैब छोड़ देता है
यह दावा कि तस्वीर अपलोड नहीं की गई है, सजावटी होने के बजाय परीक्षण योग्य है। टूल चयनित फ़ाइल को ArrayBuffer में पढ़ता है, इसे बाइट्स में परिवर्तित करता है और उन बाइट्स को सीधे मेटाडेटा रीडर में भेजता है। इसका गोपनीयता कथन वादे को सावधानीपूर्वक सीमित करता है: तस्वीर को ब्राउज़र टैब में पार्स किया जाता है, कोई प्रतिलिपि संग्रहीत नहीं की जाती है, और खुलासा किए गए विश्लेषण अनुरोध फ़ाइल को संभालने वाले कोड पथ से अलग होते हैं।
फ़ाइल को स्थानीय रूप से फ़ाइल API के साथ पढ़ना - कैसे ब्राउज़र टूल को डिवाइस से बाइट्स छोड़े बिना आपकी तस्वीर का ArrayBuffer सौंपता है
एक फ़ाइल पिकर एक ब्राउज़र फ़ाइल ऑब्जेक्ट की आपूर्ति करता है, और file.arrayBuffer() इसकी सामग्री को पेज में पहले से चल रहे JavaScript को उपलब्ध कराता है। ToolAcre एक 50 MB सीमा लागू करता है, फिर बाइट्स से JPEG, PNG या WebP की पहचान करता है। इस स्थानीय रीड के लिए फॉर्म सबमिशन या इमेज-अपलोड एंडपॉइंट की आवश्यकता नहीं है, और नेटवर्क-आइसोलेशन परीक्षण अनुरोध को रिकॉर्ड किए बिना सभी तीन समर्थित प्रारूपों का अभ्यास करता है।
APP1 सेगमेंट ढूँढना - SOI से 'Exif' हेडर तक JPEG मार्करों को चलाना, और इसके बजाय ICC या XMP वाले सेगमेंट को छोड़ना
JPEG के लिए, रीडर इमेज मार्कर के प्रारंभ होने के बाद शुरू होता है और स्कैन मार्कर के प्रारंभ होने तक मार्कर खंडों पर चलता है। यह Exif से शुरू होने वाले APP1 पेलोड को पहचानता है और उन्हें पार्स करता है, जबकि XMP को केवल हटाने के लिए पहचाना जाता है और ICC को जानबूझकर रेंडरिंग डेटा के रूप में बनाए रखा जाता है। स्कैन मार्कर से आगे की हर चीज़ EXIF रिपोर्ट के बजाय संपीड़ित चित्र पथ से संबंधित है।
TIFF हेडर और IFDs को डिकोड करना - बाइट क्रम (II या MM), IFD0 पर ऑफसेट, और 12-बाइट प्रविष्टियाँ जो Exif और GPS उप-निर्देशिकाओं की ओर इशारा करती हैं
EXIF पेलोड में TIFF ब्लॉक होता है। पार्सर II या MM बाइट-ऑर्डर मार्कर को पढ़ता है, TIFF जादुई मान की जांच करता है और IFD0 पर ऑफसेट का अनुसरण करता है। प्रत्येक निर्देशिका प्रविष्टि एक टैग, प्रकार, गिनती और या तो एक इनलाइन मान या ऑफसेट प्रदान करती है। IFD0 से कोड केवल Exif और GPS उप-निर्देशिका पॉइंटर्स का अनुसरण करता है, हर संभव निजी संरचना का पीछा करने के बजाय ट्रैवर्सल को सीमित रखता है।
कच्चे टैग मानों को पढ़ने योग्य फ़ील्ड में बदलना - टैग ID, डेटा प्रकार, तर्कसंगत और ASCII स्ट्रिंग्स, और कुछ मानों को लुकअप तालिका की आवश्यकता क्यों है
कच्चे मूल्य उनके प्रकार और टैग की व्याख्या के बाद ही उपयोगी हो जाते हैं। ASCII फ़ील्ड स्ट्रिंग बन जाते हैं, संख्यात्मक प्रकार TIFF बाइट क्रम का उपयोग करते हैं, और अंश और हर को पढ़ने के बाद तर्कसंगत जोड़े संख्या बन जाते हैं। एक टैग डिक्शनरी कैमरा मेक, मॉडल, टाइमस्टैम्प, सॉफ़्टवेयर, सीरियल फ़ील्ड और GPS मान लेबल करती है, फिर कम संवेदनशील तकनीकी फ़ील्ड से पहले स्थान और डिवाइस पहचान को वर्गीकृत करती है।
कार्यान्वित उदाहरण: मुख्य थ्रेड पर पार्स किया गया एक फ़ोन फ़ोटो
कार्यपुस्तिका में इस उदाहरण को वेब वर्कर में चलने के रूप में वर्णित किया गया है, लेकिन शिप किया गया पैनल file.arrayBuffer() की प्रतीक्षा करने के बाद सीधे readMetadata को कॉल करता है; कोई भी कार्यकर्ता इस पथ में भाग नहीं लेता. इसलिए एक चयनित फ़ोन JPEG को पेज मुख्य थ्रेड पर पढ़ा और पार्स किया जाता है, जिसके बाद किसी भी अक्षांश और देशांतर को संख्याओं के रूप में मुद्रित किया जाता है और पूर्ण फ़ील्ड तालिका प्रस्तुत की जाती है। सुधार मायने रखता है क्योंकि स्थानीय प्रसंस्करण और कार्यकर्ता प्रसंस्करण अलग-अलग दावे हैं।
इसमें क्या शामिल नहीं है - मेकरनोट आंतरिक, RAW प्रारूप, HEIC और वीडियो कंटेनर इस वॉकथ्रू के बाहर और टूल के बाहर हैं
पाठक जानबूझकर अधूरा है. यह मेकरनोट इंटरनल्स, IFD1 थंबनेल फ़ील्ड्स, JPEG XMP सामग्री या असमर्थित RAW, HEIC, AVIF, TIFF, GIF और को डीकोड नहीं करता है। SVG कंटेनर। एक भ्रष्ट EXIF खंड को छोड़ दिया गया है ताकि यह बाद में निष्कासन को अवरुद्ध न कर सके। एक खाली रिपोर्ट का मतलब केवल यह है कि इस बंधे हुए पार्सर को कोई पढ़ने योग्य फ़ील्ड नहीं मिला, ऐसा नहीं है कि हर संभावित सूचना चैनल अनुपस्थित है।
टेकअवे: मेटाडेटा पढ़ना एक स्थानीय, बाइट-स्तरीय कार्य है - छवि मेटाडेटा गोपनीयता टूल बिल्कुल यही करता है, ताकि आप सर्वर पर भरोसा किए बिना साझा करने से पहले निरीक्षण कर सकें
मेटाडेटा पढ़ना एक स्थानीय बाइट-स्तरीय कार्य है जब कार्यान्वयन चयनित बाइट्स को टैब में रखता है और उनके साथ कोई अनुरोध नहीं करता है। यह पार्सर क्या देख सकता है, इसकी पहचान करने के लिए रिपोर्ट का उपयोग करें, फिर एक साफ प्रतिलिपि की आवश्यकता होने पर अलग हटाने की कार्रवाई का उपयोग करें। निरीक्षण कभी भी मूल तस्वीर को नहीं बदलता है, और स्रोत कोड और नेटवर्क-आइसोलेशन परीक्षण सामान्य ब्राउज़र-प्रोसेसिंग बैज की तुलना में अधिक मजबूत सबूत प्रदान करते हैं।