Bagaimana cara memverifikasi CD terhadap image ISO?

10

Saya punya CD fisik terbakar dan gambar ISO asli itu. Tidak ada file checksum referensi yang disediakan untuk konten CD. Bagaimana cara memeriksa CD yang sebenarnya sudah benar (sesuai dengan gambar asli) dan sepenuhnya dapat dibaca?

Ivan
sumber
Apakah Anda bermaksud memeriksa data pada CD setelah dibakar? Karena sebagian besar perangkat lunak pembakar memiliki opsi untuk memeriksa data tertulis (ex Nero).
Silviu
Saya tahu tetapi saya perlu melakukan pemeriksaan tidak tepat setelah prosedur pembakaran tetapi setelah beberapa waktu (setelah program pembakaran sudah ditutup), bahkan mungkin pada PC yang berbeda. Sejauh yang saya tahu Nero tidak menawarkan untuk memulai prosedur verifikasi terlepas dari prosedur pembakaran - fasilitas verifikasi itu hanya tambahan untuk pembakaran dan dapat terjadi hanya setelah pembakaran. Yang saya inginkan adalah memasukkan CD, memilih file ISO dan klik untuk memverifikasi ... Kendala lain adalah bahwa saya tidak ingin melakukan ini di Linux karena saya menduga driver Windows CD / IDE saya tidak ok.
Ivan
Itu sangat sulit, apakah Anda membakar CD bootable atau data murni?
Daisy
CD bootable ..
Ivan
FYI, beberapa ISO Linux memiliki opsi boot bawaan untuk memverifikasi isinya. Anda dapat menggunakan opsi itu dan itu akan memeriksa semua file disk terhadap file yang berisi checksum. Anda juga dapat menjalankan md5sumsendiri dan membandingkan, jika Anda tidak ingin mem-boot CD / DVD.
Skylar Ittner

Jawaban:

5

Pertama, Anda menyalin CD Anda ke file sementara:

dd if=/dev/sr0 of=copy.iso

Kemudian Anda memeriksa apakah copy.isodan orig.isomemiliki ukuran yang sama, misalnya dengan:

stat -c '%s %n' orig.iso copy.iso

Jika ukurannya identik, mudah:

sha1sum orig.iso copy.iso

Tetapi saya perhatikan bahwa dalam kasus-kasus tertentu ukurannya bisa sedikit berbeda karena ada trailing nol di salah satu salinan atau gambar asli. Misalnya, jika copy.isolebih kecil dari orig.iso:

sha1sum copy.iso
head -c $(stat -c %s copy.iso) orig.iso | sha1sum

Tentu saja Anda juga harus memeriksa bahwa byte yang tertinggal hanya nol:

od -j $(stat -c %s copy.iso) orig.iso

Baris pertama, kecuali untuk offset, harus nol saja. Baris kedua harus berupa tanda bintang. Tanda bintang adalah untuk menghindari menampilkan garis identik yang berurutan.

Francesco Turco
sumber
+1 untuk checksum. Ini biasanya merupakan standar de facto untuk membandingkan file (atau direktori) dan tidak peduli mengetahui perbedaan (seperti halnya dengan diff): lebih minimal.
nikitautiu
atau Anda dapat melakukannya head -c $(stat -c %s /path/to/master.iso) /dev/sr0 | sha1sumuntuk menghindari membuat gambar dari CD yang dibakar.
Hitechcomputergeek
4

Jika file ISO adalah sama dengan yang digunakan untuk membakar CD, maka inilah dua favorit saya:

diff /dev/sr0 /tmp/file.iso

Membandingkan gambar yang direkam dengan file gambar. Jika Anda merasa sedikit lebih masokis, Anda dapat mencoba sesuatu seperti ini:

sha1sum /dev/sr0 /tmp/file.iso

dan bandingkan tanda tangan. Yang ini lebih berguna jika Anda sudah memiliki jumlah SHA1 di suatu tempat. Kedua perintah akan membaca medium hingga akhir.

Jika Anda ingin melakukannya dengan cara yang disarankan @ Marki555, Anda harus memasang drive optik dan gambar terlebih dahulu. Berikut ini skrip yang lengkap: (Anda dapat, tentu saja, membuang sudojika Anda root - ide yang buruk, secara umum)

sudo mkdir /tmp/{a,b}
sudo mount /dev/sr0 /tmp/a -o ro # or whatever
sudo mount /tmp/file.iso /tmp/b -o loop,ro
diff -dur /tmp/{a,b}
sudo umount /tmp/a
sudo umount /tmp/b
sudo rmdir /tmp/{a,b}
Alexios
sumber
3
cmp [-l]lebih cocok untuk file biner. Diff bekerja paling baik pada teks.
derobert
3

Jika Anda masih memiliki ISO, Anda dapat membandingkannya menggunakan byte demi byte cmp. Ini adalah perintah yang cukup sederhana dan keluar pada perbedaan pertama yang ditemukan, jadi itu jauh lebih cepat daripada membuat checksum jika sebenarnya ada kesalahan sejak awal.

cmp /dev/cdrom /path/cdrom.iso

Kemungkinan hasil keberhasilan:

  • tidak ada output: identik dan semuanya OK. Anda dapat menambahkan && echo OKperintah jika kekurangan output membingungkan Anda.
  • cmp: EOF on cdrom.iso: itu identik tetapi cdrom memiliki lebih banyak byte daripada file iso Anda. Ini biasanya karena bantalan nol pada akhir cdrom. Karena itu tidak masalah dalam praktek, itu masih sukses.

Kemungkinan hasil kegagalan:

  • cmp: EOF on /dev/cdrom: karena alasan tertentu data pada CDROM Anda tidak lengkap. Mungkin ISO Anda terlalu besar untuk memuat CD yang asli.
  • /dev/cdrom cdrom.iso differ: byte 18296321, line 71780: ada beberapa perbedaan tak terduga antara CDROM Anda dan gambar ISO Anda.
frostschutz
sumber
sementara laporan diff 'berbeda', metode cmp Anda mengagumkan!
qrtLs
2

Anda dapat memeriksa bahwa CD sepenuhnya dapat dibaca dengan menggunakan dd(misalnya dd if=/dev/cdrom of=/dev/null). Tetapi Anda tidak dapat membandingkannya langsung dengan gambar ISO. Setiap perangkat lunak akan membuat file ISO yang sedikit berbeda (mungkin beberapa header yang berbeda, atau padding), meskipun gambar ISO yang berbeda ini semua akan memberikan konten CD yang sama (struktur direktori, atribut file dan konten file).

Jadi Anda hanya dapat me-mount CD, me-mount gambar ISO dan membandingkannya di tingkat filesystem dengan menggunakan beberapa jenis alat perbandingan direktori (maaf, saya belum menggunakan linux).

Marki555
sumber
diff -rakan membandingkan konten direktori secara rekursif.
Kevin
5
Karena cd dibakar dari gambar iso yang sudah disiapkan, tidak ada yang dibuat berbeda saat membakar, sehingga Anda dapat langsung membandingkan cd dengan gambar iso.
psusi
-1

Brasero dapat melakukannya: Alat -> Periksa integritas ...

damian101
sumber