Qrpff
qrpff är ett Perl -manus skapat av Keith Winstein och Marc Horowitz från MIT SIPB . Den utför DeCSS i sex eller sju rader. Själva namnet är en kodning av "decss" i rot-13 . Algoritmen skrevs om 77 gånger för att kondensera den till sex rader.
Det finns faktiskt två versioner av qrpff: en kort version (6 rader) och en snabb version (7 rader). Båda visas nedan.
Kort:
00
#!/usr/bin/perl # 472-byte qrpff, Keith Winstein och Marc Horowitz <[email protected]> # MPEG 2 PS VOB-fil -> avkodad utdata på stdout. # användning: perl -I <k1>:<k2>:<k3>:<k4>:<k5> qrpff # där k1..k5 är titelnyckelbytes åtminstone till den mest signifikanta ordningen s '' $/ = \ 2048 ; medan ( <> ){ 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 ? : S & 17 ) ), H ^= _ %64 ? 12 : , @z )[ _ %8 ]}( 16 .. 271 ))[ _ ] ^ (( D >>= 8 ) += P + ( ~ F & E ) ) för @a [ 128 .. $#a ]} print + qT , @a } ' ; s/[D-HO-U_]/\$$&/g ; s/q/pack+/g ; eval
Snabb:
#!/usr/bin/perl -w # 531-byte qrpff-fast, Keith Winstein och Marc Horowitz <[email protected]> # MPEG 2 PS VOB-fil på stdin -> avkodad utdata på stdout # argument : titelnyckelbytes åtminstone till den mest betydande ordningen $_ = 'while(read+STDIN,$_,2048){$a=29;$b=73;$c=142;$t=255;@t= karta{$_%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
Den snabba versionen är faktiskt tillräckligt snabb för att avkoda en film i realtid.
qrpff och relaterade memorabilia såldes för 2 500 USD på The Algorithm Auction , världens första auktion av datoralgoritmer .
- ^ McCulagh, Declan (8 mars 2001). "Descramble That DVD in 7 Lines" . Trådbunden . Hämtad 26 april 2013 .
- ^ Hotz, Robert (27 maj 2015). "Vad är hett i konstvärlden? Algoritmer" . Wall Street Journal . Hämtad 27 maj 2015 .
- ^ "Keith Winstein – qrpff" . Konstnärlig . Konstnärlig . Hämtad 18 juni 2015 .