El pendrive de la muerte

He creado un dispositivo, basado en Arduino Micro, que hace totalmente imposible el control de un ordenador al que se conecta mediante USB. Al conectarse, crea un teclado y un ratón virtual a través del puerto usb. Luego, envía caracteres aleatorios por el teclado seguidamente de un Intro después de cada uno, mueve el ratón en direcciones aleatorias girando también la rueda del ratón y por último da un click con el botón derecho, izquierdo o el del medio (la rueda) (aleatoriamente también) después de cada movimiento del ratón. 

He probado su potencia en VirtualBox: se empiezan a abrir ventanas de todo tipo tan rápido que no le da tiempo a mostrar una antes de que salgan unas cuantas más. También se abren archivos con el bloc de notas y, claro, se les mete un montón de m*ier*a con el teclado virtual. Después de un rato, en la pantalla ya se para el festival viendose ventanas a trozos. Entonces decido desconectar el dispositivo. Bueno, ya lo veréis en el video que grabé. 
 



Este dispositivo, si se hace con Arduino Micro, es relativamente fácil de encapsularlo en una carcasa de un pendrive y soldarle un conector usb de tipo A macho....
Así que ya sabes, si alguien te presta un pendrive y no es un pendrive normal... 

Bueno, para que no sea tan incontrolable, le he puesto unos pines de configuración que, si pones un puente entre el pin 2 y tierra debes enviar un "10" por el puerto serie para que empiece; y si lo pones entre el 2 y el 3 hay simplemente cuenta atras de 60 segundos. 

El código está distribuido bajo licencia GPL v3 y yo NO ME HAGO RESPONSABLE DE TODAS LAS MALDADES QUE HAGAIS CON ESTO.

Repositorio github del código: https://github.com/Aztemat/DoS-over-Mouse-Keyboard/

pd. El código es solo compatible con placas arduino que tienen el puerto USB nativo, que si no recuerdo mal son: Arduino Leonardo, Micro, Due y alguna más.

Saludos de Aztemat

4 comentarios :

  1. justo el viernes me llegan dos leonados desde china por menos de 5usd

    ResponderEliminar
  2. Hola hackplayers, solo cargue parte del codigo en mi arduino leonardo:

    char r;
    void setup() {
    Mouse.begin();
    Keyboard.begin();
    }

    void loop() {
    Mouse.move(random(-501, 501), random(-501, 501), random(-6, 6));
    Keyboard.println(char(random(255)));
    r = random(3);
    if(r == 0){
    Mouse.click(MOUSE_LEFT);
    }
    if(r == 1){
    Mouse.click(MOUSE_MIDDLE);
    }
    if(r == 2){
    Mouse.click(MOUSE_RIGHT);
    }
    }

    ------------------
    Resulta que apenas introdusco la arduino es increiblemente pasan cosas extrañas jajaja, un saludo, vere como solucionar el asunto para revertirlo.

    ResponderEliminar
  3. Claro, el resto del codigo sirve "por seguridad" para que sea mas controlable y para que pueda conectarlo a VirtualBox para hacer la demostración (y el video)

    ResponderEliminar