qrpff es un script en Perl creado por Keith Winstein y Marc Horowitz del MIT SIPB . [1] Realiza DeCSS en seis o siete líneas. El nombre en sí es una codificación de "decss" en rot-13 . El algoritmo se reescribió 77 veces para condensarlo en seis líneas. [2]
De hecho, existen dos versiones de qrpff: una versión corta (6 líneas) y una versión rápida (7 líneas). Ambos aparecen a continuación.
Corto:
#! / usr / bin / perl # 472-byte qrpff, Keith Winstein y Marc Horowitz @mit.edu># Archivo MPEG 2 PS VOB -> salida descodificada en stdout. # uso: perl -I : : : : qrpff # donde k1..k5 son los bytes de la clave de título en el orden de menos a más significativos '' $ / = \ 2048 ; mientras que ( <> ) { G = 29 ; R = 142 ; si (( @a = unqT = "C *" , _ ) [ 20 ] y 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 y 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 ? 0 : S & 17 )), H ^ = _ % 64 ? 12 : 0 , @z ) [ _ % 8 ]} ( 16 .. 271 )) [ _ ] ^ (( D >> = 8 ) + = P + ( ~ F & E )) para @a [ 128 .. $ # a ]} print + qT , @a } ' ; s / [D-HO-U _] / \ $$ & / g ; s / q / paquete + / g ; eval
Rápido:
#! / usr / bin / perl -w # 531-byte qrpff-fast, Keith Winstein y Marc Horowitz @mit.edu># Archivo MPEG 2 PS VOB en stdin -> salida descodificada en stdout # argumentos : bytes de la clave de título en el orden de menor a mayor importancia$ _ = 'while (leer + 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] y 48) {$ h = 5; $ _ = unxb24, unirse "", @ 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)) para @ a [128 .. $ # a]} print + x "C *", @ a} ' ; s / x / paquete + / g ; eval
La versión rápida es lo suficientemente rápida como para decodificar una película en tiempo real.
qrpff y objetos de interés relacionados se vendieron por 2.500 dólares en The Algorithm Auction , la primera subasta de algoritmos informáticos del mundo . [3]
Referencias
- ^ McCullagh, Declan (8 de marzo de 2001). "Descodifica ese DVD en 7 líneas" . Cableado . Consultado el 26 de abril de 2013 .
- ^ Hotz, Robert (27 de mayo de 2015). "¿Qué está de moda en el mundo del arte? Algoritmos" . Wall Street Journal . Consultado el 27 de mayo de 2015 .
- ^ "Keith Winstein - qrpff" . Artístico . Artístico . Consultado el 18 de junio de 2015 .