S_022025_RING Advertisement S_022025_RING Advertisement S_022025_RING Advertisement

Python a kybernetická bezpečnosť – 22. časť

0

Táto časť seriálu sa síce bude týkať bezpečnosti, ale z trošku zvláštneho až komického, no rovnako nebezpečného uhla pohľadu. Predstavíme tzv. automatizačnú knižnicu PyAutoGUI, ktorá dokáže kontrolovať klávesnicu a myš, čím umožňuje simulovať bežné vstupy z úrovne používateľa daného zariadenia. Na prvý pohľad by sa mohlo zdať, že ide o hračku, resp. zábavný nástroj. Ovládanie klávesnice a myši však potenciálnym útočníkom otvára cestu k obrovskému množstvu rôznych príležitostí, ako poškodiť zariadenia obetí. Len si predstavme, že spustením nechceného kódu možno iba jednoduchým simulovaním pohybu a klikania myšky zmazať naše drahocenné súbory alebo poprepisovať ich obsah. Komplexným prístupom možno spustiť ľubovoľnú aplikáciu a v nej vykonať ľubovoľnú činnosť. Dá sa napríklad spustiť poštový klient a možno napísať a zaslať nepeknú správu nášmu nadriadenému. Nehovoriac o tom, že príslušnou kombináciou klávesov a klikania myškou možno kompletne znefunkčniť operačný systém zariadenia alebo jeho aplikácie.

S_022025_S25 Advertisement

PyAutoGUI (https://pyautogui.readthedocs.io)

Ide o knižnicu Python, ktorá je určená na automatizáciu úloh, ktoré sú plnené prostredníctvom klávesnice a myši počas interakcie s grafickým používateľským rozhraním (GUI) daného zariadenia. PyAutoGUI dokáže zabezpečiť interakciu v nasledujúcich oblastiach:

1. písanie (typing) na klávesnici, simulácia stláčania funkčných klávesov a tzv. hotkeys kombinácií,

2. pohyb (move), ťahanie (drag) a klikanie (click) myškou,

3. vytváranie snímok obrazovky (screenshots),

4. identifikácia a správa aplikačných okien,

5. zobrazovanie informačných (alert, message) okien.

Knižnica je prioritne určená na automatizáciu činností. Konkrétne môžeme spomenúť napr. automatizáciu vstupu údajov, automatizované testovanie a validáciu vrátane testovania webových aplikácií, ďalej automatizáciu opakujúcich sa aktivít, vyplňovanie formulárov, ale aj automatizáciu správcovských úloh. Ak však vezmeme do úvahy, čo všetko sa dá robiť s klávesnicou a myškou v prípade, že by sme ich dokázali ovládnuť príslušným kódom, získavame veľmi silný nástroj na riešenie rôznych záškodníckych činností. Nemusíme pritom hneď mazať súbory alebo znefunkčňovať operačný systém. Stačí, ak začneme napr. tým, že používateľovi (obeti) nakreslíme na obrazovku nejaký nepekný obrázok alebo zanecháme nechutný odkaz. Veľmi nepríjemná je už len obyčajná simulácia náhodného pohybu myšky, čím obeti totálne znemožníme interakciu so zariadením.

PyAutoGUI je dostupná na rôznych platformách vrátane Windows, Mac OS a Linuxu. Je pochopiteľné, že niektoré jej funkcie nemusia fungovať správne vo virtuálnom prostredí, kde môžeme mať problémy aj s vytváraním snímok obrazovky, resp. vykonávaním niektorých špecifických príkazov.

Funkcionalita knižnice PyAutoGUI

Inštaláciu knižnice PyAutoGUI vykonáme veľmi jednoducho spustením príkazu pip3 install pyautogui. Pretože je množstvo funkcií, ktoré knižnica ponúka, relatívne malé, môžeme si ich uviesť v jednoduchom spoločnom prehľade:

write(), typewrite()

Simulácia zadania textu pomocou klávesnice

press()

Simulácia stlačenia a uvoľnenia klávesu

keyDown(), keyUp()

Stlačenie a podržanie klávesu, uvoľnenie podržaného klávesu

hold()

Podržanie klávesu v danom kontexte

Hotkey()

Zadanie hotkey kombinácie

size()

Získanie rozmeru obrazovky

position()

Získanie polohy myšky

onScreen()

Kontrola polohy oproti rozmerom obrazovky

move(), moveTo()

Posun myšky na určenú polohu

drag(), dragTo()

Tahanie myšky počas stlačenia jej tlačidla

click(), doubleClick()

Kliknutie tlačidla myšky

mouseDown(), mouseUp()

Stlačenie a uvoľnenie tlačidla myšky

scroll(), hscroll()

Rolovanie kolieska myšky

screenshot()

Získanie snímky obrazovky

locate(), locateOnScreen()

Získanie polohy zadaného obrázka

getpixel(), pixelMatchesColor()

Získanie hodnôt RGB daného pixela, kontrola zhody farieb pixela

alert()

Jednoduché okno so správou a tlačidlom OK

confirm()

Okno s otázkou a tlačidlami OK a Cancel

prompt()

Okno na zadanie textu s tlačidlami OK a Cancel

password()

Okno na zadanie hesla s tlačidlami OK a Cancel

 

Poznámka: Zoznam názvov konkrétnych funkčných klávesov a hotkeys je uvedený na stránke dokumentácie knižnice PyAutoGUI v časti KEYBOARD_KEYS.

Focus a timing

Pri používaní funkcií knižnice PyAutoGUI je nesmierne dôležité pracovať s požadovaným oknom vybranej aplikácie, pretože PyAutoGUI je jedno, kde smeruje výstup svojich funkcií. Ak napríklad chceme pracovať s konkrétnym oknom aplikácie LibreOffice, pred použitím funkcií PyAutoGUI je vhodné kliknúť v rámci daného okna, čím toto okno získa focus.

Ďalšia dôležitá podmienka úspešného používania funkcií PyAutoGUI je simulácia trvania vstupov z klávesnice a myšky. Bežnému človekovi určitý čas trvá, pokiaľ stlačí konkrétne klávesy a napíše celistvý text. Rovnako mu trvá, pokiaľ pohne myškou a stlačí jej tlačidlá. Navyše bežnému počítaču trvá, kým spustí želanú aplikáciu a otvorí jej okno. Jednotlivé funkcie PyAutoGUI teda musíme spúšťať so správnym timingom, resp. so správnymi časovými medzerami tak, aby sme počítaču umožnili správne zareagovať.

zapis_do_LibreOfficeCalc.py

V našom prípade sme funkcie knižnice PyAutoGUI použili na naprogramovanie triviálneho programu Python, ktorý prepíše interné údaje do tabuľky aplikácie LibreOffice Calc. Program v úvode otvára aplikáciu LibreOffice Calc, následne klikne myškou do jej okna, čím toto okno získa focus, a pokračuje v prepisovaní údajov z vnútornej premennej do tabuľky. O ukončení prepisu v závere informuje prostredníctvom jednoduchého informačného okna. Medzi jednotlivé funkcie sú vložené časové medzery tak, aby mal operačný systém čas zareagovať na požiadavky nášho programu.


Obr. 1 Tabuľka aplikácie LibreOffice Calc naplnená naším programom Python

Poznámka: Všetky zdrojové kódy možno stiahnuť zo stránky softengine.sk.

 

Zobrazit Galériu

Marek Sopko

Všetky autorove články

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať