Eu adoro o Larry Wall!

É para gostar ou não do Perl? Olhe só esse código criado por dois estudantes do MIT, que quebra o código de proteção do DVD:

Smallest version:
#!/usr/bin/perl -w
# 526-byte qrpff, 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;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;
$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=
unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=($t=255)&($d
>>12^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))< ,$_=(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))
[$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}‚;s/x/pack+/g;eval

Se a gente for comparar o código fonte em C para fazer a mesma operação temos várias e várias linhas… Ok, alguém pode até dizer que esse é o mesmo caso dos one line programs feitos em Basic (quem lia a revista Micro Sistemas deve se lembrar deles), mas o fato é que é um código realmente enxuto. Um dia desses ainda vou ter um DVD para fazer um teste de performance. Se o Perl ganhar daí é ir prá galera…

Deixe um comentário