qrpff

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

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 líneas 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 DVD, 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 DVD, 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 similar 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[editar]

Enlaces externos[editar]