Tại sao tôi không thể sao chép DVD bằng dd?


12

Tôi đã thử dd, dd_resTHERddresTHER , tất cả đều thất bại. Tôi nghĩ rằng các công cụ này bỏ qua hệ thống tập tin và tạo một bản sao bitwise.

dd bị lừa, nó kết thúc nhưng chỉ tạo ra một tệp nhỏ và nói rằng nó đã hoàn thành.

dd_rescuse và ddresTHER đang phàn nàn về lỗi đọc và chậm không thể chịu đựng được. Các công cụ này chỉ có thể sao chép một vài MB trong 10 phút.

Tại sao điều này xảy ra, tại sao các công cụ này thất bại?


AnyDVD làm cho đĩa có thể sao chép trong một giây trên máy chủ Win7. Nó nói rằng hệ thống tập tin UDF đã được vá, thật tò mò, nó cũng nói rằng không có các thành phần xấu. Toàn bộ đĩa có thể được sao chép trong 10 phút.
CẬP NHẬT: Về giải pháp, hãy xem câu hỏi tương tự của tôi về superuser .

Câu trả lời:


16

Tôi nghĩ rằng câu trả lời đơn giản nhất là dd, dd_resTHER và ddresTHER không được thiết kế để đánh bại các kế hoạch bảo vệ bản sao. Họ không đưa ra giả định nào về định dạng của dữ liệu và cố gắng duy trì tính toàn vẹn của toàn bộ dữ liệu gốc trên dữ liệu đĩa.

Trong trường hợp ddtôi nghi ngờ rằng nó bị chấm dứt do lỗi đọc cố ý trên đĩa là một phần của sơ đồ bảo vệ bản sao. Nó sẽ giúp xác nhận điều này nếu bạn bao gồm đầu ra dòng lệnh từ ddcâu hỏi của bạn. Bạn cũng có thể tìm thấy một số lỗi đọc được ghi lại trong dmesgđầu ra lệnh.

Bạn có thể ddsao chép nhiều tập tin hơn bằng cách chuyển noerrorcờ cho nó trên dòng lệnh. Tuy nhiên, bạn có thể thấy rằng điều này chỉ khiến bạn bị hỏng trong hình ảnh cuối cùng của bạn.


Cảm ơn, nâng cao. Nếu tôi bỏ qua hệ thống tập tin và thực hiện sao chép "bitwise" và thay thế các lỗi đọc bằng byte bằng 0, liệu điều đó có còn mang lại hình ảnh bị hỏng không? Sau tất cả, tôi chỉ thay thế dữ liệu đó bằng byte không thể đọc được. Tôi sẽ bao gồm đầu ra dmesg sau, tôi không có DVD bên mình.
Ali

Thực sự cách duy nhất để xác định xem hình ảnh cuối cùng có bị "hỏng" hay không là tìm ra nếu nó có thể sử dụng được. Một phần trong đó sẽ đảm bảo rằng chỉ các khối bị hỏng thực tế được đọc là số không và không có khối nào xung quanh. Điều đó có thể có nghĩa là bạn cần truyền tham số bs = 512 (từ bộ nhớ là tham số khối CD / DVD) cho dd. Thực sự mặc dù đó là điều mà dd_resTHER được thiết kế để làm. Nó có thể mất thời gian nhưng nó cố gắng để mất lượng dữ liệu tối thiểu có thể.
Richm

OK, cảm ơn vì tất cả sự giúp đỡ của bạn. Tôi bị lừa trên đường quá nhiều cấp độ. Tôi đã kết thúc bằng AnyDVD.
Ali

15

Mọi người đề cập đến việc mở DVD bằng VLC (hiển thị menu DVD) một cách kỳ diệu làm cho dữ liệu có thể truy cập được dd, nhưng chưa ai giải thích được tại sao đó là cách và VLC hoàn thành kỳ tích này.

Tôi đã quản lý để sao chép hành vi này khi cố gắng phát DVD trong máy tính của mình từ thiết bị Kodi được nối với TV của tôi, bằng cách sử dụng SMB để chia sẻ thư mục gốc của ổ đĩa DVD qua mạng. Nó không hoạt động, trừ khi lần đầu tiên tôi mở DVD bằng VLC, lúc đó Kodi có thể phát các tệp một cách kỳ diệu.

Loại phép thuật này xúc phạm sự nhạy cảm của tôi, vì vậy tôi đã đi đào. Nguyên nhân cơ bản của vấn đề là ổ đĩa DVD của bạn đang hoạt động chống lại bạn . Theo Wikipedia :

Tuy nhiên, nếu ổ đĩa phát hiện đĩa đã được biên dịch bằng CSS, nó sẽ từ chối quyền truy cập vào các khối logic được đánh dấu là có bản quyền (§6.15.3 [2]). Người chơi phải thực hiện bắt tay xác thực trước (§4.10.2.2 [2]).

Vì vậy, không chỉ là bạn sẽ nhận được dữ liệu được mã hóa không thể phát nếu bạn đọc DVD; ổ đĩa sẽ không gửi lại các bit trừ khi một số chương trình trên máy của bạn đã tự xác thực vào ổ đĩa, sử dụng một số IOCTL dành riêng cho DVD được trình bày bởi nhân Linux (trong trường hợp này là DVD_AUTH ). Đó là lý do tại sao điều này biểu hiện như một lỗi I / O.

Thông tin thêm về cách thức hoạt động của các IOCTL này trong bài đăng danh sách gửi thư này từ người đã triển khai chúng , nhưng về cơ bản, chúng cung cấp một cách để phần mềm người dùng thực hiện bắt tay bí mật với phần cứng ổ đĩa DVD.

VLC thực hiện cái bắt tay bí mật này libdvdcss, qua đó dường như thực hiện nó GetBusKey()trongcss.c . Có lẽ một chương trình độc lập được liên kết với libdvdcsscó thể được viết để mở khóa ổ đĩa để truy cập dưới dạng tệp, thay vì dựa vào tất cả VLC. Khi đã được mở khóa, ổ đĩa không thể biết chương trình nào đang đọc từ đó, vì vậy nó sẽ gửi lại các bit (vẫn được mã hóa nhưng hiện có thể đọc được) cho bất kỳ ai, kể cả ddhoặc cp.

(Thật thú vị, các IOCTL DVD cũng là cách thực sự duy nhất để lấy khóa giải mã được sử dụng để giải mã dữ liệu trên đĩa, một khi bạn đã đọc nó. Nếu bạn đang chơi một thư mục sao chép các tệp, bạn không có quyền truy cập vào các IOCTL để lấy các khóa, do đó libdvdcssphải dùng đến tiền mã hóa thống kê để bẻ khóa mã hóa .)


Cảm ơn. DVD của tôi không thể mở được bằng VLC; Thật không may, tình hình của tôi phức tạp hơn nhiều. Nâng cao câu trả lời của bạn tuy nhiên.
Ali

Điều này dường như đã làm việc cho tôi quá. Mặc dù không phải tất cả các isos của tôi đều hiển thị chính xác menu dvd khi được mở vlcsau đó (không phải là chính - tôi chỉ làm điều này như một bản sao lưu cho đĩa của mình và không làm mất nội dung là điều quan trọng với tôi ở đây). Tôi nghi ngờ các công cụ như makemkvhoặc handbrakecũng có thể có tác dụng tương tự vlc. Bên cạnh đó, điều này hiệu quả với tôi khi vlcchạy trên Windows với ddchạy từ bên trong máy ảo Linux.
LRE

Giải thích tuyệt vời! Cảm ơn bạn đã can thiệp. Điều đó giải thích mọi thứ. Tôi có câu đố tương tự nhưng không tập luyện bài viết Wikipedia nào để kiểm tra.
Shi B.

1
Ngoài ra còn có một chương trình, cssauth , có thể mở khóa DVD từ dòng lệnh. Về cơ bản bạn gõ testdvd /dev/dvdvà đó là nó.
Antonis Christofides

14

Tôi không chắc tại sao điều này hoạt động nhưng trước tiên mở DVD bằng VLC, chỉ đủ để xem menu, sau đó tạm dừng cho phép dd hoạt động.


Cảm ơn. DVD của tôi không thể mở được bằng VLC; Thật không may, tình hình của tôi phức tạp hơn nhiều.
Ali

Làm việc cho tôi tại thời điểm nhận xét này, nhưng tôi đã mở bằng totem (không có vlc). Kỳ dị.
Kyle

2

Tôi có thể xác nhận rằng việc mở đĩa bằng VLC sẽ bỏ qua việc bảo vệ. Tuy nhiên, khi sử dụng dd, tôi phải sử dụng lệnh này sau khi mở VLC (được phát hiện bằng cách tải đĩa và sử dụng thư mục được hiển thị trong VLC).

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

Điều này khác với nhiều bài viết tôi đã đọc nói rằng lệnh này sẽ hoạt động:

dd if=/dev/cdrom of=image_of_disc.iso - NON-WORKING

bằng chứng:

me@me:~$ dd if=/dev/cdrom of=/media/me/image_of_disc.iso
dd: error reading ‘/dev/cdrom’: Input/output error
103336+0 records in
103336+0 records out
52908032 bytes (53 MB) copied, 2.04212 s, 25.9 MB/s

me@me:~$ dd if=/dev/sr0 of=/media/me/image_of_disc.iso
dd: error reading ‘/dev/sr0’: Input/output error
2846992+0 records in
2846992+0 records out
1457659904 bytes (1.5 GB) copied, 314.351 s, 4.6 MB/s
me@me:~$ 

0

Tôi có thể giới thiệu một chương trình gọi là dvdbackup

Tôi có thể tạo một bản sao dự phòng của DVD dưới dạng các thư mục. Tôi không nghĩ rằng nó tạo ra một iso. Vì vậy, bạn cần phải thực hiện bước đó bằng tay.


0

Mọi người đề cập đến việc mở DVD bằng VLC (hiển thị menu DVD) một cách kỳ diệu làm cho dữ liệu có thể truy cập được vào dd, nhưng chưa ai giải thích được tại sao đó là cách và VLC hoàn thành kỳ tích này.

Tôi cũng đã trải nghiệm 'DVD mở với VLC'. Vì vậy, khi sử dụng dd trong tập lệnh của tôi, tôi sử dụng trình tự này:

cvlc --run-time 6 --start-time 16 /dev/sr0 vlc://quit 

`dd if=/dev/sr0 of=/home/user/Videos/name.iso`

2
Chính xác thì bạn đang nói gì? Tại sao bạn lại trích dẫn những người chưa có ai giải thích tại sao lại như vậy và làm thế nào? Câu hỏi nếu bạn không trả lời nó? Tại sao bạn hiển thị ddlệnh của bạn trong backticks? Rất khó khăn khi bạn không trả lời bình luận; chỉnh sửa  câu trả lời của bạn để làm cho nó rõ ràng và đầy đủ hơn.
G-Man nói 'Phục hồi Monica'

@ G-ManSays'ReinstateMonica 'về cơ bản là câu trả lời được đề xuất sử dụng dòng lệnh vlc để chạy mà không cần GUI, bắt đầu từ video ở 16 giây và phát trong 6 giây và khá vlc sau đó. Các con số là một chút tùy ý, nhưng nó là một lựa chọn thay thế tốt.
Shi B.
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.