- Qrpff
-
qrpff
qrpff es un script escrito en perl por los estudiantes del MIT Keith Winstein y Marc Horowitz, que pertenecen al MIT STIB (M.I.T. Student Information Processing Board, i.e., Junta de Procesamiento de la Información de Alumnos del MIT)
Es una realización del pionero DeCSS con la particularidad de que tiene seis o siete lineas de código, dependiendo de la versión. De hecho el nombre "qrpff" no es más que "decss" en rot-13
Este pequeño programa permite sortear el control que han impuesto a los DVDs, el conjunto de la industria cinematográfica, la MPAA, y que impedía su utilización sin la autorización adecuada. Si bien inicialmente el proyecto nació con la intención de permitir a los usuarios de linux reproducir dvds, ya que no se contaba con ningún "reproductor autorizado" para tal sistema operativo, su repercusión fue, evidentemente, mucho mayor.
Basados en hecho de que el código no incluye la clave de título de 40 bits que debe introducirse al programa para que este pueda correr, sus creadores aseguran que es totalmente legal y que no viola la DMCA (Digital Millennium Copyright Act - Ley de Derechos de Autor para el Milenio Digital).
Ante las posibles ofensiva, la pequeñez del código permite una campaña similiar a la que se realizó con la prohibición de exportación del PGP, pudiendo escribirse en pegatinas auto adhesivos, remeras, firmas de correo, etc.
Existen dos versiones del qrpff, una corta y una rápida:Versión corta:
#!/usr/bin/perl # 472-byte qrpff, Keith Winstein and Marc Horowitz <sipb-iap-dvd@mit.edu> # MPEG 2 PS VOB file -> descrambled output on stdout. # usage: perl -I <k1>:<k2>:<k3>:<k4>:<k5> qrpff # where k1..k5 are the title key bytes in least to most-significant order s''$/=\2048;while(<>){G=29;R=142;if((@a=unqT="C*",_)[20]&48){D=89;_=unqb24,qT,@ b=map{ord qB8,unqb8,qT,_^$a[--D]}@INC;s/...$/1$&/;Q=unqV,qb25,_;H=73;O=$b[4]<<9 |256|$b[3];Q=Q>>8^(P=(E=255)&(Q>>12^Q>>4^Q/8^Q))<<17,O=O>>8^(E&(F=(S=O>>14&7^O) ^S*8^S<<6))<<9,_=(map{U=_%16orE^=R^=110&(S=(unqT,"\xb\ntd\xbz\x14d")[_/16%8]);E ^=(72,@z=(64,72,G^=12*(U-2?0:S&17)),H^=_%64?12:0,@z)[_%8]}(16..271))[_]^((D>>=8 )+=P+(~F&E))for@a[128..$#a]}print+qT,@a}';s/[D-HO-U_]/\$$&/g;s/q/pack+/g;eval
Versión Rápida:#!/usr/bin/perl -w # 531-byte qrpff-fast, Keith Winstein and Marc Horowitz <sipb-iap-dvd@mit.edu> # MPEG 2 PS VOB file on stdin -> descrambled output on stdout # arguments: title key bytes in least to most-significant order $_='while(read+STDIN,$_,2048){$a=29;$b=73;$c=142;$t=255;@t=map{$_%16or$t^=$c^=( $m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t^=(72,@z=(64,72,$a^=12*($_%16 -2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271);if((@a=unx"C*",$_)[20]&48){$h =5;$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$ d=unxV,xb25,$_;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=$t&($d>>12^$d>>4^ $d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9,$_=$t[$_]^ (($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval
La "versión rápida" es, en realidad, lo suficientemente rápida como para poder ver una película con ella.
Véase también
- DeCSS
Enlaces externos
- explicación del qrpff rápido - INGLES
- Galería de descifradores de CSS - INGLES
- Artículo del sitio UnixMexico - Español
Categorías: Software criptográfico | Programas hechos con Perl | DVD
Wikimedia foundation. 2010.