Moeiteloze Windows PC-beveiliging: RFID Ontgrendel- & Vergrendelsysteem
Onderdelen en benodigdheden
| Arduino Micro | 1 | |
| RC-522 RFID-module | 1 | |
| Weerstand 10k ohm | 3 |
Benodigde tools en machines
| Solderbout (generiek) |
Apps en online diensten
| Arduino IDE |
Over dit project
Hallo!
Hoe vaak heb je je al verveld gevoeld door telkens je wachtwoord in te typen om je PC/laptop te ontgrendelen na vergrendeling? Ik vergrendel mijn computer vaak, en niets is irriterender dan telkens het wachtwoord/pincode in te typen. Als de noodzaak groot genoeg is, vind je manieren om het op te lossen. Zoals het gezegde gaat: "nood breekt wet", mijn luiheid zette me aan tot het bedenken van een eenvoudige en goedkope manier om mijn pc te ontgrendelen. In mijn spullen vond ik een RC522 RFID-module. Dat was het moment dat ik besloot een RFID-systeem te bouwen.
RFID: Radiofrequentie-identificatie (RFID) is een van de oudste draadloze technologieën. RFID-chips slaan informatie digitaal op, die via elektromagnetische velden en radiogolven tussen objecten kan worden gedeeld. Het is misschien niet super-geavanceerd, maar veel makers zien echt potentie in de technologie, ongeacht de leeftijd.
In dit project leg ik uit hoe je een simpel RFID-systeem maakt dat je Windows-computer kan vergrendelen/ontgrendelen met slechts een waai van een RFID-kaart/tag. Geen gedoe meer met wachtwoorden!
Het hart van dit project is de Arduino Pro Micro (of Arduino Leonardo) met de ATmega32U4-chip. Het is essentieel een ontwikkelbord met deze chip te kiezen. We kunnen geen borden als Arduino Uno, Mega 2560, Pro Mini of Nano gebruiken voor deze toepassing. De details volgen in de volgende stappen.
De prototype bouwen
Ik raad aan om eerst een prototype op breadboard te bouwen voordat je solder op een PCB. Dit helpt bij het begrijpen van de verbindingen en het oplossen van eventuele fouten. Het is niet zwaar: slechts een paar verbindingen en je kunt de code uploaden.
Let op: Op de Arduino zijn veel pinnen niet veranderbaar. Omdat dit apparaat de SPI-bus gebruikt, is wisselen van pinnen niet mogelijk. Pinnen 14, 15 en 16 moeten zoals getoond blijven. RST en SDA zijn gebruiker-gedefinieerd.
- De RC-522 RFID-module is ontworpen voor 3,3 volt. Het is een gevoelig apparaat; hogere spanningen kunnen oververhitting en schade veroorzaken. De VCC van de Arduino Pro Micro levert 5V. Maak een spanningsdeler (zie schema) of gebruik een 5V-naar-3,3V step-down module. Sluit de 3,3V aan op de VCC van de RFID-module.
- RST naar pin 5 van de Arduino (veranderbaar in code).
- GND naar grond.
- IRQ - Niet aangesloten.
- MISO naar pin 14 van de Arduino.
- MOSI naar pin 16 van de Arduino.
- SCK naar pin 15 van de Arduino.
- SDA naar pin 10 van de Arduino (ook gebruiker-gedefinieerd).
Dat is het! Simpel en makkelijk. Stek de kabel in en we zijn klaar om de code te uploaden en te testen.
De code
De Arduino Leonardo/Micro met ATmega32u4 heeft ingebouwde USB-communicatie. Dit stelt de Leonardo/Micro in staat om te verschijnen als een muis of toetsenbord aan een aangesloten computer.
We gebruiken de Keyboard.h kernbibliotheek om de Arduino toetsaanslagen te laten sturen naar de computer.
De werking is simpel:
- De UID van je RFID-kaart/tag en je Windows-wachtwoord/PIN worden in de code opgeslagen.
- Wanneer de juiste kaart voor de RFID-lezer wordt getoond, stuurt de Arduino toetsaanslagen voor het vergrendelen van Windows EN je wachtwoord voor ontgrendelen tegelijkertijd.
- Als Windows vergrendeld is, heeft het vergrendel-commando geen effect en ontgrendelt het commando de computer.
- Als Windows al ontgrendeld is, zullen de commando's het vergrendelen. (De ontgrendelcode komt ook tegelijk, maar door de kleine vertraging gaat Windows het vergrendelcommando uitvoeren en leest het ontgrendelcommando niet.)
Je moet kleine aanpassingen in de code maken voor eigen gebruik:
- Sluit het prototype aan op de computer.
- Open de Arduino IDE en laad de code.
- Ga naar Tools > Board en selecteer Arduino Leonardo (voor zowel Pro Micro als Leonardo).
- Controleer of de juiste COM-poort is geselecteerd.
- Upload de code.
- Open de Seriële Monitor (Ctrl+Shift+M).
- Scan je kaart/tag.
- De eerste regel in de seriële monitor is de UID van je kaart. Noteer deze waarde.
- Ga terug naar de code-editor en verander de waarde van string "card1" naar de zojuist genoteerde UID (in mijn code regel 41).
- Ga naar het einde van de code en zoek de regel
Keyboard.print("WACHTWOORD");(regel 80). Verander dit naar je Windows ontgrendelcode.
- Upload de aangepaste code.
- Scan de kaart/tag om de prototype te testen.
Dit is een basiscode voor het typen van wachtwoorden via RFID-tags. Je kunt de code uitbreiden met meer kaarten/tags en verschillende wachtwoorden voor diverse toepassingen.
Solderen
Dit is een klein, simpel circuit. Het is beter om dit op een experimenteer-PCB te solderen dan veel tijd te besteden aan een custom PCB.
Gebruik altijd headers om de Arduino en RFID-module te verbinden, anders kan langdurige hittebij blootstelling bij solderen de borden permanent beschadigen.
Solder alle verbindingen zoals in het schema getoond en bevestig de Arduino en RFID-module op de PCB. Ik heb de RFID-module horizontaal gemonteerd met een rechthoekige female header voor mijn gemak bij het maken van een behuizing.
Test na solderen altijd op losse verbindingen of storingen.
Een behuizing maken
Ik maakte een simpele behuizing van kartondozen uit mijn garage. Een staandertje van dezelfde karton, gaten uitgezaagd voor de kabel en LEDs. Daarna alles ingepakt met carbon-fiber look sticker en een donker halfdoorzichtige sticker voor de LED-gaten.
De behuizing is volledig aan je eigen verbeelding overgelaten. Deel je ideeën in de reacties!
Het resultaat
Bekijk de video om het apparaat in actie te zien.
Onthoud: dit is een simpel hobbyproject dat perfect werkt voor thuisgebruik. Overweeg potentiële beveiligingsrisico's voordat je dit voor persoonlijk gebruik implementeer. Ik kan geen beveiliging garanderen.
Er zijn talloze mogelijkheden voor RFID + Keyboard.h in het dagelijks leven. Ik maakte het voor het vergrendelen/ontgrendelen van mijn computer. Wat ga jij ermee doen? Laat het weten in de reacties!
Bedankt!
Code
Windows PC vergrendelen/ontgrendelen met RFID
#include <Keyboard.h>
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 5
#define KEY_RETURN 0xB0 // Hex-waarde voor Enter-toets
MFRC522 mfrc522(SS_PIN, RST_PIN);
char Enter = KEY_RETURN;
String readid;
String card1 = "48b45a10"; // Verander dit naar de UID van jouw kaart
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 = readid + String(buffer[i], HEX);
}
}
void loop() {
if (!mfrc522.PICC_IsNewCardPresent()) {
return;
}
if (!mfrc522.PICC_ReadCardSerial()) {
return;
}
mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); // Toon kaartdetails in seriële monitor
temp(mfrc522.uid.uidByte, mfrc522.uid.size);
if (readid == card1) {
Keyboard.press(KEY_LEFT_GUI); // Linker Windows-toets
Keyboard.press('l'); // 'l' toets
Keyboard.releaseAll(); // Alle toetsen loslaten
delay(100);
Keyboard.press(Enter); // Enter
Keyboard.release(Enter);
delay(100);
Keyboard.print("WACHTWOORD"); // Verander naar jouw Windows PIN/Wachtwoord
Keyboard.releaseAll();
delay(100);
Keyboard.press(Enter);
Keyboard.releaseAll();
} else {
return;
}
}
Schema's
Productieproces
- Binnenkijken in bankkluizen: geschiedenis, ontwerp en toekomst van beveiliging
- Kanalen & sluizen: techniek, geschiedenis en toekomst van VS watervervoer
- De Evolutie en Fabricage van Moderne Pin-Tumbler Sloten
- Combinatieslot: Ontwerp, Productie en Historische Evolutie
- Externe weerbewaking met Raspberry Pi 3 en PubNub
- TI SensorTag integreren met Blynk via Node-RED op Raspberry Pi Zero
- Een LED Besturen met een PIR-bewegingssensor op Raspberry Pi
- Bouw een Slimme Robot met de Bridge Shield – Raspberry Pi & Arduino Integratie
- Bouw een Spraak-gestuurde Computer Vision Robot op Windows 10 IoT Core
- WiFi-ingeschakeld slim slot met Arduino & ESP8266 – Ontgrendel via je telefoon
- C# using-statements: imports, aliasen en static directives