Tính md5sum của CD / DVD


18

Tôi có một tập tin ISO, mà tôi đã ghi vào đĩa CD. Bây giờ làm thế nào tôi có thể kiểm tra nếu CD được tạo chính xác? Tôi muốn một lệnh tính tổng băm mà tôi có thể sử dụng để kiểm tra với tổng băm tôi tính trên tệp ISO. Lý tưởng nhất là lệnh nên:

  • Hoạt động bất kể tệp ISO: nghĩa là tôi không muốn giữ một danh sách tổng băm cho mỗi tệp trong đĩa hoặc ghi nhớ số lượng khối bất cứ thứ gì
  • Tương đối ngắn: một lệnh một dòng là tuyệt vời, một chuỗi các lệnh dài hai dòng là OK, một kịch bản kéo dài một trang thì không
  • Khá hiệu quả: ví dụ, ddđĩa quay lại tệp sau đó chạy md5sumtrên tệp không được chấp nhận

Nếu không có câu trả lời nào không thể thỏa mãn tất cả, tôi cũng sẽ đánh giá cao trận đấu gần nhất. Thậm chí tốt hơn nếu bạn có thể cho tôi biết tại sao nó không đơn giản như vậy.

Câu trả lời:


18

Vấn đề cơ bản là chúng tôi muốn lấy md5sum thông tin chính xác giống như trên ISO ban đầu. Khi bạn ghi ISO vào đĩa CD, có khả năng có khoảng trống ở cuối đĩa, điều này chắc chắn sẽ thay đổi md5sum. Do đó, cách ngắn nhất:

md5sum /dev/cdrom

không hoạt động . Những gì không hoạt động (và phổ biến trong tài liệu trực tuyến ) chỉ đọc số byte chính xác từ thiết bị và sau đó thực hiện md5sum. Nếu bạn biết số byte bạn có thể làm một cái gì đó như:

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

trong đó 'xxxxx' là kích thước của iso tính bằng byte.

Nếu bạn không biết số byte trong tay, nhưng vẫn còn iso trên đĩa, bạn có thể lấy chúng bằng cách sử dụng ls bằng cách thực hiện một số thứ như sau ( lấy từ đây ):

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

Có nhiều công trình một dòng khác nên hoạt động. Lưu ý rằng trong mỗi trường hợp, chúng tôi đang sử dụng ddđể đọc các byte từ đĩa, nhưng chúng tôi không đưa các tệp này vào một tệp, thay vào đó, chúng tôi sẽ chuyển chúng đến md5sum ngay lập tức.

Cải thiện tốc độ có thể có thể được thực hiện bằng cách thực hiện một số tính toán để sử dụng kích thước khối lớn hơn ( bs=trong ddlệnh).


Bạn có thể đơn giản hóa dd if=/dev/cdrom |để </dev/cdrom. Không có gì kỳ diệu về ddvà chặn các thiết bị, nó chỉ là một lệnh thao tác luồng với một cú pháp vui nhộn.
Gilles 'SO- ngừng trở nên xấu xa'

Nhân tiện, bạn (phunehehe) nên có kích thước iso cùng với tổng kiểm tra MD5. Điều này đặc biệt quan trọng đối với MD5 đã bị hỏng một phần, nhưng đó là một ý tưởng tốt cho cả bảo mật và khả năng sử dụng cho dù bạn sử dụng tổng kiểm tra nào.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles: thực sự, sử dụng ddvới bskích thước bộ đệm của thiết bị có thể tăng tốc độ truyền dữ liệu trái ngược với chuyển hướng đầu vào đơn giản.
alex

@Gilles: ý của bạn là "MD5 bị hỏng một phần" là gì? Và tại sao tôi phải giữ kích thước tệp, khi có gì sai, tổng kiểm tra sẽ cho tôi biết ngay lập tức?
phunehehe

@phunehehe: Có những điểm yếu về mật mã đã biết với MD5 (không phải (công khai) đã biết cách tạo xung đột cho một tệp nhất định, nhưng nó có thể đến). Biết kích thước tập tin giúp bạn tự tin hơn một chút (mặc dù không nhiều hơn). Nó cũng cung cấp cho bạn thông tin phản hồi ngay lập tức cho các lỗi vô ý phổ biến như tải xuống bị cắt ngắn.
Gilles 'SO- ngừng trở nên xấu xa'

2

Có chương trình cho nhiệm vụ này. Nó được gọi là - checkisomd5. Trong Ubuntu, nó có thể được cài đặt bằng lệnh:

sudo apt-get cài đặt isomd5sum

Làm thế nào để bạn sử dụng nó? checkisomd5 /dev/sr0đưa cho tôi: Việc kiểm tra phương tiện đã hoàn tất, kết quả là: NA. Không có thông tin tổng kiểm tra có sẵn, không thể xác minh phương tiện truyền thông.
Torves

Tổng kiểm tra nên được nhúng trong hình ảnh iso với công cụ "implantisomd5". Nó phải được thực hiện trước khi iso sẽ được ghi trên đĩa. Tiện ích có trong "checkisomd5".
Đăng ký

1

Nếu kích thước của hình ảnh trên đĩa chia hết cho năm 2048, toàn bộ số, dường như rất phổ biến, thì bạn có thể nhận được MD5sum chính xác như sau, nơi sr0có thể tìm thấy tên của quang học bằng cách sử dụng, lshw -C diskvà ở đâu 'Count' là cổ tức của kích thước hình ảnh chia cho năm 2048.

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

Nhiều đĩa CD có thể sử dụng các bản nhạc "Chế độ 1", có 2.048 byte dữ liệu người dùng cho mỗi khu vực . ( "Chế độ 2" cửa hàng 2336 byte của dữ liệu người dùng cho mỗi lĩnh vực, nhưng lại thiếu sự dò và sửa lỗi tính năng tiên tiến hơn được cung cấp bởi Chế độ 1, gây Chế độ 2 được ít hữu ích cho dữ liệu mà lỗi không thể được dung thứ.)
một CVN
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.