Sisukord:

Arvutisüsteemi automaatne lukustamine: 4 sammu
Arvutisüsteemi automaatne lukustamine: 4 sammu

Video: Arvutisüsteemi automaatne lukustamine: 4 sammu

Video: Arvutisüsteemi automaatne lukustamine: 4 sammu
Video: Protecting Your Privacy: How to Stop Unauthorized PC Access 2024, November
Anonim
Image
Image
Kokkupanek ja üleslaadimine
Kokkupanek ja üleslaadimine

Selles õpetuses uurime arvuti ekraaniluku turvalisust. Operatsioonisüsteemidel on seadistatav ajalõpp, mis lukustab teie ekraani, kui kasutaja pole hiirt või klaviatuuri puudutanud.

Tavaliselt on vaikimisi umbes üks minut. Kui järgite seda vaikimisi ja jätate arvuti hõivatud keskkonda, võib keegi sellel minutil teie arvutile juurde pääseda, kuni ekraan lukustub. Kui määrate selle mõneks sekundiks, saate lukustusekraani väga sageli, kui te klaviatuuri ei puuduta, ja see on tüütu…

Ühel päeval küsis töökaaslane minult, kas ma saan selle probleemi "parandada" mingi seadme abil, mis lukustab arvuti, kui teda pole, ja võtsin selle väljakutse vastu:)

Olen oma peas uurinud mitmeid võimalusi, näiteks arduino ja infrapuna -termomeetri anduri, PIR -anduri või võib -olla näotuvastuse kasutamine arvutis, kuid olen otsustanud lihtsama meetodi üle:

Kombineerime Arduino Leonardo HID funktsionaalsuse (klaviatuuri jäljendamine) ultraheli kaugusanduriga, et tuvastada, kas inimene kasutab arvutit, kui mitte, siis seade saadab arvuti lukustamiseks USB kaudu klahvikombinatsiooni.

Samm: komponendid

Kuna see on kontseptsiooni tõestus, ehitame seadme leivaplaadile

Te vajate:

1. Arduino Leonardo (oluline on kasutada Leonardo, sest see võib klaviatuuri jäljendada)

2. ultraheli kaugusandur HC-SR04

3. 2 x 10 K muutuvat takistit

4. leivaplaat, leivaplaadi juhtmed

5. USB -kaabel

6. OLED -ekraan (https://www.adafruit.com/product/931)

Samm: kokkupanek ja üleslaadimine

Kokkupanek ja üleslaadimine
Kokkupanek ja üleslaadimine

Esmalt kontrollige, kas teil on kõik vajalikud komponendid ja Arduino IDE. Ma lähen lühidalt ühenduse etappidele ja saate alati vaadata lisatud fritzeerimise skeemi

Kokkupanek

1. Asetage Leonardo leivaplaadile ja hoidke seda kummipaelaga paigal

2. pange kaks muutuvat takistit, OLED -ekraan ja ultraheliandur leivalauale

3. ühendage põhjused ja vcc -id

4. ühendage takistite keskmised tihvtid arduino A0 ja A1 külge

5. ühendage ekraani SDA ja SCL Leonardo märgitud SDA ja SCL -iga

6. ühendage ultrahelianduri päästik ja kajapulk Leonardo 12, 13 digitaalse kontaktiga

7. ühendage USB arvutiga

Laadi üles

Kõigepealt peate alla laadima ja installima vajalikud arduino teegid:

1. GOFi2cOLED raamatukogu:

2. Ultraheli-HC-SR04 raamatukogu:

Kui te ei tea, kuidas arduino raamatukogusid installida, vaadake seda õpetust.

Pärast ülaltoodud teekide allalaadimist ja installimist saate kloonida või alla laadida minu arduino hoidla, mis asub siin: https://github.com/danionescu0/arduino, ja me kasutame seda visandit: https://github.com/danionescu0 /arduino/tree/master…

Või kopeerige ja kleepige allolev kood:

/ * * Selle projektiga kasutatavad raamatukogud: * * GOFi2cOLED: https://github.com/hramrach/GOFi2cOLED * Ultraheli-HC-SR04: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04 */#include "Klaviatuur.h" #sisaldab "Wire.h" #sisaldab "GOFi2cOLED.h" #sisaldab "Ultrasonic.h"

GOFi2cOLED GOFoled;

Ultraheli ultraheli (12, 13);

const bait kaugusPot = A0;

konst bait taimerPot = A1; const float percentMaxDistanceChangedAllowed = 25; int tegelikDistance; allkirjastamata pikk maxDistanceDetectionTime; bool lockTimerStarted = vale;

tühine seadistus ()

{Serial.begin (9600); Klaviatuur.begin (); initializeDisplay (); }

tühine tsükkel ()

{clearDisplay (); tegelik kaugus = getActualDistance (); writeStatusData (); doDisplay (); if (! lockTimerStarted && shouldEnableLockTimer ()) {lockTimerStarted = true; maxDistanceDetectionTime = millis (); Serial.println ("lukustaimer algab"); } else if (! shouldEnableLockTimer ()) {Serial.println ("lukustaimer keelatud"); lockTimerStarted = vale; } if (peaksLockScreen ()) {lockScreen (); Serial.println ("Lukustuskuva"); } viivitus (100); }

bool shouldLockScreen ()

{return lockTimerStarted && (millis () - maxDistanceDetectionTime) / 1000> getTimer (); }

bool peaksEnableLockTimer ()

{int lubatudDistance = percentMaxDistanceChangedAllowed / 100 * getDistance (); return getTimer ()> 1 && getDistance ()> 1 && tegelik kaugus - getDistance ()> lubatudDistance; }

void writeStatusData ()

{setDisplayText (1, "MinDistance:", String (getDistance ())); setDisplayText (1, "Taimer:", String (getTimer ())); setDisplayText (1, "Tegelik kaugus:", string (tegelik kaugus)); int countDown = getTimer () - (millis () - maxDistanceDetectionTime) / 1000; String sõnum = ""; if (peaksLockScreen ()) {message = "lukk saadetud"; } else if (shouldEnableLockTimer () && countDown> = 0) {message = ".." + String (countDown); } else {message = "ei"; } setDisplayText (1, "Lukustamine:", teade); }

void initializeDisplay ()

{GOFoled.init (0x3C); GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }

void setDisplayText (baitide fontSize, stringi silt, stringi andmed)

{GOFoled.setTextSize (fontSize); GOFoled.println (silt + ":" + andmed); }

void doDisplay ()

{GOFoled.display (); }

void clearDisplay ()

{GOFoled.clearDisplay (); GOFoled.setCursor (0, 0); }

int getActualDistance ()

{int kaugusSumma = 0; jaoks (bait i = 0; i <10; i ++) {kaugussumma+= ultraheli. Vahemik (CM); }

tagasisõidu kaugusSum / 10;

}

int getDistance ()

{return map (analogRead (timerPot), 0, 1024, 0, 200); }

int getTimer ()

{tagasisõidu kaart (analogRead (distancePot), 0, 1024, 0, 20); }

tühi lukk Ekraan ()

{Serial.println ("vajutamine"); Keyboard.press (KEY_LEFT_CTRL); viivitus (10); Keyboard.press (KEY_LEFT_ALT); viivitus (10); Keyboard.write ('l'); viivitus (10); Keyboard.releaseAll (); }

Lõpuks ühendage arduino arvuti USB -kaabli abil ja laadige visand arduino -sse.

Samm: seadme kasutamine

Seadme kasutamine
Seadme kasutamine

Kui arduino on arvutiga ühendatud, jälgib see pidevalt anduri ees olevat kaugust ja saadab kauguse suurenemise korral arvutile "lukustus" ekraaniklahvide kombinatsiooni.

Seadmel on mõned konfiguratsioonid:

1. Tavaline kaugus, kaugust saab seadistada A0 -ga ühendatud muutuva takisti abil. Kaugus kuvatakse ka OLED -ekraanil. Kui kaugus suureneb seadistatud kaugusest 25%, algab loendamine

2. Aegumine (loendamine). Aega saab sekundites konfigureerida ka A1 -ga ühendatud takisti abil. Ajalõpu lõppedes saadetakse lukukäsk

3. Lukusta klahvikombinatsioon. Vaikimisi lukuklahvide kombinatsioon on seadistatud töötama Ubuntu Linux 18 (CTRL+ALT+L) jaoks. Kombinatsiooni muutmiseks peate oma visandit vastavalt oma operatsioonisüsteemile muutma:

4. Ajalõpp ja kauguskaitse. Kuna see on klaviatuuri jäljendav seade, on hea mõte omada klaviatuuri funktsionaalsuse deaktiveerimise mehhanismi. Oma visandis olen valinud, et ajalõpp ja vahemaa peavad olema suuremad kui "1". (soovi korral saate seda koodis muuta)

Leidke ja muutke funktsiooni "lockScreen ()"

void lockScreen () {Serial.println ("vajutades"); Keyboard.press (KEY_LEFT_CTRL); viivitus (10); Keyboard.press (KEY_LEFT_ALT); viivitus (10); Keyboard.write ('l'); viivitus (10); Keyboard.releaseAll (); }

Arduino erivõtmete täieliku loendi leiate siit:

4. samm: muud lähenemisviisid

Enne selle rakendamist olen kaalunud ka mõnda muud rakendust:

1. Infrapuna termomeeter (MLX90614 https://www.sparkfun.com/products/10740). Infrapunatermomeeter on seade, mis mõõdab temperatuuri, analüüsides objekti poolt kiirguvat infrapunakiirgust. Mul oli üks lamades ja mõtlesin, et äkki suudan arvuti ees temperatuuri erinevust tuvastada.

Olen selle ühendanud, kuid temperatuuride erinevus oli väga väike (kui olin ees või mitte) 1-2 kraadi ja arvasin, et see ei saa olla nii usaldusväärne

2. PIR -andur. (https://www.sparkfun.com/products/13285) Seda odavat andurit turustatakse kui "liikumisandurit", kuid see tuvastab tõepoolest infrapunakiirguse muutusi, nii et teoreetiliselt võiks see töötada, kui inimene arvutist lahkudes tuvastaks anduri et.. Ka nendel anduritel on sisseehitatud ajalõpp ja tundlikkuse nupud. Nii et ma olen ühe haaranud ja sellega mänginud, kuid tundub, et andur ei ole loodud lähiala jaoks (sellel on lainurk), see andis igasuguseid valehoiatusi.

3. Näotuvastus veebikaamera abil. See valik tundus väga huvitav, kuna mängisin selle arvutiväljaga oma teistes projektides, näiteks: https://github.com/danionescu0/robot-camera-platfo… ja https://github.com/danionescu0/image-processing- pr…

See oli kook! Kuid sellel oli mõningaid puudusi: sülearvuti kaamerat ei saanud programmi töötamise ajal muuks otstarbeks kasutada ja selleks oleks vaja mõningaid arvutiressursse. Nii et olen ka selle idee maha jätnud.

Kui teil on rohkem ideid selle kohta, kuidas seda teha, palun jagage neid, aitäh!

Soovitan: