Dyrk.org
Do You Really Know

Utiliser votre Arduino Uno pour simuler les touches d’un clavier !

Publié le 27 octobre 2015 par #Ro0t

 

Hello Hello jeune Padawan,

 

Je suis récemment tombé sur un article qui permettait de recycler votre précieux Arduino, en Clavier « programmé » …

 

Tout d’abord, à quoi cela peut-il bien servir ?

Je dirais que vous pourriez faire des blagues à vos amis …

 

Mais d’un coté pratique …

Vous pourriez tester la sécurité de votre entreprise, en laissant traîner
votre Arduino (emballé comme un disque externe), voir si des personnes
curieuses, le bancheraient sur leurs ordinateurs professionnels …

 

Sous entendu :

  • Vous programmez l’arduino
  • Vous le branchez sur un ordinateur
  • L’ordinateur détecte l’arduino comme un clavier
  • L’arduino fait croire à l’ordinateur que vous tapez sur le clavier

Je croyais jusqu’à il n’y a pas si longtemps que ça, que transformer un Arduino en clavier, n’était possible que pour une certaine gamme d’Arduino tel que l’ATMEGA328P :

sku_396797_1

 

Mais non il est visiblement possible de le faire depuis un Arduino Uno

Pour cela :

  • Il vous faudra mettre à jour son « firmware », vous allez donc télécharger cette archive « TurnArduinoToKeyboard« 
  • Ubuntu /Debian : Installer les paquets nécessaire
sudo apt-get install dfu-programmer dfu-util

 

Vous allez ensuite extraire les 2 fichiers contenu dans l’archive que je vous ai préalablement fait télécharger.

 

Petite précision, pour les étapes suivantes, il faudra mettre votre Arduino en mode DFU (cf. Google, car cela dépend de la révision de votre Arduino : R1, R2, R3)

Nous allons maintenant vérifier notre environnement est ok, et que nous pouvons « flasher » notre Arduino Uno:

 

sudo dfu-programmer at90usb82 erase
sudo dfu-programmer at90usb82 flash --debug 1 Arduino-usbserial.hex
sudo dfu-programmer at90usb82 reset

Si tout ce passe bien, nous allons ensuite pouvoir procéder au flashage  !

 

sudo dfu-programmer at90usb82 erase
sudo dfu-programmer at90usb82 flash --debug 1 Arduino-keyboard-0.3.hex
sudo dfu-programmer at90usb82 reset

 

ATTENTION :
Lorsque votre Arduino est flashé avec « 
Arduino-keyboard-0.3.hex« , vous ne pouvez pas développer dessus, c’est reconnu comme un « Clavier« .
Si vous souhaiter modifier votre code, il vous faudra le flasher avec
 « Arduino-usbserial.hex » (cf. ci-dessus : erase flash reset)
Puis le
 flasher depuis l’IDE.
Et enfin, dès que vous aurez fini de développer dessus, le reflasher avec « 
Arduino-keyboard-0.3.hex » (cf. ci-dessus : erase flash reset)

 

Voilà maintenant ce que l’on peut faire coté Développement !
Je ne détaillerais pas plus, je pense avoir suffisamment commenté le code pour que vous puissiez comprendre comment ça marche ;)

 

/* Arduino USB HID Keyboard Demo

* Random Key/Random Delay
*/

//Keyboard report buffer
uint8_t buf[8] = { 0 };


//Initialisation
void setup()
{
Serial.begin(9600);
randomSeed(analogRead(0));
delay(200);
}


//programme principale
void loop()
{
int randomChar = random(4, 130);
long randomDelay = random(1000, 10000);

delay(randomDelay); // Délais aléatoire
buf[2] = randomChar; // Touche aléatoire
Serial.write(buf, 8); // Appuis sur la touche
releaseKey(); // Relache la touche
}


//Relache d'une touche
void releaseKey()
{
buf[0] = 0; buf[2] = 0;
Serial.write(buf, 8); // signale que l'on relache la touche
}