Ejecutar comandos de terminal con Arduino Pro micro/Leonardo

Hola a todos este es el segundo tema que llevare a exponer al Primer Seminario de Seguridad Informatica, que se llevara acabo en Impact Hub Antigua, espero que puedan llegar y que puedan aprender a usar un poco mas las herramientas abiertas que tenemos disponibles en la red y el potencial de Arduino.

Vamos a lo nuestro, Hoy vamos a aprender a usar un Arduino Pro Micro o Arduino Leonardo para ejecutar comandos de la terminal emulando un HID(Human Interface Device), como un ratón, un teclado o un Joystick.

Recuerden que todo lo que esta escrito en este blog es para fines educativos y demostrativos, no me hago responsable por el mal uso de esta informacion 😀

Materiales:

Arduino ProMicro o Leonardo
Arduino IDE

Arduino Pro micro o Arduino Leonardo

Estas placas, estan basadas en el microcontrolador ATmega32u4, el cual ya tiene integrada la comunicacion USB dentro del mismo eliminando asi el uso de un controlador externo como en las demas placas, tambien tiene la posibilidad de emular un HID o Human Interface Driver, con el cual podemos hacer que nuestro pequeño sea un mouse o un teclado o un mouse y un teclado al mismo tiempo 😀

ArduinoIDE

Ahora vamos a programar, abrimos el IDE de arduino y seleccionamos nuestra placa en este caso pueden usar tanto la leonardo como la micro.

*nota: Todos los ejemplos seran programados en el setup para que asi no quede en un loop infinito nuestro arduino.

Emulando un teclado

Como la mayoría de cosas en la vida de Arduino es muy sencillo lo unico que debebos de hacer para emular un teclado es incluir la libreria “Keyboard.h”,  para inicializar el teclado utilizamos Keyboard.begin(),  Keyboard.press() para emular la presión de una tecla. keyboard.release() para emular que se suelta la tecla presionada anteriormente, Keyboard.print(carácter), para imprimir el carácter entre los paréntesis. Les dejo toda la información aquí  De igual manera pueden buscar en los ejemplos para que puedan entenderlo de una mejor manera.

Hola mundo

#include "Keyboard.h"
void setup(){

  Keyboard.begin();
  delay(1000);
  Keyboard.print("Hola Mundo");
  

}
void loop(){
  
}

Es importante dejar un retraso para que la computadora pueda detectar el HID y luego ya ejecutamos lo que tengamos que ejecutar, en este caso nosotros esperamos un segundo, pero dependiendo del sistema operativo y su versión asi tendra que ser el retraso.  Recuerden que en los windows viejitos 7 para abajo, les toma bastante tiempo la instalacion y reconocimiento de nuevos dispositivos. Muy mal windows.

Teclas especiales

Las teclas especiales son esas como ALT CTRL F1-F12 supr, etc. En el codigo fuente de la libreria nos da una buena cantidad de teclas.

DeepinScreenshot20170411152834

Seria bueno saber cual es el valor hexadecimal de la tecla de imprimir pantalla, para asi poder capturar y guardar las pantallas xD , se los dejo de tarea y yo tambien lo investigare, pero sera para la proxima.

Bueno vamos a lo nuestro ahora lo vamos a probar en linux luego en windows. Vamos a hacer un ejemplo sencillo.

Cerrar ventanas

#include "Keyboard.h"


void setup() {
  // put your setup code here, to run once:
Keyboard.begin();
delay(2000);

Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_F4);
Keyboard.releaseAll();


}

void loop() {
  // put your main code here, to run repeatedly:

}

Minimizar todas las ventanas.

/*
 * Minimizar Ventanas.
 * Este ejemplo demuestra el uso de el microcontrolador
 * atmega32u4 para emular un teclado y asi poder
 * minimizar todas las ventanas 
 * con tan solo conectar la placa a una computadora.
 * Yeffri J. Salazar, Najt Labs Guatemala. 
 */

#include "Keyboard.h"

void setup() {
Keyboard.begin();
delay(2000);

Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('d');
Keyboard.releaseAll();


}

void loop() {

}

Cambiar de ventanas.

/*
 * Cambiar de Ventanas.
 * Este ejemplo demuestra el uso de el microcontrolador
 * atmega32u4 para emular un teclado y asi poder
 *  Cambiar de Ventanas. 
 * con tan solo conectar la placa a una computadora.
 * Yeffri J. Salazar, Najt Labs Guatemala. 
 */

#include "Keyboard.h"

void setup() {
Keyboard.begin();
delay(2000);

for(int i =0;i<5;i++){
  
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_TAB);
delay(1000);
Keyboard.press(KEY_TAB);        
Keyboard.releaseAll();
delay(1000);
}
}

void loop() {

}

Abriendo terminales, en GNU/linux es mas facil abrir una terminal(dependiendo de la distribucion que se tenga), en mi caso con presionar CTRL+Alt+t me abre la terminal, en windows hay que ejecutar tecla windows+r luego escribimos cmd presionamos enter y ya podemos empezar a jugar con la terminal de windows.

abriendo terminal en linux

/*
 * abrir terminales linux
 * Este ejemplo demuestra el uso de el microcontrolador
 * atmega32u4 para emular un teclado y asi poder
 *  abrir terminales linux 
 * con tan solo conectar la placa a una computadora.
 * Yeffri J. Salazar, Najt Labs Guatemala. 
 */

#include "Keyboard.h"

void setup() {
Keyboard.begin();
delay(2000);

  
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('t');     
Keyboard.releaseAll();
delay(1000);
}

void loop() {

}

abriendo terminal en windows

/*
   abrir terminales windows
   Este ejemplo demuestra el uso de el microcontrolador
   atmega32u4 para emular un teclado y asi poder
    abrir terminales windows
   con tan solo conectar la placa a una computadora.
   Yeffri J. Salazar, Najt Labs Guatemala.
*/

#include "Keyboard.h"

void setup() {
  Keyboard.begin();
  delay(2000);
  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.press('r');
  Keyboard.releaseAll();
  delay(2000);
  Keyboard.print("cmd");
  delay(2000);
  Keyboard.write(KEY_RETURN);
  delay(2000);
  

}

void loop() {

}

Ahora vamos a abrir navegadores

En windows vamos a abrir nuestro favorito, que es: Internet Explorer y en linux Firefox.

linux:

/*
   abrir firefox linux
   Este ejemplo demuestra el uso de el microcontrolador
   atmega32u4 para emular un teclado y asi poder
    abrir firefox linux
   con tan solo conectar la placa a una computadora.
   Yeffri J. Salazar, Najt Labs Guatemala.
*/

#include "Keyboard.h"

void setup() {
  Keyboard.begin();
  delay(2000);


  Keyboard.press(KEY_LEFT_ALT);
  Keyboard.press(KEY_LEFT_CTRL);
  Keyboard.press('t');
  Keyboard.releaseAll();
  delay(1000);
  Keyboard.println("firefox themicrofcontrol.wordpress.com && exit");
  delay(1000);
  Keyboard.write(KEY_RETURN);
}

void loop() {

}

windows

/*
   abrir internet explorer desde consola
   Este ejemplo demuestra el uso de el microcontrolador
   atmega32u4 para emular un teclado y asi poder
brir internet explorer desde consola
   con tan solo conectar la placa a una computadora.
   Yeffri J. Salazar, Najt Labs Guatemala.
*/

#include "Keyboard.h"

void setup() {
  Keyboard.begin();
  delay(2000);
  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.press('r');
  Keyboard.releaseAll();
  delay(2000);
  Keyboard.print("cmd");
  delay(2000);
  Keyboard.write(KEY_RETURN);
  delay(2000);
  Keyboard.print("start iexplore.exe themicrofcontrol.wordpress.com");
  delay(2000);
  Keyboard.write(KEY_RETURN);
  delay(2000);  
  

}

void loop() {

}

Con un poco de imaginación se pueden llegar a hacer cosas muy curiosas,  pero eso se los dejo a ustedes para que vayan aprendiendo y compartiendo, dejare esto en mi github para que puedan aportar y corregir errores nos vemos en el siguiente Articulo

Saludos desde el pais de la eterna primavera 😀

Anuncios

2 Comments

Add yours →

  1. Muy interesantes tutoriales amigo, espero y sigas compartiendo tus conocimientos que le son de mucha ayuda a los principiantes como yo c:

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: