사람들은 DVD 메뉴를 표시하는 VLC를 사용하여 DVD를 열면 데이터에 액세스 할 수 dd
있지만 VLC가이 기능을 수행하는 이유와 방법을 아직 아무도 설명하지 못했습니다.
SMB를 사용하여 네트워크를 통해 DVD 드라이브의 루트를 공유하여 TV에 연결된 Kodi 장치에서 컴퓨터의 DVD를 재생하려고 할 때이 동작을 복제했습니다. 그것은하지 작업을했다 하지 않는 한 나는 첫 번째 점 KODI가 마술 파일을 재생할 수있는 VLC와 DVD를 열었다.
이런 종류의 마술은 내 감성을 상하게하기 때문에 파고 갔다. 문제의 근본 원인은 DVD 드라이브가 사용자를 상대로 작동하기 때문 입니다. 당 위키 백과 :
그러나 드라이브에서 CSS로 컴파일 된 디스크를 감지하면 저작권으로 표시된 논리 블록에 대한 액세스가 거부됩니다 (§6.15.3 [2]). 플레이어는 먼저 인증 핸드 셰이크를 실행해야합니다 (§4.10.2.2 [2]).
따라서 DVD를 읽을 경우 재생할 수없는 암호화 된 데이터를 얻는 것이 아닙니다. 시스템의 일부 프로그램이 Linux 커널에 의해 노출 된 일부 DVD 관련 IOCTL (이 경우 DVD_AUTH )을 사용하여 드라이브에 자체 인증되지 않으면 드라이브는 비트를 다시 보내지 않습니다 . 이것이 I / O 오류로 나타나는 이유입니다.
이 IOCTL의 작동 방식에 대한 자세한 정보는 이 메일 링리스트 게시물을 통해 구현 한 사람으로부터 얻을 수 있지만 기본적으로 사용자 소프트웨어가 DVD 드라이브 하드웨어와의 비밀 핸드 셰이크를 수행 할 수있는 방법을 제공합니다.
VLC 통해이 비밀 악수를 수행 libdvdcss
차례에 할 것, GetBusKey()
에서를css.c
. 아마도 libdvdcss
모든 VLC에 의존하는 대신 파일로 액세스하기 위해 드라이브의 잠금을 해제하기 위해 링크 된 독립형 프로그램을 작성할 수 있습니다. 이 잠금 해제 된 일단을 포함, 모든 사람에게 (아직 암호화하지만 지금은 읽을 수) 비트를 다시 보내도록 드라이브는 프로그램이 읽는되는 말할 수 없다 dd
나 cp
.
(흥미롭게도 DVD IOCTL은 디스크의 데이터를 읽은 후에 해독 키를 사용하는 유일한 방법입니다. 복사 한 파일 디렉토리를 재생하는 경우 액세스 할 수 없습니다. 키를 얻기 위해 IOCTLs, 그래서 libdvdcss
암호화를 해독하기 위해 통계적 cryptanalysis에 의지합니다 .)