« Damn... Soy un nerd :( | Main | Solución a los FORMs anidados en HTML »

Maravillas de los lenguajes computacionales...

Hace poco estaba viendo un artículo publicado en wired.com, donde mostraban cómo poder "decifrar" (no encuentro una mejor palabra para "descramble"... ya, ok... ok... hackear si se quiere :P), los DVDs que vienen cifrados como manera de protección, para que no puedan verse sin su debida autorización.

En el articulo mencionado, dicen que en 7 líneas de PERL es posible lograr esto: (Obviamente, hay que obviar los comentarios que comienzan con "#")

#!/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=$d8^($f=$t&($d12^$d4^ $d^$d/8))<<17,
$e=$e8^($t&($g=($q=$e14&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

Lo más simpático de la historia, es que este pedazo de código, fue escrito por 2 alumnos del MIT (Instituto Tecnológico de Massachussets) que también están involucrados en un sistema desarrollados por ellos para compartir musica a través de las instalaciones de TV cable

Pero eso no es todo... como yo soy un BASH-man por defecto... tenia que buscar algo al menos similar al respecto... por lo que encontré en una Signature el siguiente trozo que permite generar un código en C:

for DVDs in Linux screw the MPAA and; do dig $DVDs.z.zoy.org ;
done | perl -ne 's/\.//g; print pack("H224",$1) if(/^x([^z]*)/)' \|
gunzip > css_unscramble.c

Lindo... no?

Volviendo a las maravillas de PERL... ´Ż┐Conoces el método de cifrado llamado RSA? bue... acá tenemos el código para hacer un cifrado, gracias a Adam Back:

print pack"C*",split/\D+/,`echo "16iII*o\U@{$/=$z;[(pop,pop,unpack"H*",<>
)]}\EsMsKsN0[lN*1lK[d2%Sa2/d0<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<J]dsJxp"|dc`

Algún otro material de código simpático? Creo que indicado sería mostrar el binario más pequeño para Linux, que compilado pesa sólo 42 bytes (Hecho en assembly):

; tiny.asm

BITS 32

   org  0x00001000

   db   0x7F, "ELF" ; e_ident
   dd   1                       ; p_type
   dd   0                       ; p_offset
   dd   $$                      ; p_vaddr
   dw   2           ; e_type    ; p_paddr
   dw   3           ; e_machine
   dd   filesize    ; e_version ; p_filesz
   dd   _start      ; e_entry   ; p_memsz
   dd   4           ; e_phoff   ; p_flags

_start:
   mov  bl, 42      ; e_shoff   ; p_align
   xor  eax, eax
   inc  eax         ; e_flags
   int  0x80
   db   0
   dw   0x34        ; e_ehsize
   dw   0x20        ; e_phentsize
   db   1           ; e_phnum
                                 ; e_shentsize
                                 ; e_shnum
                                 ; e_shstrndx
filesize      equ     $ - $$

Luego se podemos ver que:

  $ nasm -f bin -o a.out tiny.asm
  $ chmod +x a.out
  $ ./a.out ; echo $?
  42
  $ wc -c a.out
       45 a.out

Increíble... ah?

Finalmente, sugiero que revisen el sitio www.roesler-ac.de/wolfram/hello.htm, donde salen más de 200 formas de hacer un hola mundo!... impresionante. Algo que cualquier ñoño no debe perderse :-)


Escuchando: "What's The Beef" de Notorious B.I.G.

Comments (2)

Mauricio, si quieres una galería con millares de variaciones de la fórmula para decodificar un DVD t sugiero ir a http://www.cs.cmu.edu/~dst/DeCSS/Gallery/ , donde además se cuenta la historia de la decodificación.

Lo más impresionante de esa página es un inmenso Haiku con las instrucciones para descrifrar el DVD: http://www.cs.cmu.edu/~dst/DeCSS/Gallery/decss-haiku.txt

mave:

Excelente aporte!!!

Gracias Juan Pablo!... en especial el TXT :P

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on Junio 29, 2005 2:12 PM.

The previous post in this blog was Damn... Soy un nerd :(.

The next post in this blog is Solución a los FORMs anidados en HTML.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.35