- Qrpff
qrpff is a perl script created by
Keith Winstein andMarc Horowitz of the MIT SIPB. It performsDeCSS in six or seven lines. The name itself is an encoding of "decss" inrot-13 .In fact, two versions of qrpff exist: a short version (6 lines) and a fast version (7 lines). Both appear below.
Short:
#!/usr/bin/perl # 472-byte qrpff, Keith Winstein and Marc Horowitz
# MPEG 2 PS VOB file -> descrambled output on stdout. # usage: perl -I : # where k1..k5 are the title key bytes in least to most-significant order: : : qrpff 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 tdxbzx14d") [_/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;evalFast: #!/usr/bin/perl -w # 531-byte qrpff-fast, Keith Winstein and Marc Horowitz
# 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 The fast version is actually fast enough to watch a movie with.
See also
*
DeCSS External links
* [http://perl.plover.com/qrpff/ qrpff (fast) explained]
* [http://www-2.cs.cmu.edu/~dst/DeCSS/Gallery/index.html Gallery of CSS descramblers]
Wikimedia Foundation. 2010.