सीडी / डीवीडी के md5sum की गणना करें


18

मेरे पास एक आईएसओ फाइल है, जिसे मैंने एक सीडी में जला दिया है। अब मैं कैसे जांच सकता हूं कि सीडी सही तरीके से बनाई गई है? मुझे एक कमांड चाहिए जो हैश राशि की गणना करता है जिसे मैं आईएसओ फाइल पर गणना करने वाले हैश योग के साथ जांच करने के लिए उपयोग कर सकता हूं। आदर्श रूप से आज्ञा चाहिए:

  • ISO फ़ाइल की परवाह किए बिना काम करें: यानी, मैं डिस्क में प्रत्येक फ़ाइल के लिए हैश राशि की सूची नहीं रखना चाहता, या जो भी ब्लॉक की संख्या याद है।
  • अपेक्षाकृत कम रहें: एक-लाइन कमांड महान है, जो दो लाइन लंबी कमांड की एक श्रृंखला है ठीक है, एक स्क्रिप्ट जो एक पृष्ठ पर होती है वह नहीं है
  • निष्पक्ष रूप से कुशल रहें: उदाहरण के लिए, ddफ़ाइल पर फिर से चलाए जाने वाला डिस्क md5sumअस्वीकार्य है

अगर कोई जवाब नहीं है जो सभी को संतुष्ट नहीं कर सकता है तो मैं निकटतम मैच की भी सराहना करूंगा। इससे भी बेहतर अगर आप मुझे बता सकें कि यह इतना सीधा-सीधा क्यों नहीं है।

जवाबों:


18

मूल समस्या यह है कि हम ठीक उसी सूचना के md5sum को लेना चाहते हैं जो मूल रूप से आईएसओ पर थी। जब आप आईएसओ को सीडी में लिखते हैं, तो डिस्क के अंत में रिक्त स्थान होता है, जो अनिवार्य रूप से md5sum को बदलता है। इस प्रकार, सबसे छोटा तरीका:

md5sum /dev/cdrom

काम नहीं करता है । क्या काम करता है (और ऑनलाइन प्रलेखन में आम है ) केवल डिवाइस से बाइट्स की सटीक संख्या पढ़ रहा है और फिर कर रहा है md5sum। यदि आप बाइट्स की संख्या जानते हैं तो आप कुछ ऐसा कर सकते हैं:

dd if=/dev/cdrom bs=1 count=xxxxxxxx | md5sum

जहाँ बाइट्स में 'xxxxx' iso के आकार का होता है।

यदि आपको हाथ से बाइट की संख्या का पता नहीं है, लेकिन आपके डिस्क पर आइसो अभी भी है, तो आप निम्न का उपयोग करके ls का उपयोग करके उन्हें प्राप्त कर सकते हैं ( यहाँ से लिया गया ):

dd if=/dev/cdrom | head -c `stat --format=%s file.iso` | md5sum

कई अन्य एक-लाइन निर्माण हैं जिन्हें काम करना चाहिए। ध्यान दें कि प्रत्येक मामले में हम ddडिस्क से बाइट्स पढ़ने के लिए उपयोग कर रहे हैं , लेकिन हम इन्हें किसी फाइल में नहीं डाल रहे हैं, बल्कि, हम उन्हें सीधे md5sum पर सौंप रहे हैं।

संभव गति सुधार कुछ गणना कर एक बड़ा ब्लॉक आकार (उपयोग करने के लिए बनाया जा सकता है bs=में ddआदेश)।


आप को आसान बनाने में कर सकते हैं dd if=/dev/cdrom |करने के लिए </dev/cdromddडिवाइस के बारे में कुछ भी जादुई नहीं है, यह एक अजीब वाक्यविन्यास के साथ सिर्फ एक धारा हेरफेर है।
गिल्स एसओ- बुराई को रोकना '

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

@Gilles: वास्तव में, का उपयोग कर ddके साथ bsडिवाइस कैश आकार का आंकड़ा अंतरण के रूप में सादे इनपुट पुनर्निर्देशन करने का विरोध किया speedup कर सकते हैं।
एलेक्स

@ गिल्स: आपका क्या मतलब है "एमडी 5 जो आंशिक रूप से टूट गया है"? और मुझे फ़ाइल का आकार क्यों रखना चाहिए, जब कुछ गलत हो तो चेकसम मुझे तुरंत बता देना चाहिए?
फुन्नेहे

@phunehehe: वहाँ रहे हैं MD5 साथ क्रिप्टोग्राफिक कमजोरियों में जाना जाता है (है न (सार्वजनिक रूप से) में जाना जाता है कैसे किसी दिए गए फ़ाइल के लिए कोई टकराव उत्पन्न करने के लिए है, लेकिन यह आ सकता है)। फ़ाइल का आकार जानने से आपको थोड़ा और अधिक विश्वास होता है (हालांकि अधिक नहीं)। यह आपको सामान्य आकस्मिक त्रुटियों जैसे कि तुच्छ डाउनलोड के लिए तत्काल प्रतिक्रिया भी देता है।
गाइल्स का SO- बुराई पर रोक '11

2

इस कार्य के लिए कार्यक्रम है। इसे कहते हैं - checkisomd5। उबंटू में इसे कमांड द्वारा इंस्टॉल किया जा सकता है:

sudo apt-get install isomd5sum

आप इसका इस्तेमाल कैसे करते हैं? checkisomd5 /dev/sr0मुझे देता है: मीडिया चेक पूरा हो गया है, परिणाम है: NA। मीडिया को सत्यापित करने में असमर्थ कोई चेकसम जानकारी उपलब्ध नहीं है।
टॉरस्टेन

चेकसम को उपकरण "इम्प्लांटिसोम 5" के साथ आईएसओ छवि में एम्बेड किया जाना चाहिए। यह करना होगा इससे पहले कि आईएसओ डिस्क पर लिखा जाएगा। उपयोगिता "checkisomd5" में शामिल है।
अक्टूबर को प्रात: 11:32

1

यदि डिस्क पर छवि का आकार 2048 तक विभाज्य है, पूरी संख्या, जो कि बहुत ही सामान्य प्रतीत होती है, तो आप एक सटीक MD5sum प्राप्त कर सकते हैं, जो इस प्रकार sr0है कि ऑप्टिकल -विच का नाम का उपयोग करके lshw -C diskकहाँ पाया जा सकता है, - और कहाँ 'गणना' 2048 द्वारा विभाजित छवि आकार का लाभांश है।

dd if=/dev/sr0 bs=2048 count=356352 |md5sum

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