मैं जानबूझकर एसडी कार्ड पर एक सेक्टर को कैसे तोड़ / भ्रष्ट कर सकता हूं?


142

मुझे कुछ एम्बेडेड हार्डवेयर के लिए कुछ पढ़ने / लिखने के कोड की लचीलापन का परीक्षण करने की आवश्यकता है। मैं कुछ एसडी कार्ड का त्याग कैसे कर सकता हूं और एक नियंत्रित अध्ययन के लिए कई ज्ञात क्षेत्रों को तोड़ सकता हूं?

केवल एक चीज जो मैं सोच सकता हूं, वह है कि किसी एक क्षेत्र को कुछ मिलियन गुना अधिलेखित करना। मुझे आश्चर्य है कि अगर एक लिनक्स बैडब्लॉक स्क्रिप्ट को एक एकल सेक्टर पर अपने विनाशकारी परीक्षण को कई घंटों के लिए बार-बार चलाने के लिए बनाया जा सकता है।


20
क्या आप निम्न-स्तर के SD ड्राइवर को बदलने का दिखावा कर सकते हैं कि एक ख़राब ब्लॉक है, या यह सवाल से बाहर है?

3
@MarkYisri, मुझे नहीं लगता कि ड्राइवर बहुत सुलभ है। जो भी ड्राइवर हम उपयोग कर रहे हैं, वह फर्मवेयर के बाकी हिस्सों में मेमोरी आवंटन को अधिकतम करने के लिए अति-अल्पविकसित है। इसके अलावा, अगर यह संभव था, तो यह मेरी क्षमता से परे होगा।
गाबे क्रॉउज

3
क्या आप एसडी कार्ड एमुलेटर बना सकते हैं? सरलतम परियोजना नहीं, आप मन लगाओ।
user20574

11
लक्ष्य को देखते हुए, आप थोड़े से पैसे के लिए कुछ सेकंड-हैंड एसडी कार्ड खरीद सकते हैं और आपको आसानी से एक दोषपूर्ण मिल सकता है, या विशेष रूप से दोषपूर्ण कार्ड देखने के लिए एक "तलाश ..." की घोषणा की जा सकती है। या दोषपूर्ण कार्ड के लिए ईबे खोजें। फिर आप कार्ड का परीक्षण करते हैं और आपको दोषपूर्ण क्षेत्रों की स्थिति का पता चल जाएगा।
फरो

28
किसी भी पेशेवर फोटोग्राफर से पूछें। वे निश्चित रूप से स्केच एसडी कार्ड का एक ढेर होगा।
जे ...

जवाबों:


168

एक वैकल्पिक दृष्टिकोण जो उपयोगी हो सकता है।

यदि आपका कोड लिनक्स के तहत चलता है, तो हो सकता है कि आप इसे "दोषपूर्ण" तार्किक डिवाइस के साथ परीक्षण कर सकें। dmsetupI / O त्रुटियां वापस करने वाले उपकरण बना सकते हैं। बस अपने डिवाइस का उपयोग कर errorऔर / या flakeyलक्ष्य का निर्माण करें । से man 8 dmsetup:

error
इस क्षेत्र में जाने वाले किसी भी I / O को मिटा देता है। परीक्षण के लिए या उनमें छेद वाले उपकरणों को बनाने के लिए उपयोगी है।

flakey
linearलक्ष्य के लिए एक समान मैपिंग बनाता है लेकिन समय-समय पर अविश्वसनीय व्यवहार प्रदर्शित करता है। परीक्षण करते समय असफल उपकरणों का अनुकरण करने के लिए उपयोगी।

नोट: flakeyलक्ष्य उपयोग यहां प्रलेखित हैयहाँ मूल उदाहरण है

जहां तक ​​मुझे पता है कि एक आई / ओ त्रुटि तुरंत रिपोर्ट की जाएगी, इसलिए यह वास्तविक एसडी कार्ड व्यवहार से अलग है जहां आप देरी, रुकने आदि की उम्मीद कर सकते हैं। फिर भी मुझे लगता है कि यह दृष्टिकोण कुछ मामलों में उपयोगी हो सकता है, कम से कम तेजी से प्रदर्शन करने के लिए प्रारंभिक परीक्षण या तो।


34
मैं उस आउट ऑफ द बॉक्स सोच की सराहना करता हूं! हम एक 80MHz Atmel चिप और कोई वास्तविक OS के माध्यम से SD के साथ ब्लॉक स्तर पर हस्तक्षेप कर रहे हैं।
गाबे क्राऊस

1
@GabeKrause किस स्थिति में इस उत्तर की उपयोगिता इस बात पर निर्भर करती है कि लिनक्स ब्लॉक डिवाइस एपीआई आपके एम्बेडेड डिवाइस ड्राइवर के एपीआई के समान कैसे हो सकता है।
Qsigma

1
dmsetupएक errorडिवाइस सेट करने के लिए कमांड जो हमेशा पढ़ी गई त्रुटियां देता है: stackoverflow.com/questions/1870696/…
पीटर कॉर्ड्स

1
मैं मानता हूं कि यह एक बेहतर समाधान की तरह लगता है। पहले आप किसी भी हार्डवेयर को दोहरा सकते हैं। और आप विभिन्न त्रुटि मोड का अनुकरण भी कर सकते हैं। उदाहरण के लिए मेरे पास 16 जीबी की यूएसबी फ्लैश ड्राइव है जो सभी ठीक काम करती है। कुछ समय बाद हालांकि उस पर एक विशेष क्षेत्र गलत डेटा वापस करना शुरू कर देता है। किसी भी प्रकार की कोई FS त्रुटि नहीं है। आप फ़ाइल पढ़ते हैं लेकिन सामग्री अलग है। कुछ क्षेत्र स्पष्ट रूप से अस्थिर हैं। लेकिन कुछ विशेष उपकरण कैसे व्यवहार करेंगे, पहले से नहीं जाना जा सकता है।
अकोस्टैडिनोव

76

इस व्यक्ति ने खराब ब्लॉकों को चिह्नित करने के लिए उपयोग किए गए एसडी कार्ड के अंदर माइक्रोकंट्रोलर को हैक किया: https://www.bunniestudios.com/blog/?p/3554

आप समान और मनमाने ढंग से ब्लॉक को दोषपूर्ण के रूप में चिह्नित करने में सक्षम हो सकते हैं।

कैओस कंप्यूटर कांग्रेस (30C3) में आज, एक्सब्स और मैंने एक खोज का खुलासा किया कि कुछ एसडी कार्ड में कमजोरियां हैं जो मनमाने कोड निष्पादन की अनुमति देती हैं - मेमोरी कार्ड पर ही। अंधेरे पक्ष पर, मेमोरी कार्ड पर कोड निष्पादन MITM (मैन-इन-द-मिडिल) हमलों की एक श्रेणी को सक्षम करता है, जहां कार्ड एक तरह से व्यवहार करता प्रतीत होता है, लेकिन वास्तव में यह कुछ और करता है। प्रकाश पक्ष पर, यह हार्डवेयर उत्साही लोगों के लिए माइक्रोकंट्रोलर्स के एक बहुत सस्ते और सर्वव्यापी स्रोत तक पहुंच प्राप्त करने की संभावना को भी सक्षम बनाता है।

ये एल्गोरिदम अनुप्रयोग या OS स्तर पर चलने के लिए बहुत जटिल और बहुत अधिक उपकरण-विशिष्ट हैं, और इसलिए यह पता चलता है कि हर फ्लैश मेमोरी डिस्क जहाजों में डिस्क एब्स्ट्रक्शन एल्गोरिदम का एक कस्टम सेट चलाने के लिए एक उचित शक्तिशाली माइक्रोकंट्रोलर है। यहां तक ​​कि कम करने वाले माइक्रोएसडी कार्ड में एक नहीं, बल्कि कम से कम दो चिप होते हैं - एक नियंत्रक, और कम से कम एक फ्लैश चिप (उच्च घनत्व कार्ड कई फ्लैश डाई को ढेर कर देगा)।

एम्बेडेड माइक्रोकंट्रोलर आमतौर पर एक बहुत संशोधित 8051 या एआरएम सीपीयू है। आधुनिक कार्यान्वयन में, माइक्रोकंट्रोलर 100 मेगाहर्ट्ज प्रदर्शन स्तर तक पहुंच जाएगा, और कई हार्डवेयर त्वरक ऑन-डाई भी होंगे। आश्चर्यजनक रूप से, इन नियंत्रकों को डिवाइस में जोड़ने की लागत संभवतः $ 0.15- $ 0.30 के आदेश पर है, विशेष रूप से उन कंपनियों के लिए जो एक ही व्यापार इकाई के भीतर फ्लैश मेमोरी और नियंत्रकों दोनों को थपथपा सकते हैं। यह संभवत: इन माइक्रोकंट्रोलर्स को जोड़ने के बजाय प्रत्येक फ्लैश मेमोरी चिप का पूरी तरह से परीक्षण और लक्षण वर्णन करने के लिए सस्ता है, जो यह बताता है कि क्यों प्रबंधित फ्लैश डिवाइस एक माइक्रोकंट्रोलर के शामिल होने के बावजूद कच्चे फ्लैश चिप्स से प्रति बिट सस्ता हो सकता है।

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

30 सी 3 में हमारी बात में, हम अपने निष्कर्षों की रिपोर्ट करते हैं, जो एक विशेष माइक्रोकंट्रोलर ब्रांड की खोज करते हैं, जिसका नाम है, Appotech और इसके AX211 और AX215 प्रसाद। हम निर्माता-आरक्षित आदेशों पर प्रेषित एक सरल "नॉक" अनुक्रम की खोज करते हैं (अर्थात्, CMD63 'ए', 'पी', 'पी', 'ओ') द्वारा नियंत्रित होता है जो नियंत्रक को फर्मवेयर लोडिंग मोड में छोड़ देता है। इस बिंदु पर, कार्ड अगले 512 बाइट्स को स्वीकार करेगा और इसे कोड के रूप में चलाएगा।


10
सभी उत्तरों में से, यह संभवतः ओपी के लिए सबसे निकटतम है जो वास्तव में पूछ रहा था।
कोरट अमोन

11
यह एक शानदार पढ़ा था!
गाबे क्राउज

@ टिविटी ने कुछ प्रासंगिक हिस्सों की नकल की।
फारो

2
एसडी कार्ड आर्किटेक्चर की दुनिया में खरगोश छेद के नीचे मैं जाता हूं।
तेजस काले

38

यह आमतौर पर काम नहीं करेगा क्योंकि हाल के एसडी कार्ड (या ईएमएमसी) स्थिर और गतिशील पहनने-स्तर का उपयोग करते हैं, जिसका अर्थ है कि एक बुद्धिमान नियंत्रक आपके लेखन निर्देश की व्याख्या करता है और इसे कम से कम उपयोग किए जाने वाले फ्लैश क्षेत्रों में से एक में मैप करता है।

केवल एक चीज जो आप कर सकते थे, वह आपके आपूर्तिकर्ताओं से संपर्क करने और उनकी डेटशीट के लिए पूछने की कोशिश करना; उनके पहनने के स्तर की एल्गोरिथ्म की स्थिति को पुनः प्राप्त करने के कुछ (विक्रेता विशिष्ट) तरीके हो सकते हैं। यह संभावित रूप से आपको अंतर्निहित फ़्लैश की स्थिति / उपयोग को क्वेरी करने की अनुमति देगा। या आप अशुभ हो सकते हैं और यह मौजूद नहीं हो सकता है।

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


2
क्या यह अभी भी काम नहीं करेगा अगर एसडी कार्ड पूरी तरह से डेटा से भरा हो, ताकि यह ज्यादा रीमैप न कर सके? मुझे नहीं लगता कि उनके पास बहुत सारे छिपे हुए क्षेत्र हैं।
रुस्लान

2
@Ruslan डिवाइस को यह जानने की जरूरत नहीं है कि कोई सेक्टर किसी चीज से भरा हुआ है या नहीं। यह केवल अनुरोध पर वितरित करने के लिए किन क्षेत्रों की सामग्री और अनुरोध पर लिखने के लिए किन क्षेत्रों को जानना है। और फिर कुछ अघोषित परत हो सकती है, जो अन्य भौतिक स्मृति का उपयोग करते हुए उन क्षेत्रों का प्रतिनिधित्व करने के लिए कुछ अज्ञात एल्गोरिथ्म का पालन कर रही है ... - और "पूर्ण" का अर्थ केवल "cuncurrently fillable ब्लॉकों के लिए दहलीज तक पहुँच" है, निश्चित रूप से।
अलेक्जेंडर कोसुबेक

6
@Ruslan: यहां तक ​​कि अगर पूरे डिवाइस पर डेटा है, तो भी वियर-लेवलिंग प्रभावी हो सकती है: उदाहरण के लिए, यदि सेक्टर ए को एक बार लिखा गया है, और सेक्टर बी को 1,000 बार लिखा गया है, तो जब कोई दूसरा लेखन आता है सेक्टर बी कार्ड दो सेक्टरों के लिए डेटा स्वैप कर सकता है, ताकि सेक्टर ए में सेक्टर बी का डेटा शामिल हो (और संभवतः अधिक बार ओवरराइट हो जाएगा - लेकिन यह ठीक है क्योंकि यह ताजा है), और सेक्टर बी में सेक्टर ए का डेटा होगा (जो कि उम्मीद है कि ज्यादा बदलाव नहीं)। जाहिर है कि डिवाइस को मैपिंग की भी जरूरत होती है कि कौन सा सेक्टर कहां जमा हो।
psmears

2
@GabeKrause हाँ, यह जानवर की प्रकृति है। न्यूनतम स्तर पर आपके पास या तो नंद है या न ही फ्लैश चिप्स (आजकल सब कुछ नंद का उपयोग कर रहा है), और नंद चिप के सामने एक बुद्धिमान नियंत्रक है जो बस को समाप्त करता है (उदाहरण के लिए यूएसडी छड़ी के लिए यूएसडी छड़ी या मिमी कार्ड के लिए एसडी कार्ड। ), और यह चिप मैपिंग / वियर लेवलिंग आदि के लिए जिम्मेदार है, यह फ्लैश को आपसे दूर कर देता है। यदि आप एम्बेडेड लिनक्स पर नंद का उपयोग कर रहे हैं तो उदाहरण के लिए यह आपके लिए क्या करेगा।
amo-ej1

2
एसडी कार्ड में एक माइक्रोकंट्रोलर होता है जो "फ्लैश ट्रांसलेशन लेयर" को लागू करता है - इस अनुरोध को इस माइक्रोकंट्रोलर द्वारा कच्ची हैंड कमांड में ट्रांसलेट किया जाता है। कुछ एसडी कार्ड में MCU फर्मवेयर को बदलने / अपडेट करने के लिए छिपे हुए आदेश हैं और इस पर किए गए कुछ रिवर्स इंजीनियरिंग प्रयास भी हैं। कच्चे NAND (जो कई घरेलू राउटर जैसे कुछ उदाहरणों में दिखाई दे सकते हैं) के अलावा अधिकांश फ्लैश स्टोरेज डिवाइस हैं, जो संभवतया "ओवरप्रोवीडेड" हैं - जिसका अर्थ है कि आपके 1GB एसडी कार्ड में 1024MB + 128MB रॉ नंद स्पेस जैसा कुछ है, जो पूर्ण होने पर लेवलिंग को कवर करता है। और खराब फ्लैश पृष्ठों के लिए सेक्टर-स्पैरिंग भी।
लॉरेंस सी।

32

आप ऑपरेशन का तापमान बढ़ाकर ट्रांजिस्टर पहन सकते हैं। एक गर्म चिप (70-120 डिग्री सेल्सियस) पर लिखने-मिटा चक्र का उपयोग करें; यह तेजी से पहनना होगा।


18
अत्यधिक भंडारण तापमान भी हानिकारक है, इसलिए यह कुछ समय के लिए 120C ° (या इससे भी अधिक) पर चिप को "पकाने" के लिए अधिक व्यावहारिक हो सकता है, फिर दोषों की जांच करें।
दिमित्री ग्रिगोरीव

2
कार्ड को आपूर्ति पर थोड़ा ओवरवॉल्टेज भी संभव हो सकता है, और इसी तरह प्रयोग करने की आवश्यकता होगी।
क्रिस एच।

अंडरवॉल्टेज भी विभिन्न प्रकार के दोषों का कारण बन सकता है, जैसे नियंत्रक लॉक-अप।
user20574

18

प्रस्तावना: इस विकल्प के लिए अतिरिक्त प्रोग्रामिंग और हार्डवेयर संशोधनों की आवश्यकता होती है, लेकिन यह नियंत्रित पठन के लिए मेजबान के लिए सबसे अधिक पारदर्शी होने की अनुमति देता है।

एक एसडी कार्ड में कई I / O विकल्प होते हैं, लेकिन इसे SPI पर नियंत्रित किया जा सकता है। यदि आप एक एसडी कार्ड लेने और इसे संशोधित करने के लिए थे ताकि आप पिन को एक माइक्रोकंट्रोलर (जैसे एक अरुडिनो) के साथ संलग्न कर सकें तो आपके पास एसडी कार्ड पढ़ने वाले डिवाइस के लिए Arduino की नकल कर सकते हैं और पारदर्शी हो सकते हैं। जरूरत पड़ने पर माइक्रोकंट्रोलर पर आपका कोड जानबूझकर खराब डेटा लौटा सकता है। इसके अलावा, आप माइक्रोकंट्रोलर पर एक एसडी कार्ड लगा सकते हैं ताकि रीडिंग गीगाबाइट्स के परीक्षण के लिए अनुमति देने के लिए एसडी कार्ड के लिए माइक्रोकंट्रोलर से गुजर सकें।


3
अधिकांश हाई-स्पीड डिवाइस (पीसी कार्ड रीडर सहित) बस एक कार्ड के साथ काम करने से मना कर देंगे जो चार-बिट एसडी का समर्थन नहीं करता है।
दिमित्री ग्रिगोरीव

1
ओपी ने कहा कि यह एक एम्बेडेड सिस्टम था जो कार्ड का उपयोग करेगा जो एसडी कार्ड के लिए एसपीआई का समर्थन करने की अधिक संभावना बनाएगा
एरिक जॉनसन

3
इस पर एक संस्करण, लेकिन कड़ी मेहनत, एक एसडी कार्ड ढूंढना होगा जिसके लिए आप फ़र्मवेयर को रिफ़लैश कर सकते हैं ।
पीटर टेलर

2
यह सुपर दिलचस्प है! हमारा एम्बेडेड सिस्टम SPI के माध्यम से I / O चला रहा है। मुझे यकीन नहीं है कि अगर मेरे पास इस तरह के अतिरिक्त को पूरा करने के लिए हमारे हार्डवेयर को संशोधित करने के लिए बैंडविड्थ है, लेकिन मुझे लगता है कि यह शानदार सोच है।
गाबे क्राउज

2
डायनेमिक वियर लेवलिंग के बारे में शिक्षित होना मुझे विश्वास दिलाता है कि रणनीतिक रूप से "खराब" एसडी कार्ड को ज्ञात बुरे क्षेत्रों के साथ बनाना अधिक कठिन (या संभव नहीं) है जितना कि मैंने प्रश्न प्रस्तुत करते समय उम्मीद की थी। हालांकि वर्तमान में मेरी क्षमता के दायरे से परे, यह सबसे अधिक नियंत्रणीय और तकनीकी रूप से आशाजनक दृष्टिकोण प्रतीत होता है, संभवतः @Olafm द्वारा पीछा किया जाता है। डेटा ट्रांसफर के दौरान किसी भी पूर्व-निर्धारित सेक्टर स्थान पर इंटरसेप्ट हार्डवेयर और "भ्रष्ट" डेटा को कस्टमाइज़ करना एक अच्छा तरीका लगता है।
गाबे क्राउज

15

मैं eBay / aliexpress पर जाऊंगा और सबसे सस्ता एसडी कार्ड खरीदूंगा जो मुझे चीन से मिल सकता है, वह है जो "सच होने के लिए बहुत अच्छा है"। वे अक्सर दोषपूर्ण क्षेत्रों के साथ आते हैं या सॉफ्टवेयर सेट में होते हैं जो वास्तव में वे बहुत बड़े होते हैं। किसी भी तरह से, आपको परीक्षण के लिए उपयोग करने के लिए दोषपूर्ण एसडी कार्ड के साथ समाप्त होना चाहिए।


दिलचस्प दृष्टिकोण, लेकिन आप संग्रहीत कोड पर बुरे ब्लॉकों के प्रभावों का परीक्षण करने के लिए बुरे क्षेत्रों को कैसे लिखेंगे?
फिक्सर 1234

@ fixer1234, मेरे पास इनमें से एक एसडी कार्ड था जिसमें कहा गया था कि यह 32 जीबी है लेकिन यह वास्तव में केवल 128 एमबी है। मैंने इसे अपने कैमरे में डाला और 128MB से आगे की तस्वीरें ले सकता था लेकिन केवल पहली तस्वीरों को वापस पढ़ा जा सकता था। बाकी को सूचीबद्ध किया गया था लेकिन टूटी हुई के रूप में वापस पढ़ा गया था। लगता है कि वे कैसे आप कार्ड के साथ समस्याओं को नोटिस करना चाहते हैं जब यह शिकायत करने के लिए बहुत देर हो चुकी है ...
GuzZzt

11

एक बार, कई साल पहले, मुझे एक विकृत माँ के लिए एक एसडी कार्ड से स्नातक फ़ोटो और वीडियो का एक सेट प्राप्त करने के लिए भुगतान किया गया था। घनिष्ठ निरीक्षण करने पर, कार्ड को बाहरी मामले में दिखाई देने वाली दरार से किसी तरह से शारीरिक रूप से क्षतिग्रस्त हो गया था और इसमें कई खराब सेक्टर थे, विशेष रूप से कई शुरुआती, महत्वपूर्ण सेक्टर, जो उस समय भी सबसे विश्वसनीय पुनर्प्राप्ति कार्यक्रम थे, जो कार्ड को पढ़ने में पूरी तरह से विफल रहे। । इसके अलावा, फोरेंसिक डेटा उपकरण वापस तो एक भाग्य लागत।

मैंने एक समान ब्रांड / आकार का एसडी कार्ड प्राप्त किया और अपने स्वयं के कस्टम कच्चे डेटा को डंप किया और खराब कार्ड से डेटा को अच्छे से कॉपी करने के लिए उपयोगिता को पुनर्स्थापित किया। हर बार जब उपयोगिता एक खराब सेक्टर से टकराती है, तो वह उस क्षेत्र के लिए सभी शून्य लिखने से पहले कई बार रिटायर होता है और, छोड़ने और रुकने के बजाय, विफलता को अनदेखा करता है और अगले क्षेत्र में आगे बढ़ता है। जब से मैंने यह देखा है कि कुछ क्षेत्रों में अभी भी लगभग 40% सफलता दर है, तब भी प्रयास किए गए थे। एक बार जब डेटा नए एसडी कार्ड पर था, तो रिकवरी टूल जो न्यूनतम डेटा हानि / भ्रष्टाचार के साथ त्रुटिपूर्ण काम करने से पहले विफल हो गए थे। कुल मिलाकर, सभी फ़ाइलों का लगभग 98% बरामद किया गया। पूर्व में हटाए गए कई आइटम भी पुनर्प्राप्त किए गए थे क्योंकि कुछ भी वास्तव में कभी नहीं हटाया जाता है - बस ऐसे ही चिह्नित किया जाता है और धीरे-धीरे ओवरराइट किया जाता है। थोड़ा उबाऊ डेटा वसूली अभ्यास के रूप में जो शुरू हुआ वह मेरे एक और यादगार और दिलचस्प सॉफ्टवेयर विकास परियोजनाओं में से एक बन गया। यदि आप सोच रहे थे, तो माँ रोमांचित थी।

किसी भी दर पर, यह कहानी बताती है कि एसडी कार्ड को शारीरिक रूप से नुकसान पहुंचाना संभव है, जैसे कि डेटा अभी भी सुलभ है, लेकिन ऐसे क्षेत्र हैं जो केवल मुश्किल से कार्य कर रहे हैं और इससे पढ़ने के प्रयास में कुछ भी करने में कठिनाई होती है। एसडी कार्ड प्लास्टिक बहुत भड़कीला होता है, इसलिए कुछ सस्ते में झुकना या काटना मुश्किल हो सकता है। आपकी माइलेज भिन्न हो सकती है।

आप अपने क्षेत्र के कुछ डेटा रिकवरी स्थानों पर भी पूछ सकते हैं। चूंकि वे विभिन्न विफल या असफल उपकरणों से डेटा रिकवरी के विशेषज्ञ हैं, इसलिए उनके पास कुछ उपयोगी इनपुट / युक्तियां होनी चाहिए और यहां तक ​​कि हाथ पर कुछ पूर्व-पर्दाफाश एसडी कार्ड (जैसे प्रशिक्षण प्रयोजनों के लिए) हो सकते हैं जो आप उनसे प्राप्त कर सकते हैं।


2
क्या आपने उस उपयोगिता को ऑनलाइन जारी किया है? मेरे शस्त्रागार में जोड़ना बहुत अच्छा होगा।
प्लोनी

1
इस बिंदु पर, यह संभवतया ठीक से काम नहीं कर सकता है, जो कि प्रगति की तकनीक (संभवत: संकलन भी नहीं कर सकता है) और निम्न-स्तरीय प्रणाली कॉल का उपयोग करता है। आधुनिक, ओपन सोर्स फॉरेंसिक डिवाइस / ड्राइव क्लोनिंग टूल के एक जोड़े भी हैं जिन्हें मैं अपने पुराने सॉफ़्टवेयर को मॉथबॉल से बाहर खींचने की कोशिश करने के लिए पहले उपयोग करने के लिए अधिक उपयुक्त होगा।
क्यूबिकल्सॉफ्ट

मुझे उम्मीद है कि आप शायद ddइसे प्राप्त करने के लिए कुछ मापदंडों को दे सकते हैं ताकि यह इस तरह से व्यवहार कर सके। हालांकि मुझे यकीन नहीं है।
wizzwizz4

@ wizzwizz4, ddrescue को देखें।
hildred

"इसके अलावा, फोरेंसिक डेटा उपकरण वापस तो एक भाग्य लागत।" मुझे पूरा यकीन है कि वे अभी भी करते हैं।
jpmc26

5

यह उत्तर @Ruslan की टिप्पणी पर एक विस्तार है

  1. अपना एसडी कार्ड लगभग 99.9% तक भरें
  2. शेष 0.1% की सामग्री को फिर से लिखें (A लिखें- A- लिखो B-delete - लिखो A ...)
  3. परीक्षण (समय-समय पर) क्या आपने पहले ही कार्ड को तोड़ दिया है

संभावित विकल्प:

यह सुनिश्चित नहीं है कि यह आपके उद्देश्यों के लिए काम करता है, लेकिन शायद यह वास्तव में आपके कार्ड को शारीरिक रूप से नुकसान पहुंचाने के लिए पर्याप्त होगा, जो बहुत तेज़ हो सकता है।


6
कार्ड को 99% तक भरने में मदद नहीं मिलेगी क्योंकि पहनने के स्तर का पूरा उद्देश्य वास्तव में इस तरह के समय से पहले क्षति को रोकने के लिए है। शारीरिक रूप से कार्ड को नुकसान पहुंचाने से निश्चित रूप से एक कार्ड में परिणाम होगा जो अब प्रारंभ नहीं करता है।
दिमित्री ग्रिगोरीव

2
@DmitryGrigoryev जब तक कार्ड अपनी आधिकारिक क्षमता से बहुत अधिक मेमोरी नहीं है, तब तक लेवलिंग पहनने से कितनी मदद मिलेगी (इस मामले में बाधा) ?
ispiro

12
@ispiro उदाहरण के लिए, अगली बार उच्च लिखने की संख्या वाला एक क्षेत्र अधिलेखित हो जाता है, इसकी सामग्री को कम लेखन गणना वाले क्षेत्र के साथ स्वैप किया जा सकता है।
दिमित्री ग्रिगोरीव

1
@DmitryGrigoryev अगर मैं इस उत्तर को सही ढंग से समझाऊं तो एसडी कार्ड होना चाहिए जो कि
लवली

1
@ डेनिसजेरुद्दीन हां, पुराने कार्ड ऐसा नहीं करते हैं। इन कार्डों के साथ बार-बार खाली फाइल बनाने / निकालने के लिए पर्याप्त है जब तक कि आवंटन तालिका में सेक्टर खराब न हो जाए।
दिमित्री ग्रिगोरीव

3

आप एक अस्थिर बिजली की आपूर्ति या उच्च वोल्टेज सिग्नलिंग शुरू करने की कोशिश कर सकते हैं।

मुझे पता है कि उपकरणों के एक परिवार के लिए एक सामान्य दोष एसडी कार्ड भ्रष्टाचार और आंतरायिक बैटरी संपर्क के बीच एक मजबूत संबंध है।


3

कुछ पुराने, कम क्षमता वाले एसडी कार्ड (16 एमबी-ईश) टीएसओपी / टीएसएसओपी स्टाइल पैकेज में फ्लैश चिप्स का उपयोग करते हैं। SMT rework में सक्षम एक कार्यशाला (यदि आप एम्बेडेड काम कर रहे हैं, तो आपके पास वह कौशल हो सकता है, अन्यथा बोर्ड स्तर के फोन / लैपटॉप की मरम्मत करने वाली छोटी कंपनियों के लिए जाँच करें) उस चिप को अलग और अलग कर सकता है, ताकि इसे पढ़ा और लिखा जा सके। एक डिवाइस प्रोग्रामर के साथ कच्चे (ECC कोड सहित)।

फिर भी, ध्यान रखें कि आप मुख्य रूप से परीक्षण करेंगे:

  • आपकी डिवाइस आंतरिक त्रुटि सुधार द्वारा शुरू की गई संभावित समयावधि / हिचकी से कैसे निपटेगी

और सबसे खराब स्थिति में

  • कैसे आपका डिवाइस एक एसडी कार्ड को विफल कर देता है।

यदि आप सिर्फ यह जांचना चाहते हैं कि यह एसडी कार्ड से किसी भी कारण के लिए अनियमित व्यवहार के साथ कैसे व्यवहार करता है, तो संभवतः इंटरफ़ेस लाइनों में विद्युत शोर को लागू करना सबसे अच्छा है (जैसे कि बीच में एक एफईटी बस स्विच लगाकर, और यादृच्छिक समय पर स्विच करना यह निरर्थक संकेतों के स्रोत के लिए (हालांकि सही विद्युत स्तरों का)।


एसडी कार्ड को विफल करने से "इलेक्ट्रिकल शोर" उत्पन्न नहीं होता है, वे सिर्फ लिखने के संचालन के लिए त्रुटि कोड लौटाते हैं।
दिमित्री ग्रिगोरीव

2

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


1

FAT32 मास्टर बूट रिकॉर्ड क्षेत्र संभवतः दुर्व्यवहार के लिए सबसे अधिक अतिसंवेदनशील है, क्योंकि एक तार्किक स्तर पर इसे हमेशा उसी स्थान पर रहने की आवश्यकता होती है। (शायद यह खराब क्षेत्रों के सॉफ्ट-रीमैपिंग द्वारा नियंत्रित किया जाता है, लेकिन मुझे कुछ संदेह है कि यह सभी हार्डवेयर पर लागू है।) इसलिए आप sfdiskलूप में चल सकते हैं और देख सकते हैं कि क्या आप इसे इस तरह से मिटा सकते हैं।

लेकिन मैं आपसे सॉफ्टवेयर में खराब हार्डवेयर को संभालने की कोशिश करने के बजाय, हार्डवेयर विश्वसनीयता में सुधार करने के लिए जो कुछ भी कर सकता हूं, करने के लिए आपसे विनती करने जा रहा हूं। समस्या यह है कि एसडी कार्ड सभी प्रकार के अजीब तरीकों से विफल हो जाते हैं। वे अपठनीय हो जाते हैं, वे अनिच्छुक हो जाते हैं, आपको खराब डेटा देते हैं, वे ऑपरेशन के दौरान समय निकालते हैं, आदि सभी तरीकों की भविष्यवाणी करने की कोशिश करना एक कार्ड विफल हो सकता है बहुत मुश्किल है।

यहाँ मेरी पसंदीदा विफलताओं में से एक है, "बड़ा डेटा मोड":

खराब एसडी फर्जी बड़ा डेटा

एसडी कार्ड कमोडिटी उपभोक्ता उत्पाद हैं जो काफी लागत के दबाव में हैं। भागों में तेजी से बदलाव होता है और डेटाशीट के द्वारा आना मुश्किल होता है। नकली उत्पाद अनसुना नहीं है। सस्ते भंडारण के लिए उन्हें हराना मुश्किल है, लेकिन जब एसएसडी विश्वसनीयता को प्राथमिकता देते हैं, तो एसडी कार्ड के लिए प्राथमिकता गति, क्षमता और लागत है (शायद उस क्रम में नहीं।)

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

यदि आपके उत्पाद को हटाने योग्य भंडारण की आवश्यकता है, या बस कुछ भी बदलने में देर हो गई है, तो या तो "औद्योगिक" ग्रेड कार्ड के लिए अतिरिक्त पैसे खर्च करने पर विचार करें, या उन्हें डिस्पोजेबल वस्तुओं के रूप में व्यवहार करें। हम क्या करते हैं (लिनक्स के तहत) fsckबूट पर कार्ड है और किसी भी त्रुटि की रिपोर्ट होने पर इसे पुन: स्वरूपित करता है, क्योंकि इस उपयोग के मामले में रिफॉर्मेटिंग स्वीकार्य है। फिर हम fsckइसे फिर से। यदि यह अभी भी सुधार करने के बाद त्रुटियों की रिपोर्ट करता है, तो हम इसे आरएमए करते हैं और हार्डवेयर को एक नए संस्करण के साथ बदलते हैं जो ईएमएमसी का उपयोग करता है।

सौभाग्य!


मैंने तुम्हें अंगूठा दिया। मैं एसडी कार्ड का उपयोग करता हूं और साल में एक दो बार विफल रहता हूं। मैंने इसे कभी ज्यादा सोचा नहीं था, लेकिन मेरे अपने अनुभव में मेरे असफल कार्डों ने एक असफल FAT के लक्षणों को प्रदर्शित किया, इससे पहले कि वे अंतिम रूप से बेकार थे। मुझे लगता है कि आप यहां कुछ करने के लिए हैं :) तो बस फ़ाइलों को बनाने और हटाने से एफएटी से बाहर निकलना चाहिए।
jwzumwalt

1

शायद यह वह दिशा नहीं है जो आप चाहते थे, लेकिन मैंने अपना एसडी कार्ड निकाल दिया, जबकि मेरा रेडियो या लैपटॉप इसे पढ़ रहा था, दुर्घटनाग्रस्त एसडी कार्ड की लगभग 1/5 या 1/10 बार गारंटी देता है। ऐसा लगता है कि कार्ड एक पढ़ने और संभवतः लिखने के दौरान हटाए गए शक्ति को अच्छी तरह से नहीं करते हैं। नीचे रॉबर्ट Calhoun की टिप्पणियों को पढ़ने के बाद, यह मुझे विश्वास दिलाता है कि यह FAT को नुकसान पहुंचा सकता है। हालांकि मुझे नहीं पता कि सिर्फ पढ़ने से दुर्घटना क्यों होती है - क्या कोई लेखन नहीं होना चाहिए?


यह एफएस को नुकसान पहुंचा सकता है लेकिन यह सुनिश्चित नहीं करता है कि यह वास्तव में खराब क्षेत्रों का निर्माण करेगा
अकोस्टाडिनोव

मैं आपको एक तथ्य के लिए बता सकता हूं कि यह कार्ड को क्रैश कर देता है और इसके लिए फिर से प्रारूप की आवश्यकता होती है। मैंने कई बार एसडी कार्ड के साथ एक रास्पबेरी पाई, अपने लैपटॉप और अपने कई घरेलू उपकरणों के साथ ऐसा किया है।
jwzumwalt 19

2
एक सुधार की आवश्यकता है! = क्षेत्रों को नुकसान होता है । फ़ाइल सिस्टम, हाँ। सेक्टर, शायद।
wizzwizz4

1

यदि आपका sd-कार्ड FAT32 स्वरूपित है, तो आप 2 वसा को हेक्स-संपादित कर सकते हैं, और सही हेक्स कोड के साथ एक सेक्टर को खराब कर सकते हैं। यह केवल एक चाल है यदि आप किसी विशेष क्षेत्र में खराब क्षेत्र को खोजने के लिए किसी सॉफ़्टवेयर का तर्क करना चाहते हैं; इससे आपके sd-card को कोई नुकसान नहीं होगा, एक पुनरावृत्ति इसे सामान्य स्थिति में लाएगा।


1
सुपर उपयोगकर्ता में आपका स्वागत है! यह एक दिलचस्प दृष्टिकोण की तरह लगता है - क्या आप शायद समझा सकते हैं कि विशेष रूप से हेक्स संपादन कैसे करें? धन्यवाद।
बेन एन

मुझे लगता है कि लिनक्स कमांड HDparm ट्रिक करेगा: यह आपको कुछ सेक्टर को बचाने की अनुमति देगा जिन्हें आप बाद में संपादित कर सकते हैं, और फिर अपने कार्ड पर वापस लिख सकते हैं। हालांकि आपको vfat और man hdparm के बारे में प्रलेखन खोजने की आवश्यकता है। क्षमा करें, मैं एक विंडोज़ कंप्यूटर के करीब नहीं हूँ।
एमिल डी फवास

--make-bad-sectorझंडा होनहार लग रहा है! हालाँकि, मैं यह नहीं बता सकता कि क्या यह केवल लिनक्स सिस्टम के भीतर काम करेगा जो शुरू में इस कमांड को चलाता है। मुझे उम्मीद है कि कमांड hdparm --make-bad-sector 20000 /dev/sd#किसी भी तरह से सेक्टर 20000 को खराब कर देगा, और मेरे एम्बेडेड हार्डवेयर डिवाइस पर खराब होने का पता लगाया जाएगा जो कि लिनक्स नहीं चल रहा है। कोई विचार?
गाबे क्राउज

0

मुझे आश्चर्य है कि अगर एक लिनक्स बैडब्लॉक स्क्रिप्ट को एक एकल सेक्टर पर अपने विनाशकारी परीक्षण को कई घंटों के लिए बार-बार चलाने के लिए बनाया जा सकता है।

एक एकल सेक्टर पर - नहीं, क्योंकि एसडी कार्ड के अंदर पहनने-लेवलिंग कोड सभी जगह तार्किक ब्लॉकों को फिर से भर देगा।

लेकिन आप आसानी badblocks -wसे एक लूप में चल सकते हैं जब तक कि यह कुछ खराब ब्लॉकों को प्रकट न करे। कुछ इस तरह काम करना चाहिए:

while badblocks -w /dev/xx; do :; done

यह मानते हुए कि बैडब्लॉक 0 रिटर्न करता है यदि कोई खराब ब्लॉक नहीं पाया गया और (0 अन्यथा (मैन पेज नहीं कहता है और मैंने सोर्स कोड नहीं दिया है।)


-1

आम तौर पर एसडी / यूडीएस कार्ड के साथ वे पहनने के स्तर को लागू करते हैं ताकि यह काफी कठिन हो सके। टाइप (सिंगल लेयर सेल, मल्टीलेयर, टीएलसी, 3 डी-नंद आदि) पर निर्भर करता है कि यह लिखने के लिए जरूरी है कि सेक्टर पूल को खाली करने के लिए इसे तोड़ने के लिए कई टीबी हो सकती है।

मैंने वास्तव में इसका परीक्षण 4GB, 64GB और 256GB Pro Duo, SSD और thumbdrive, 64GB K --- s --- के साथ किया था। 4 माइक्रोन 16GB चिप्स का उपयोग करने से पहले यह लगभग 3.84TB तक चला, इससे पहले कि यह FAT क्षेत्र में एक भी सॉफ्ट एरर के साथ विफल रहा। । 256GB का उपयोग करना थोड़ा कम चला गया, लेकिन बिना प्रत्यक्ष चिप के उपयोग के अनुमान होगा, शायद यह शायद 5TB ने लिखा था इससे पहले कि यह अंततः MBR भ्रष्टाचार के साथ देता था, लेकिन यह स्पष्ट नहीं था कि नियंत्रक ने USB3 मोड में ठोस रूप से काम किया था, लेकिन USB2 में बैकबैक के दौरान अधिक glitches था और यह बहुत गर्म था। डेटा की प्रतिलिपि बनाते समय 4GB डुओ रीडर में विफल हो गया, फिर से सुनिश्चित नहीं किया जा सकता है, लेकिन शायद 6 साल के उपयोग के बराबर है और कैमरा "पुनर्प्राप्त" संदेश भी दिखा रहा था। लिखने के दौरान संयोग से बिजली की आपूर्ति वोल्टेज अलग-अलग होने से यह बहुत तेजी से विफल हो जाएगा। इसी तरह के लक्षणों के साथ उपयोग के लगभग 2 वर्षों के बाद मेरा 128GB माइक्रोएसडी विफल हो गया,

एक्स-रे प्रयोगों के बारे में अप्रासंगिक नोटों को हटा दिया।


1
विशिष्ट रेक्टरों को नष्ट करने में मदद करने के लिए पहले से ही कई उत्तर हैं। यादृच्छिक लोगों को नष्ट करने के बारे में आपका सुझाव कुछ भी अतिरिक्त नहीं देता है।
माटे जुहेज़ज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.