Před tím, než se ponoříme do problematiky přehrávání DVD disků na Linuxu, bylo by asi záhodno osvěžit si v paměti (případně do ní injektovat) některá data:
- září 1996, publikována první specifikace DVD
- říjen 1996, schváleno schéma šifrování CSS (Content Scrambling System)
- listopad 1996, prodej prvních DVD přehrávačů v Japonsku
- březen 1997, prodej prvních DVD přehrávačů v USA
- říjen 1998, prodej prvních DVD přehrávačů v Evropě
- říjen 1998, prezident Clinton podepisuje Digital Millenium Copyright Act
- říjen 1999, prolomeno šifrování CSS
Většina DVD disků je chráněna proti možnému zneužití (okopírování) systémem CSS (Content Scrambling System), který má znemožnit přehrávání digitálního videa bez patřičného dekodéru. Na DVD disku jsou v šifrované formě uloženy dva softwarové klíče, tzv. disc-key a title-key (druhý zmiňovaný by se navíc měl lišit i u jednotlivých souborů s videem (*.VOB), nicméně praxe bývá odlišná). Při přehrávání DVD se disk nejprve „otevře“ dotazem na disc-key a potom se stejnou metodou vytvoří zabezpečený datový tok domluvou s jednotlivými title-key. V hardwarových přehrávačích provádí rozšifrovávání klíčů nějaká černá skříňka, při přehrávání na počítači nahrazuje její činnost přehrávací program. Vzhledem k jakési parafrázi „security through obscurity“ mají k algoritmu CSS přístup pouze společnosti vyrábějící hardware či software pro přehrávání DVD. Restriktivní politika výrobců software, kteří projektovali své přehrávače takřka výhradně pro platformu Microsoft Windows, vyústila až v události října roku 1999.
Vítězný říjen
Na podzim roku 1999 rozlomil šifru CSS šestnáctiletý norský student Jon Johansen. Tvrdí (se), že reverse engineeroval windowsovský přehrávač Xing – ale jak to bylo doopravdy, se asi nikdy nikdo nedozví, jeho výpověď na toto téma před soudem je velmi zajímavá a lehce evokuje atmosféru seriálu Akta X :). Na internetu se rozpoutal nefalšovaný hon na čarodejnice, šéfové velkých hollywoodských studií se oháněli legislativou založenou na DMCA a požadovali vymazat každou kopii programu DeCSS, která se kdy na internetu objeví. Dlužno podotknout, že jakkoliv byla jejich snaha od začátku odsouzena ke zmaru, pomáhala založit další bohatou americkou tradici.
Po celém světě vzniklo mnoho stránek s vtipnými a těžko napadnutelnými metodami, jak se dostat ke zdrojovému kódu DeCSS, počínaje nápaditou prací s obrazovou informací a konče kernelovým patchem pro Linux. (viz zde) To všechno ale bylo jen nevinné kočkování a čekalo se, jak se linuxová komunita vyrovná s implementací DeCSS do konkrétních přehrávačů DVD.
Zlomte si své CSS
Na DVD disku je použit souborový systém zvaný UDF (Universal Disk Format). Pokud používáte kernel řady 2.4, je podpora přímo součástí zdrojáků vašeho jádra a dá se buď zakompilovat přímo do kernelu, nebo vytvořit jako modul udf.o. Používáte-li jádro nižší (jste debianista, nebo podivín?), tady jsou potřebné patche. Samozřejmě budete nezbytně potřebovat nějaký nástroj pro DeCSS. Máte na výběr z několika možností, asi nejpoužívanějšími jsou dvě knihovny, libcss a libdvdcss. Po jejich zkompilování a nainstalování pomocí svaté trojice configure / make / make install zjistíte, že zatímco libdvdcss se pouze nainstalovalo do /usr/local/lib a čeká, až bude využito nějakým konkrétním programem, tak libcss s sebou nese i tři utility pro přímou práci se zakryptovanými DVD. Jsou to programy tstdvd , dvdinfo a reset_dvd. Jejich použití je jednoduché:
Nejprve si vytvořte symbolický link na svou DVD mechaniku a dohlédněte, aby měl právo zápisu – pro autentifikaci CSS je to nezbytně nutné.
ln -s /dev/hdc /dev/dvd
Vložte DVD disk do mechaniky (nemountovat!) a spusťte program tstdvd. Ten provede prvotní autentifikaci DVD a do aktuálního adresáře uloží soubor jménem disc-key, který bude obsahovat… disc-key (viz výše).
tstdvd /dev/dvd
Nyní DVD disk přimountujte (např. do /mnt/dvd) a spusťte program tstdvd znovu, tentokrát s parametry zařízení DVD a konkrétního souboru *.VOB, jehož title-key chcete stáhnout.
tstdvd /dev/dvd /mnt/dvd/video_ts/vts_01_0.vob
Vytvořený soubor title-key je klíčem ke konkrétnímu datovému souboru, a jak již bylo řečeno, je pravděpodobné, že ostatní *.VOB soubory budou používat stejný. Pakliže ne, přejmenujte soubor title-key na titleX-key, kde X=číslo *.VOB souboru. Pomocí příkazu dvdinfo se ještě můžete podívat na soupis informací o DVD disku:
bash-2.04$ dvdinfo /dev/dvd Disc is encrypted. Layer 0[1] Book Version: 1 Book Type: 0 Min Rate: 2 Disc Size: 0 Layer Type: 1 Track Path: 0 Num Layers: 0 Track Density: 0 Linear Density: 0 BCA: 0 Start Sector 0x30000 End Sector 0x2414df End Sector L0 0 Copyright: CPST=1, RMI=0xfd
Pokud by se vám snad zdálo, že mechanika nějak stávkuje, zkuste ji zresetovat.
reset_dvd /dev/dvd
Nyní máte pohromadě všechny potřebné ingredience pro provedení DeCSS vašeho (pochopitelně legálně vlastněného) DVD disku. Možné použití je například toto:
css_cat -v1P /mnt/dvd/video_ts/vts_01_1.vob | mpeg2player -vob -f
Kdo ladí, ten jede
Ještě předtím, než začnete experimentovat s jednotlivými přehrávači, zkuste poněkud poladit výkon své DVD mechaniky pomocí hdparm (viz man hdparm, jde především o nastavení DMA), přeci jen rychlost čtení dat z DVD mechanik je ještě poměrně nízká a hodí se, když z ní vyždímete, co to dá.
Na závěr tohoto úvodu do DVD patří důležité upozornění: pokud vám budou dekryptovací knihovny při pokusech o DeCSS neustále tvrdit, že při jejich běhu nastala chyba a přehrávače nebudou kryptovaná DVD přehrávat, bude to pravděpodobně tím, že jste svou DVD mechaniku nikdy nepoužívali pod MS Windows a nemáte na ní správně nastavený region. Stáhněte si balík programů jménem dvdkit a zkompilujte si utilitku jménem regionset. The rest is easy, stačí nastavit region 2 a je to, vaše ioctl přestanou šílet a vše bude v pořádku…
O jednotlivých přehrávačích a jejich vlastnostech si povíme příště.