As pessoas mencionam que abrir o DVD com o VLC (que exibe o menu do DVD) torna magicamente os dados acessíveis dd
, mas ninguém ainda explicou por que isso acontece e como o VLC realiza esse feito.
Consegui replicar esse comportamento ao tentar reproduzir um DVD no meu computador a partir de um dispositivo Kodi conectado à minha TV, usando o SMB para compartilhar a raiz da unidade de DVD pela rede. Não funcionou, a menos que eu abrisse o DVD com o VLC, quando o Kodi poderia reproduzir magicamente os arquivos.
Esse tipo de magia ofende minhas sensibilidades, então fui cavando. A causa subjacente do problema é que sua unidade de DVD está funcionando contra você . Conforme Wikipedia :
No entanto, se a unidade detectar um disco que foi compilado com CSS, negará acesso aos blocos lógicos marcados como protegidos por direitos autorais (§6.15.3 [2]). O jogador deve executar um handshake de autenticação primeiro (§4.10.2.2 [2]).
Portanto, não é apenas o fato de você obter dados criptografados que não podem ser reproduzidos se você ler o DVD; a unidade não enviará de volta os bits, a menos que algum programa em sua máquina se autentique na unidade, usando alguns IOCTLs específicos de DVD expostos pelo kernel do Linux (neste caso, DVD_AUTH ). É por isso que isso se manifesta como um erro de E / S.
Mais informações sobre como esses IOCTLs funcionam estão disponíveis nesta publicação da pessoa que os implementou , mas basicamente elas fornecem uma maneira de o software da terra do usuário executar o handshake secreto com o hardware da unidade de DVD.
VLC realiza este aperto de mão secreto, através libdvdcss
, por sua vez, parece fazê-lo no GetBusKey()
nocss.c
. Presumivelmente, um programa autônomo vinculado libdvdcss
poderia ser gravado para desbloquear a unidade para acessar como arquivos, em vez de depender de todo o VLC. Uma vez desbloqueado, a unidade não pode dizer qual programa está lendo, e envia os bits (ainda criptografados, mas agora legíveis) para qualquer pessoa, incluindo dd
ou cp
.
(Curiosamente, os IOCTLs do DVD também são a única maneira real de obter a chave de descriptografia usada para descriptografar os dados no disco, depois de lê-los. Se você estiver reproduzindo um diretório copiado de arquivos, não terá acesso a os IOCTLs para obter as chaves, então libdvdcss
recorre à análise criptográfica estatística para quebrar a criptografia .)