Sécurité PC Windows sans effort : verrouillage/déverrouillage par RFID
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino Micro (ou Leonardo) | 1 |
| Module RFID RC-522 | 1 |
| Résistance 10 kΩ | 3 |
Outils nécessaires
- Fer à souder (générique)
Applications et services en ligne
- Arduino IDE
À propos du projet
Bonjour !
Combien de fois avez-vous pesté contre la saisie répétée du mot de passe pour déverrouiller votre PC/portable ? Moi qui le verrouille souvent, c'était devenu une corvée. « La nécessité est mère de l'invention » : mon côté paresseux a cherché une solution simple et peu coûteuse. J'ai retrouvé un module RFID RC522 dans mes tiroirs — c'était parti !
Qu'est-ce que le RFID ?
L'identification par radiofréquence (RFID) est une technologie sans fil mature. Les puces RFID stockent des informations numériques, échangeables via champs électromagnétiques. Bien que pas ultra-moderne, elle offre un vrai potentiel pour les makers.
Ce projet réalise un système RFID qui verrouille/déverrouille votre PC Windows d'un simple passage de carte/tag. Fini la saisie de mot de passe à chaque déverrouillage.
Le cœur du projet est l'Arduino Pro Micro (ou Leonardo) avec puce ATmega32U4. Crucial : cette puce permet l'émulation USB clavier/souris. Les Uno, Mega, Nano, Pro Mini ne fonctionnent pas pour cette application.
Construction du prototype
Montez d'abord sur breadboard pour valider les connexions. Le module RC522 fonctionne en 3,3 V — sensible, ne l'alimentez pas en 5 V ! Utilisez un diviseur de tension (ou module step-down 5V→3.3V) depuis le VCC du Pro Micro.
Câblage (SPI hardware — pins fixes) :
- VCC RFID → 3,3 V (via diviseur)
- RST → pin 5 (modifiable dans le code)
- GND → GND
- IRQ → non connecté
- MISO → pin 14 (hardware SPI)
- MOSI → pin 16 (hardware SPI)
- SCK → pin 15 (hardware SPI)
- SDA → pin 10 (modifiable dans le code)
Le code
L'ATmega32U4 permet l'émulation clavier via la bibliothèque Keyboard.h. Le principe :
- L'UID de votre carte/tag et votre mot de passe Windows sont stockés dans le code.
- À la détection de la bonne carte, l'Arduino envoie : Win+L (verrouillage), puis Entrée, puis le mot de passe, puis Entrée.
- Si Windows est verrouillé, Win+L n'a pas d'effet et le mot de passe le déverrouille.
- Si Windows est déverrouillé, la séquence le verrouille (le déverrouillage arrive trop vite pour être exécuté).
Personnalisation du code :
- Connectez le prototype, ouvrez le code dans l'IDE.
- Outils > Carte > Arduino Leonardo (pour Pro Micro et Leonardo).
- Vérifiez le port COM.
- Téléversez, ouvrez le Moniteur Série (Ctrl+Shift+M).
- Scannez votre carte : la première ligne affichée est l'UID. Notez-le.
- Dans le code, remplacez la valeur de
card1(ligne ~41) par cet UID. - Remplacez
Keyboard.print("PASSWORD");(ligne ~80) par votre mot de passe/PIN Windows. - Retéléversez et testez.
Ce code de base gère une carte. Vous pouvez l'étendre pour plusieurs cartes/tags avec mots de passe différents.
Soudure et boîtier
Soudez sur PCB de prototypage. Utilisez des connecteurs à broches (headers) pour l'Arduino et le module RFID — la chaleur prolongée les endommagerait. Testez après soudure.
Boîtier réalisé en carton recyclé, habillé d'un autocollant fibre de carbone. L'imagination est votre seule limite !
Résultat
Regardez la vidéo pour voir le dispositif en action. Attention : c'est un projet hobby, parfait pour un usage personnel, mais évaluez les risques de sécurité avant usage critique. Je ne garantis aucune sécurité.
Les possibilités RFID + Keyboard.h sont vastes. Moi, j'ai fait du verrouillage PC. Vous, qu'allez-vous créer ? Dites-le en commentaires !
Merci !
Code
Verrouillage/déverrouillage PC Windows par RFID (C/C++)
#include <Keyboard.h>
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 5
#define KEY_RETURN 0xB0 // Code hex touche Entrée
MFRC522 mfrc522(SS_PIN, RST_PIN);
char Enter = KEY_RETURN;
String readid;
String card1 = "48b45a10"; // Remplacez par l'UID de votre carte
void setup() {
Serial.begin(9600);
Keyboard.begin();
SPI.begin();
mfrc522.PCD_Init();
}
void temp(byte *buffer, byte bufferSize) {
readid = "";
for (byte i = 0; i < bufferSize; i++) {
readid += String(buffer[i], HEX);
}
}
void loop() {
if (!mfrc522.PICC_IsNewCardPresent()) return;
if (!mfrc522.PICC_ReadCardSerial()) return;
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
temp(mfrc522.uid.uidByte, mfrc522.uid.size);
if (readid == card1) {
Keyboard.press(KEY_LEFT_GUI); // Touche Windows gauche
Keyboard.press('l'); // 'l' pour verrouiller
Keyboard.releaseAll();
delay(100);
Keyboard.press(Enter); // Entrée
Keyboard.release(Enter);
delay(100);
Keyboard.print("PASSWORD"); // ← VOTRE MOT DE PASSE ICI
Keyboard.releaseAll();
delay(100);
Keyboard.press(Enter);
Keyboard.releaseAll();
}
}
Schémas
Processus de fabrication
- À l'intérieur des coffres-forts bancaires : histoire, conception et avenir de la sécurité
- Canaux et Écluses : Ingénierie, Histoire et Avenir du Transport Fluvial aux États-Unis
- Maîtriser les directives using C# : Imports, alias et directives static
- Surveillance météo à distance avec Raspberry Pi 3 et PubNub
- Intégration du TI SensorTag à Blynk via Node‑RED sur Raspberry Pi Zero
- Contrôler une LED avec un capteur de mouvement PIR sur Raspberry Pi
- Construire un robot intelligent avec le Bridge Shield – Intégration Raspberry Pi & Arduino
- Construire un robot vision par ordinateur piloté par la parole sur Windows 10 IoT Core
- Serrure connectée WiFi avec Arduino et ESP8266 – Déverrouillage par smartphone