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 .

  1. ^ McCulagh, Declan (8 mars 2001). "Descramble That DVD in 7 Lines" . Trådbunden . Hämtad 26 april 2013 .
  2. ^ Hotz, Robert (27 maj 2015). "Vad är hett i konstvärlden? Algoritmer" . Wall Street Journal . Hämtad 27 maj 2015 .
  3. ^ "Keith Winstein – qrpff" . Konstnärlig . Konstnärlig . Hämtad 18 juni 2015 .

externa länkar