2011-10-13 9 views
5

सुरक्षित फ़ाइल में हटाएं में हटाया जा रहा है सीसुरक्षित फ़ाइल सी

मैं सुरक्षित रूप से सी में एक फ़ाइल को नष्ट करने की जरूरत है, यहाँ मैं क्या कर रहा है:

  1. उपयोग fopen फ़ाइल की एक संभाल पाने के लिए
  2. आकार का उपयोग गणना lseek/ftell
  3. यादृच्छिक बीज के आधार मिल वर्तमान समय पर/या फ़ाइल आकार
  4. लिखने (आकार) एक पाश बुद्धि से फाइल करने के लिए बाइट्स ज 256 बाइट्स लिखा प्रत्येक यात्रा
  5. fflush/fclose फ़ाइल संभाल
  6. फिर से खोलना फ़ाइल और फिर से करते हैं कदम 3-6 के लिए 10 ~ 15 बार
  7. फ़ाइल का नाम बदलने और फिर हटाएं यह

है यह कैसे किया जाता है? क्योंकि मैंने इरेज़र में "गुटमैन 25 पास" नाम पढ़ा है, इसलिए मुझे लगता है कि 25 बार फ़ाइल ओवरराइट की गई है और 'गुटमैन' यादृच्छिकता एल्गोरिदम है?

+0

ध्यान दें कि, कम से कम, आपको अद्यतन के लिए फ़ाइल खोलनी होगी। लेकिन तब भी आपको कोई गारंटी नहीं है कि अद्यतन क्षेत्र एक ही स्थान पर वापस लिखे गए हैं। (वास्तव में, लगभग निश्चित रूप से एसएसडी के रूप में नहीं।) –

उत्तर

8

आप ऑपरेटिंग सिस्टम के सहयोग के बिना सुरक्षित रूप से ऐसा नहीं कर सकते - और अक्सर तब भी नहीं।

जब आप कोई फ़ाइल खोलते हैं और इसे लिखते हैं तो कोई गारंटी नहीं है कि ओएस पुरानी एक के रूप में कताई जंग के समान बिट पर नई फाइल डालने जा रहा है। भले ही यह आपको नहीं पता कि नया लेखन क्लस्टर की एक ही श्रृंखला का उपयोग करेगा या नहीं।

तब भी आपको यकीन नहीं है कि ड्राइव ने कुछ गलती के कारण डिस्क ब्लॉक को मैप नहीं किया है - एक ब्लॉक पर विश्व वर्चस्व के लिए अपनी योजनाएं छोड़कर खराब है लेकिन अभी भी पठनीय है।

ps - 25x ओवरराइट अब आवश्यक नहीं है, खराब सिर ट्रैकिंग के साथ पुरानी कम घनत्व एमएफएम ड्राइव पर इसकी आवश्यकता थी। एक बार आधुनिक जीएमआर ड्राइव ओवरराइटिंग पर बहुत कुछ है।

+0

जिसने मेरी कल्पना को मार डाला कि हार्ड डिस्क कैसे काम करती है: एस, पूरी तरह से!, तो आपको क्या लगता है कि समाधान होगा, अगर कोई है? – killercode

+0

ओएस आश्रित भाग के लिए @ किलरकोड, जिसमें डिस्क ब्लॉक का उपयोग फ़ाइल द्वारा किया जाता है - फिर आप इसे ओएस फ़ंक्शन के साथ कर सकते हैं जो आपको बताता है कि कौन से डिस्क ब्लॉक का उपयोग किया जाता है और उन्हें ओवरराइट कर सकता है। ऑन-डिस्क खराब ब्लॉक मैपिंग के लिए, और विशेष रूप से पहनने के स्तर के साथ एक एसएसडी पर, केवल एकमात्र सुरक्षित हटाना एक बहुत बड़ा हथौड़ा है! –

+0

@ हार्ड डिस्क कैसे काम करता है इसकी मेरी कल्पना को मार डाला - यह सरल शब्दों में सही है लेकिन फाइल सिस्टम और डिस्क दृश्यों के पीछे बहुत सारे अनुकूलन कर सकते हैं। –

1

हाँ, वास्तव में यह एक फ़ाइल

यह इतना क्षेत्र पर 35 पैटर्न की एक श्रृंखला लिख ​​कर मिटाना होगा करता है पर n विभिन्न पैटर्न को अधिलेखित कर रहा है।

पैटर्न का चयन मानता है कि उपयोगकर्ता ड्राइव द्वारा उपयोग किए जाने वाले एन्कोडिंग तंत्र को नहीं जानता है, और इसमें पैटर्न विशेष रूप से तीन अलग-अलग प्रकार के ड्राइव के लिए डिज़ाइन किया गया है। एक उपयोगकर्ता जो जानता है कि ड्राइव का उपयोग किस प्रकार का एन्कोडिंग केवल उनके पैटर्न को उनके ड्राइव के लिए चुन सकता है। एक अलग एन्कोडिंग तंत्र के साथ एक ड्राइव के लिए विभिन्न पैटर्न की आवश्यकता होगी।

अधिक जानकारी here है।

1

@ मार्टिन बेकेट सही है; "सुरक्षित हटाने" जैसी कोई चीज नहीं है जबतक कि आप ड्राइव के नीचे सभी तरह से हार्डवेयर क्या कर रहे हैं, इस बारे में सब कुछ पता नहीं है। (और फिर भी, मैं भौतिक मीडिया तक पहुंच के लिए पर्याप्त रूप से अच्छी तरह से वित्त पोषित हमलावर को पुनर्प्राप्त कर सकता था, इस पर कोई शर्त नहीं लगाऊंगा।)

लेकिन मानते हैं कि ओएस और डिस्क एक ही ब्लॉक का फिर से उपयोग करेंगे, आपकी योजना अधिक बुनियादी कारणों से काम नहीं करती है: fflush आम तौर पर डिस्क पर कुछ भी नहीं लिखता है।

अधिकांश मल्टी-टास्किंग ऑपरेटिंग सिस्टम (विंडोज, लिनक्स और ओएस एक्स समेत) पर, fflush केवल उपयोगकर्ता-स्पेस बफर से कर्नेल में डेटा को मजबूर करता है। कर्नेल तब अपना स्वयं का बफरिंग करेगा, जब इसे ऐसा लगता है तो केवल डिस्क पर लिखना होगा।

लिनक्स पर, उदाहरण के लिए, आपको fsync(fileno(handle)) पर कॉल करने की आवश्यकता है। (या बस फ़ाइल डिस्क्रिप्टर का उपयोग पहले स्थान पर करें।) ओएस एक्स समान है। विंडोज़ में FlushFileBuffers है।

नीचे पंक्ति: आपके द्वारा वर्णित लूप ऑन-डिस्क फ़ाइल की बजाय 10-15 बार कर्नेल बफर को ओवरराइट करने की संभावना है। डेटा को डिस्क पर बल देने के लिए सी या सी ++ में कोई पोर्टेबल तरीका नहीं है। इसके लिए, आपको एक मंच-निर्भर इंटरफ़ेस का उपयोग करने की आवश्यकता है।

0

गुटमैन विधि पुराने डिस्क प्रौद्योगिकी एन्कोडिंग योजनाओं के लिए ठीक काम करती है, और गुटमैन विधि की 35 पास पोंछने की योजना अब आवश्यक नहीं है, यहां तक ​​कि गुटमैन भी स्वीकार करता है। देखें: गुटमान विधि: https://en.wikipedia.org/wiki/Gutmann_method आलोचना अनुभाग में जहां गुटमैन मतभेदों पर चर्चा करता है।

आमतौर पर फ़ाइल को सुरक्षित रूप से हटाने के लिए कुछ यादृच्छिक पास करने के लिए पर्याप्त होता है (संभवतः एक अतिरिक्त शून्यिंग पास के साथ)।

thc.org से सुरक्षित-हटाए गए पैकेज में हार्ड ड्राइव पर डिस्क और इनोड स्पेस को सुरक्षित रूप से वाइप करने के लिए sfill कमांड होता है।

+0

"वर्तमान में कोई निजी डेटा वसूली कंपनी दावा नहीं करती है कि यह पूरी तरह से ओवरराइट किए गए डेटा का पुनर्निर्माण कर सकता है।" - मैंने डेटा रिकवरी फर्म में काम किया था और जब हम कभी नहीं कहेंगे कि जब तक यह पुनर्प्राप्त नहीं हुआ तब तक हम एक फाइल पुनर्प्राप्त कर सकते थे, ऐसे समय थे जहां हम आंशिक फाइलें और कभी-कभी पूरी फाइल को पुनर्प्राप्त करने में सक्षम थे। प्रक्रिया समय गहन थी लेकिन हमारे पास ऐसे कार्यक्रम थे जो फ़ाइल की कुछ उच्च संभावनाओं के क्रम में सहायता करेंगे। मैं स्वीकार करता हूं कि अगर हम इसे ओवरराइट कर चुके थे या जब सिर दुर्घटनाओं से भ्रष्टाचार हुआ तो हम शायद 90% समय के उपयोग को पुनर्प्राप्त करने में असमर्थ थे। – Chad

0

MFT (मास्टर फ़ाइल तालिका)FAT (फ़ाइल आबंटन टेबल), MFT रिकॉर्ड रखता है के रूप में समान: डिस्क पर फ़ाइलों ऑफसेट, फ़ाइल नाम, दिनांक/समय, आईडी, फ़ाइल आकार, और यहां तक ​​कि फ़ाइल डेटा अगर फ़ाइल डेटा रिकॉर्ड रिक्त स्थान के अंदर फिट बैठता है जो लगभग 512 बाइट्स है, 1 रिकॉर्ड आकार 1 केबी है।

नोट: नई HDD डेटा 0x00 करने के लिए सेट (बस आपको यह बताने के)

मान लीजिए कि आप के ऊपर लिख file1.txt ओएस MFT इस फाइल रिकॉर्ड के अंदर ऑफसेट पाता चाहते हैं।। बाइनरी मोड में बाइनरी (00000000) के साथ file1.txt को ओवरराइट करना प्रारंभ करें।

आप डिस्क पर फ़ाइल डेटा को ओवरराइट करेंगे 100% यही कारण है कि एमएफटी में डिस्क पर फ़ाइल ऑफसेट है। आप इसका नाम बदलकर हटा देंगे।

नोट: एमएफटी हटाए गए फ़ाइल को चिह्नित करेगा, लेकिन आप अभी भी इस फ़ाइल के बारे में कुछ डेटा प्राप्त कर सकते हैं यानी दिनांक/समय: बनाया, संशोधित, एक्सेस किया गया। फ़ाइल ऑफसेट, विशेषताओं, झंडे।

1- create folder in c:\ and move file and in same time rename in to folder(use rename function) rename file to 0000000000 or any another without extention 

2- overwrite file with 0x00 and check if file was overwrited 

3- change date/time 

4- make without attributes 

5- leave file size untouched OS faster reuse empty space. 

6- delete file 

7- repeat all files (1-6) 

8- delete folder 

or 

(1, 2, 6, 7, 8) 

9- find files in MFT remove records of these files. 
संबंधित मुद्दे