पिछले लेखों में से एक में, हमने उल्लेख किया था कि इंटरनेट से डाउनलोड की गई एक्जीक्यूटेबल फाइल को खोलने का प्रयास करते समय Windows संभावित खतरनाक कंटेंट चलाने की सुरक्षा चेतावनी दिखाता है (विवरण के लिए, How to Disable Security Warnings in Windows देखें)। सिस्टम कैसे निर्धारित करता है कि फाइल इंटरनेट से डाउनलोड की गई है? आइए इसे जानने का प्रयास करें।

इंटरनेट से ब्राउज़र में डाउनलोड की गई सभी एक्जीक्यूटेबल फाइलों को एक विशेष मार्कर मिलता है। यह नियम न केवल Internet Explorer द्वारा समर्थित है, बल्कि Mozilla Firefox और Google Chrome जैसे अन्य लोकप्रिय ब्राउज़र्स द्वारा भी समर्थित है। किसी फाइल को दूसरे NTFS पार्टीशन पर कॉपी, रीनेम या मूव करते समय, मार्कर अभी भी साथ रहता है।
यह मार्कर एक वैकल्पिक NTFS फाइल स्ट्रीम है।
नोट. वैकल्पिक NTFS डेटा स्ट्रीम प्रत्येक NTFS फाइल के लिए कई अतिरिक्त डेटा (मेटाडेटा) स्ट्रीम बनाने की अनुमति देते हैं। डिफ़ॉल्ट रूप से, सभी फाइल डेटा मुख्य स्ट्रीम में स्टोर होते हैं, लेकिन किसी फाइल के लिए एक या अधिक अतिरिक्त स्ट्रीम बनाना संभव है और उनका आकार प्राइमरी फाइल स्ट्रीम के आकार से भी अधिक हो सकता है। अधिकांश एप्लिकेशन (Windows Explorer सहित) केवल स्टैंडर्ड स्ट्रीम के साथ काम करते हैं और वैकल्पिक NTFS डेटा स्ट्रीम से डेटा नहीं पढ़ सकते।
यह सुनिश्चित करने के लिए कि इंटरनेट से डाउनलोड की गई फाइल को एक विशेष मार्कर असाइन किया गया है, डिस्ट्रीब्यूशन वाली डायरेक्टरी के लिए फाइलों की सूची निम्न कमांड का उपयोग करके प्रदर्शित करें:
dir /r

जैसा कि हम देख सकते हैं, एक्जीक्यूटेबल फाइलों को वैकल्पिक स्ट्रीम Zone.Identifier असाइन की गई है, जैसे install_flash_player_16_active_x.exe:Zone.Identifier।
वैकल्पिक स्ट्रीम को नोटपैड में खोलें:
Notepad.exe install_flash_player_16_active_x.exe:Zone.Identifier

हम देख सकते हैं कि यह स्ट्रीम एक फाइल है जिसमें एक सेक्शन [ZoneTransfer] है, जिसमें एक ट्रांसफर जोन ID (ZoneId) निर्दिष्ट है। (ये वे सुरक्षा क्षेत्र हैं जो IE सेटिंग्स में पाए जा सकते हैं।) ट्रांसफर जोन ID में 0 से 4 तक पांच मानों में से एक हो सकता है।
- ZoneId=0: लोकल मशीन
- ZoneId=1: लोकल इंट्रानेट
- ZoneId=2: विश्वसनीय साइटें
- ZoneId=3: इंटरनेट
- ZoneId=4: प्रतिबंधित साइटें
जब आप किसी सुरक्षा क्षेत्र से फाइल डाउनलोड करते हैं, तो ब्राउज़र इसे एक संबंधित ZoneId असाइन करता है। जब ZoneId 3 या 4 के बराबर वाली फाइल को उसकी वैकल्पिक NTFS स्ट्रीम में चलाने का प्रयास किया जाता है, तो सिस्टम इस ID के आधार पर पता लगाता है कि फाइल इंटरनेट या अविश्वसनीय स्रोत से डाउनलोड की गई है। Windows XP SP2 से Windows एक्जीक्यूटेबल फाइलों के इस मार्कर की जांच कर रहा है।
इस मार्कर (वैकल्पिक स्ट्रीम) को मैन्युअल रूप से हटाने के लिए, आपको फाइल प्रॉपर्टीज में केवल Unblock पर क्लिक करना होगा।

सुनिश्चित करें कि अब इस फाइल में वैकल्पिक स्ट्रीम नहीं है।

वास्तव में, Windows के पास वैकल्पिक डेटा स्ट्रीम से निपटने के लिए कोई टूल नहीं है। उदाहरण के लिए, यदि आपको एक साथ कई फाइलों से उन्हें हटाना है, तो आप Mark Rusinovich द्वारा थर्ड-पार्टी कंसोल टूल — streams का उपयोग करना बेहतर समझेंगे।
उदाहरण के लिए, c:\Download\ में सभी एक्जीक्यूटेबल फाइलों के वैकल्पिक स्ट्रीम को रिकर्सिवली हटाने के लिए, यह कमांड चलाएं:
c:\TOOLS\streams.exe -s -d c:\Download\*.exe
कमांड प्रॉम्प्ट में, आप देख सकते हैं कि फाइल का वैकल्पिक स्ट्रीम हटा दिया गया है: Deleted :Zone.Identifier:$DATA
महत्वपूर्ण. Streams निर्दिष्ट फाइलों के सभी वैकल्पिक स्ट्रीम को हटा देता है और किसी विशेष स्ट्रीम को टार्गेट करने की अनुमति नहीं देता। इसलिए, streams.exe -s -d c:\*.exe के रूप में streams कमांड न चलाएं, क्योंकि महत्वपूर्ण जानकारी वाले वैकल्पिक NTFS स्ट्रीम हटाने के बाद यह सिस्टम विफलता का कारण बन सकता है।

PowerShell 3.0 में, आप इस कमांड का उपयोग करके डायरेक्टरी में Zone.Identifier स्ट्रीम वाली फाइलों की सूची प्रदर्शित कर सकते हैं:
Get-ChildItem -Recurse | Get-Item -Stream Zone.Identifier -ErrorAction SilentlyContinue | Select-Object FileName
एट्रिब्यूट को निम्नानुसार हटाया जाता है:
Remove-Item .\install-file.exe -Stream Zone.Identifier
Windows PowerShell 4.0 में, आप एक अलग cmdlet का उपयोग करके Zone.Identifier हटा सकते हैं:
Unblock-File install-file.exe
आप इस कमांड को चलाकर किसी भी फाइल को मैन्युअली मार्कर असाइन कर सकते हैं:
notepad.exe install_flash_player_16_active_x.exe:Zone.Identifier
चूंकि कोई स्ट्रीम नहीं है, सिस्टम नई फाइल बनाने के लिए प्रेरित करता है। सहमत हों और नोटपैड विंडो में निम्न टेक्स्ट कॉपी करें:
[ZoneTransfer]
ZoneId=3
परिवर्तनों को सेव करें। सुनिश्चित करें कि फाइल को एक वैकल्पिक स्ट्रीम असाइन की गई है।
