คำนวณ md5sum ของ CD / DVD


18

ฉันมีไฟล์ ISO ซึ่งฉันเขียนลงซีดี ตอนนี้ฉันจะตรวจสอบได้อย่างไรว่าซีดีนั้นสร้างอย่างถูกต้องหรือไม่ ฉันต้องการคำสั่งที่คำนวณผลรวมแฮชที่ฉันสามารถใช้เพื่อตรวจสอบกับผลรวมแฮชที่ฉันคำนวณในไฟล์ ISO โดยอุดมคติแล้วคำสั่งควร:

  • ทำงานโดยไม่คำนึงถึงไฟล์ ISO: นั่นคือฉันไม่ต้องการเก็บรายการ hash sum สำหรับแต่ละไฟล์ในแผ่นดิสก์หรือจำจำนวนบล็อกใด ๆ
  • ค่อนข้างสั้น: คำสั่งหนึ่งบรรทัดนั้นยอดเยี่ยมคำสั่งที่ยาวสองบรรทัดก็โอเคสคริปต์ที่ขยายหน้าเดียวไม่ได้
  • มีประสิทธิภาพพอสมควร: ตัวอย่างเช่นddแผ่นดิสก์กลับสู่ไฟล์จากนั้นเรียกใช้md5sumบนไฟล์นั้นไม่สามารถยอมรับได้

หากไม่มีคำตอบที่ไม่สามารถตอบสนองทุกสิ่งได้ฉันจะขอบคุณการแข่งขันที่ใกล้เคียงที่สุดเช่นกัน ดียิ่งขึ้นถ้าคุณสามารถบอกฉันได้ว่าทำไมมันไม่ตรงไปตรงมา

คำตอบ:


18

ปัญหาพื้นฐานคือเราต้องการนำ md5sum ของข้อมูลเดียวกันที่แน่นอนที่อยู่ใน ISO มา แต่เดิม เมื่อคุณเขียน ISO ลงในซีดีอาจมีพื้นที่ว่างที่ส่วนท้ายของดิสก์ซึ่งเปลี่ยนแปลง md5sum อย่างหลีกเลี่ยงไม่ได้ ดังนั้นวิธีที่สั้นที่สุด:

md5sum /dev/cdrom

ไม่ได้ทำงาน สิ่งที่ไม่ทำงาน (และเป็นเรื่องธรรมดาในออนไลน์เอกสาร) md5sumเป็นเพียงการอ่านจำนวนที่แน่นอนของไบต์จากอุปกรณ์แล้วทำ หากคุณรู้จำนวนไบต์คุณสามารถทำสิ่งต่อไปนี้:

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

โดยที่ 'xxxxx' คือขนาดของ iso ในหน่วยไบต์

หากคุณไม่ทราบจำนวนไบต์ในมือ แต่ยังมี iso บนดิสก์ของคุณคุณสามารถทำให้พวกมันใช้ ls โดยทำสิ่งต่อไปนี้ ( จากที่นี่ ):

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

มีสิ่งปลูกสร้างแบบบรรทัดเดียวอื่น ๆ อีกมากมายที่ควรใช้งานได้ โปรดสังเกตว่าในแต่ละกรณีเราใช้ddเพื่ออ่านไบต์จากดิสก์ แต่เราไม่ได้ไพพ์เหล่านี้ไปยังไฟล์ แต่เรากำลังส่งให้ md5sum ทันที

การปรับปรุงความเร็วที่เป็นไปได้สามารถทำได้โดยทำการคำนวณบางอย่างเพื่อใช้ขนาดบล็อกที่ใหญ่กว่า ( bs=ในddคำสั่ง)


คุณสามารถลดความซับซ้อนของการdd if=/dev/cdrom | </dev/cdromไม่มีอะไรน่าอัศจรรย์เกี่ยวกับddและบล็อกอุปกรณ์มันเป็นเพียงคำสั่งการจัดการกระแสกับไวยากรณ์ตลก
Gilles 'หยุดความชั่วร้าย'

อย่างไรก็ตามคุณ (phunehehe) ควรมีขนาด iso ร่วมกับ MD5 checksum สิ่งนี้มีความสำคัญอย่างยิ่งสำหรับ MD5 ที่เสียบ้าง แต่ก็เป็นความคิดที่ดีสำหรับทั้งความปลอดภัยและการใช้งานไม่ว่าคุณจะใช้ checksum ใดก็ตาม
Gilles 'หยุดความชั่วร้าย'

@Gilles: จริง ๆ แล้วการใช้ddกับbsขนาดแคชของอุปกรณ์สามารถถ่ายโอนข้อมูลได้เร็วขึ้นเมื่อเทียบกับการเปลี่ยนเส้นทางอินพุตธรรมดา
alex

@Gilles: คุณหมายถึงอะไร "MD5 ซึ่งเสียบ้าง" และทำไมฉันต้องรักษาขนาดไฟล์เมื่อตรวจสอบสิ่งผิดปกติฉันควรบอกฉันทันทีหรือไม่
phunehehe

@phunehehe: มีจุดอ่อนของการเข้ารหัสที่เป็นที่รู้จักด้วย MD5 (ไม่รู้จัก (สาธารณะ) ที่รู้จักวิธีสร้างการชนกันของไฟล์ที่กำหนด แต่อาจเกิดขึ้นได้) การรู้ขนาดไฟล์จะช่วยให้คุณมั่นใจมากขึ้น (แต่ไม่มาก) นอกจากนี้ยังให้ข้อเสนอแนะสำหรับข้อผิดพลาดที่เกิดขึ้นโดยทั่วไปเช่นการดาวน์โหลดที่ถูกตัด
Gilles 'หยุดความชั่วร้าย'

2

มีโปรแกรมสำหรับงานนี้ มันเรียกว่า checkisomd5- ใน Ubuntu มันสามารถติดตั้งได้โดยคำสั่ง:

sudo apt-get install isomd5sum

คุณใช้มันอย่างไร? checkisomd5 /dev/sr0ให้ฉัน: การตรวจสอบสื่อเสร็จสมบูรณ์ผลลัพธ์คือ: NA ไม่มีข้อมูลการตรวจสอบไม่สามารถตรวจสอบสื่อ
Torsten

ควรตรวจสอบผลรวมฝังในอิมเมจ iso ด้วยเครื่องมือ "implantisomd5" จะต้องทำก่อนที่ iso จะเขียนบนดิสก์ ยูทิลิตี้ที่รวมอยู่ใน "checkisomd5"
ДенисПроскурин

1

หากขนาดของภาพบนแผ่นดิสก์หารด้วย 2048 จำนวนทั้งหมดซึ่งดูเหมือนจะเป็นเรื่องธรรมดามากคุณจะได้รับ MD5sum ที่ถูกต้องดังนี้ซึ่งsr0เป็นชื่อของออปติคัลซึ่งสามารถพบได้lshw -C diskที่ไหนและที่ไหน 'count' คือเงินปันผลของขนาดภาพหารด้วย 2048

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

ซีดีมากมีแนวโน้มการใช้งาน "โหมด 1" แทร็คซึ่งมี 2,048 ไบต์ของข้อมูลผู้ใช้ต่อภาค ("โหมด 2" เก็บข้อมูลผู้ใช้ 2,336 ไบต์ต่อเซกเตอร์ แต่ขาดความสามารถในการตรวจจับข้อผิดพลาดขั้นสูงและความสามารถในการแก้ไขที่นำเสนอโดยโหมด 1 ทำให้โหมด 2 มีประโยชน์น้อยกว่าสำหรับข้อมูลที่ไม่สามารถยอมรับข้อผิดพลาดได้)
CVn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.