ddでDVDをコピーできないのはなぜですか?


12

私はdd、dd_rescueddrescueを試しましたが、すべて失敗しました。これらのツールはファイルシステムをバイパスし、ビットごとのコピーを作成すると思いました。

ddはだまされて終了しますが、小さなファイルが生成され、終了したと表示されます。

dd_rescuseとddrescueは読み取りエラーについて不平を言っており、許容できないほど遅いです。これらのツールは、10分で数MBしかコピーできません。

なぜこれが起こっているのですか、なぜこれらのツールは失敗していますか?


AnyDVDは、Win7ホスト上でディスクを1秒でコピー可能にします。不思議なことに、UDFファイルシステムにはパッチが適用されており、不良セクターがないことも示されています。ディスク全体を10分でコピーできます。
更新:解決策については、スーパーユーザーに関する私の同様の質問を参照してください。

回答:


16

最も簡単な答えは、dd、dd_rescue、およびddrescueはコピー防止スキームを無効にするように設計されていないということです。彼らはデータのフォーマットについて何の仮定も行わず、ディスク上のオリジナルのデータ全体の整合性を維持しようとします。

以下の場合はddIそれがコピー保護スキームの一部であるディスク上の意図的な読み取りエラーのために終了していると思われます。dd質問にからのコマンドライン出力を含めた場合、これを確認すると役立ちます。dmesgコマンド出力に記録されたいくつかの読み取りエラーを見つけることもできます。

あなたは得ることができますdd渡すことによって、ファイルの多くをコピーするために、noerrorコマンドライン上でそれにフラグを。ただし、これにより、最終的なイメージが破損する場合があります。


ありがとう、賛成。ファイルシステムをバイパスして「ビット単位の」コピーを実行し、読み取りエラーをゼロバイトに置き換えた場合でも、イメージが破損しますか?結局のところ、私はそのデータを、どうしても読み取れないゼロバイトに置き換えるだけです。後でdmesg出力を含めます。DVDを持っていません。
アリ

実際に、最終的な画像が「破損」しているかどうかを判断する唯一の方法は、使用できるかどうかを調べることです。その一部は、実際に壊れたブロックのみがゼロとして読み取られ、周囲のブロックは読み取られないことを確認します。これは、bs = 512(CD / DVDブロックサイズであるメモリから)パラメータをddに渡す必要があることを意味する場合があります。本当にそのようなことはdd_rescueが行うように設計されていることです。時間はかかるかもしれませんが、可能な最小量のデータを失おうとします。
Richm

わかりました、あなたのすべての助けに感謝します。私はあまりにも多くのレベルでねじ込まれています。AnyDVDを使用してしまいました。
Ali

15

VLCでDVDを開くと(DVDメニューが表示されます)、魔法のようにデータにアクセスできるようになると人々は言っていますが、ddその理由とVLCがこの偉業を達成する方法についてはまだ誰も説明していません。

SMBを使用してネットワーク経由でDVDドライブのルートを共有することにより、テレビに接続されたKodiデバイスからコンピューターでDVDを再生しようとしたときに、この動作を再現できました。最初にVLCでDVDを開いた場合除いて、それは機能しませんでした。その時点で、Kodiは魔法のようにファイルを再生できました。

このような魔法は私の感性を害するので、掘りに行きました。問題の根本的な原因はあなたのDVDドライブがあなたに対して働いていることです。あたりとしてウィキペディア

ただし、ドライブがCSSでコンパイルされたディスクを検出すると、著作権で保護されているとマークされている論理ブロックへのアクセスを拒否します(§6.15.3[2])。プレイヤーは最初に認証ハンドシェイクを実行する必要があります(§4.10.2.2[2])。

したがって、DVDを読み取った場合に再生できない暗号化されたデータを取得するだけではありません。Linuxカーネル(この場合はDVD_AUTH)によって公開されたDVD固有のIOCTLを使用して、マシン上のプログラムがドライブに対して自身を認証しない限り、ドライブはビットを送り返しません。これがI / Oエラーとして現れる理由です。

これらのIOCTLがどのように機能するかについての詳細は、それらを実装した人からのこのメーリングリストの投稿で入手できますが、基本的には、ユーザーランドソフトウェアがDVDドライブハードウェアと秘密のハンドシェイクを実行する方法を提供します。

VLCはを通してこの秘密の握手実行libdvdcss順番にでそれを行うように見える、GetBusKey()でをcss.c。おそらく、リンクされたスタンドアロンプ​​ログラムlibdvdcssは、VLCのすべてに依存する代わりに、ファイルとしてアクセスするためにドライブのロックを解除するように書かれる可能性があります。ロックが解除されると、ドライブはどのプログラムが読み取りを行っているかを認識できなくなります。そのため、(まだ暗号化されていますが、現在は読み取り可能)ビットを、ddまたはを含むすべてのユーザーに送り返しcpます。

(興味深いことに、DVD IOCTLは、ディスク上のデータを復号化するために使用される復号化キーを取得する唯一の実際の方法でもあります。ファイルのコピーされたディレクトリを再生している場合、アクセスできません。キーを取得するためにIOCTLを使用するため、libdvdcss統計的解読を使用して暗号を解読します


ありがとう。VLCでDVDを開けません。残念ながら、私の状況ははるかに複雑でした。それでもあなたの答えに賛成した。
アリ

これも私にはうまくいったようです。vlc後で開いたときにすべてのISOが正しくDVDメニューを表示するわけではありませんが(メジャーではありませんが、これはディスクのバックアップとしてのみ実行し、コンテンツを失わないことがここで重要です)。のようなツール、makemkvまたはhandbrakeと同じ効果があると思われvlcます。余談ですが、これはvlcWindows上でdd実行し、Linux VM内から実行するのに役立ちました。
LRE 2019

素晴らしい説明!よろしくお願いします。それがすべてを説明しています。私は同じパズルを持っていましたが、どのWikipediaの記事をチェックアウトすべきか理解できませんでした。
Shi B.

1
コマンドラインからDVDのロックを解除できるcssauthプログラムもあります。基本的にはタイプするだけですtestdvd /dev/dvd
Antonis Christofides

14

なぜこれが機能するのかはわかりませんが、メニューを表示するのに十分なだけVLCでDVDを最初に開いてから、一時停止するとddが機能します。


ありがとう。VLCでDVDを開けません。残念ながら、私の状況ははるかに複雑でした。
アリ

このコメントの時に私のために働いたが、私はトーテム(vlcを持っていない)で開きました。変だ。
カイル

2

VLCでディスクを開くと保護がバイパスされることを確認できます。ただし、を使用する場合はdd、VLCを開いた後にこのコマンドを使用する必要がありました(ディスクをロードし、VLCで公開されているディレクトリを使用して検出されました)。

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

これは、このコマンドが機能するはずだと私が読んだ多くの投稿とは異なります。

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

証明:

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

VLCでDVDを開くと(DVDメニューが表示されます)、魔法のようにデータにddからアクセスできるようになると言われていますが、それがなぜであり、どのようにVLCがこの偉業を成し遂げるのかはまだ誰も説明していません。

私も「VLCが最初のオープンDVD」を体験しました。したがって、スクリプトでddを使用するときは、次のシーケンスを使用します。

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

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

2
正確には何を言っているのですか?なぜ「誰もそれがなぜ、どのように説明されていないのですか?」答えない場合は質問?なぜddコマンドをバッククォートで表示するのですか?…………………………………………………コメントに返信しないでください。 回答を編集して、より明確で完全なものにします。
G-Manは 'Reinstate Monica'を

@ G-ManSays'ReinstateMonica '基本的に、コマンドラインvlcを使用してGUIなしで実行することを提案した答え。数値は少し恣意的ですが、これは良い代替オプションです。
Shi B.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.