jueves, 23 de junio de 2016

CPU-Grabbers: La proxima amenaza en Internet. Codificar MP3 y enviarlo de vuelta en background con javascript

Descarga prototipo aquí.
Virus, ventanas emergentes,... Hay muchos elementos en la web que nos dificultan la navegación. Pero ¿Que es lo siguiente que aparecerá?

Tecnologias como asm.js que permiten ejecutar javascript a velocidad casi nativa, o a compiladores como Emscripten que permiten compilar javascript a partir de codigo C o C++, javascript se esta convirtiendo en el lenguaje de programación multiplataforma del futuro.

Y aqui es cuando yo planteo un concepto... ¿Y si utilizamos la potencia de javascript en nuestra pagina web para que los usuarios que accedan nos realicen tareas computacionales complejas mientras visualizan con normalidad la pagina y conforme los calculan nos lo vayan enviando de forma transparente?

Esta idea que planteo nos evitaría el costo que tendría por ejemplo el uso de super-computadores, a la vez que al usuario le aumenta el uso de CPU y por lo tanto el consumo de energía de su dispositivo.

¿Os imaginais a paginas web con millones de usuarios como Google, Twitter,... Poniendo en practica esta idea para desencriptar claves AES por fuerza bruta en muy poco tiempo?

Mi prototipo:
Aunque descifrar claves sea probablemente uno de las mayores utilidades de mi concepto de CPU-Grabber, en mi prototipo vamos a un caso mucho mas basico: Codificar de PCM a MP3.
Para ello utilizo la librería liblame.js obtenida desde github. Esta no esta optimizada para javascript, pero para un simple prototipo nos sobra.
En el prototipo teneis adjunto el servidor http "miniweb" junto a la libreria libLame.js y el resto de archivos del prototipo, incluyendo un "index.html"

Accediendo al contenido de este servidor web desde por ejemplo, un ordenador o un Iphone sin jailbreak, el dispositivo descarga audios WAV aleatorios de la carpeta "wav" que no se haya codificado aun (Comprobandolo previamente), lo codificará en MP3, y una vez hecho esto, enviará el MP3 resultante al servidor con un POST el cual nos colocara en la carpeta "mp3". Una vez hecho esto, volveremos a coger otro audio aleatorio que no se haya codificado aun, así hasta que cerremos el navegador, o no queden archivos sin codificar en nuestro servidor.

El motivo por el que se selecciona un audio aleatorio, es porque perfectamente podemos tener varios dispositivos conectados a nuestra web a la vez, cada uno codificando audios distintos simultaneamente.

Notas del prototipo:

-Hay dos modos accesibles desde index.html. El modo debug que muestra en todo momento lo que hace el javascript, y el modo poison que muestra una pagina web (politica de privacidad de ask.fm) infectada con poison.js y por lo tanto ¡codificando para nosotros MP3 sin que el usuario se entere!

-En las capturas muestro el tiempo que tardan distintos dispositivos en codificar audios (Distintos a los audios adjuntos) en el modo debug

-Acordaos que podeis insertar vuestros propios archivos "wav". Debeis establecer en index.html o poison.js (depende la demo que esteis usando) el numero de pista mas pequeño y el mas grande de vuestros archivos wav.

No hay comentarios:

Publicar un comentario