TryHackMe Basic Pentesting Writeup

Sıradaki içerik:

TryHackMe Basic Pentesting Writeup

PyAutoGUI ile Klavye Okuma ve Kontrol

293 okunma — 31 Temmuz 2023 20:55
avatar

Edanur Erdoğan

  • e

    Eğlenmiş

  • e

    Eğlenmiş

  • e

    Şaşırmış

  • e

    Kızgın

  • e

    Üzgün

PyAutoGUI ile Klavye Okuma ve Kontrol, otomasyon ve görsel tanıma işlemleri için kullanılmaktadır. Aynı zamanda bu tür işlemleri insan müdahalesi olmadan çalışabilen yani otomasyon yazılımı yazmamıza yardımcı olan bir Python kütüphanesidir.

Bu kütüphaneyi kullanarak;

  • fare hareketlerini görme,
  • fare istenilen konumda hareket ettirme,
  • klavye tuşlarını okuma,
  • ekran görüntüsü alma ve kaydetme,
  • ekranda istenilen yere tıklama,
  • mesaj kutusu oluşturma,
  • ekran boyutunu yatay ve dikey olarak bulma

ve tıpkı bunlar gibi birçok işlemi gerçekleştirebilirsiniz.

Kurulum için Python terminaline aşağıdaki komut yazın;

pip install pyautogui

PyAutoGui Komutları

PyAutoGui Fare Kontrolü

import pyautogui
print(pyautogui.position()) ## Point(x=1131, y=667)

Fare imlecinin ekran üzerinde nerede olduğunu, konumunu pixel olarak verir.

Bilgisayar ekranı koordinat sistemi gibi x ve y düzlemlerinden oluşur. Ekranın sol üst köşesi orijin yani (0,0) noktası olup x sağa doğru artar y ise aşağı doğru artar.

pyautogui.moveTo(x, y)
pyautogui.moveTo(None, y)
pyautogui.moveTo(x, None)

Fare imlecini ekran üzerinde istenilen x ve y koordinatlarına anında taşır. Eğer imlecin o anki konumundan sadece x veya y üzerinden hareket ettirmek isterseniz, sabit kalmasını istediğimiz düzlemine “None” yazabilirsiniz.

pyautogui.moveTo(x, y, duration)

Eğer anında değilde belirli bir süre içinde gitmesini istiyorsanuz farenin taşınmasını istediğimiz koordinatlardan sonra istenilen süre(duration) belirtin.

pyautogui.moveRel(x, y, duration)
pyautogui.moveRel(-x, y, duration)
pyautogui.moveRel(-x, -y, duration)

Fare imlecini olduğu konumdan birkaç piksel yer değişmesi için moveRel() fonksiyonu kullan. Sağa ve aşağı yer değiştirmesini istersek artı, sola ve yukarı ise eksi değer yazılılır. Aynı şekilde yine istenilirse süre eklenebir.

Buraya kadar olan komutlar farenin konumu ile ilgiliydi şimdi ise farenin tıklanmasıyla ilgili komutlara bakalım. İlk komut olarak “click()” fonksiyonunu inceleyeceğiz.

pyautogui.click(x, y)

Bu fonksiyon ile fare imleci x ve y koordinatına gider ve orada farenin sol butonuna bir kere tıklar. Eğer herhangi bir koordinat verilmezse fare imlecinin olduğu yerde tıklama yapar.

pyautogui.click(clicks=a)
pyautogui.click(x, y, clicks=a)
pyautogui.click(x, y, clicks=a, interval=süre)

Birden fazla tıklama yapmak için parantez içindeki “a” yerine tıklanmasını istediğiniz sayıyı yazınız. Aynı şekilde burada da koordinat belirtebilirsiniz.

Tıklamaların arasında belirli bir süre beklenmesini isterseniz “interval” yazılarak süreyi belirtiniz.

pyautogui.click(button=”right”, clicks=a)
pyautogui.click(x, y, button=”right”, clicks=a)
pyautogui.click(button=”right”, clicks=a, interval=süre)

Farede sağ butona tıklamak için yukarıdaki gibi “button” eklenir.

pyautogui.doubleClick(x, y)
pyautogui.rightClick(x, y)
pyautogui.scroll(amount)

Belirtilen koordinatta; çift tıklamak için “doubleClick()” , sağ tıklamamk için “rightClick()” fonksiyonları kullanılabilir.

Farenin tekerleğini aşağı yukarı kaydırmak için “scroll()” fonksiyonu kullanılır. Burada “amount” parametresi kaydırmak istenilen miktarı belirtir. Bunun yanında pozitif bir değer verirseniz tekerleği yukarı, negatif bir değer verirseniz aşağı kaydırır. Tabi bu hareket her uygulamada farklı algılanabilir.

Fareye tıklanmak dışında basılı tutulup bırakılma gibi eylemlerde yapılabilir. Bunun için aşağıdaki fonksiyonlar kullanılır.

pyautogui.mouseDown(x, y)
pyautogui.mouseUp(x, y)
pyautogui.mouseUp(button, x, y)

Burada “mouseDown()” ile butona basar ve “mouseUp()” ile de butona basmayı bırakır. Eğer koordinat verirseniz, verdiğiniz konuma geldikten sonra basar veya bırakır.

PyAutoGui Klavye Kontrolü

pyautogui.typewrite(“metin”)
pyautogui.typewrite(“metin”, interval=süre)

Belirtiğiniz metindeki karaktere klavye tuşlarına basarak yazar. Bunun yanında her karakter arasında bekleme olmasını isterseniz de “interval” parametresi ile süreyi belirtebilirsiniz.

pyautogui.press(“karakter”)
pyautogui.press([“karakter”, “karakter”])

Tek bir karaktere basmak için press() fonksiyonunu kullanırız. Ayrıca “typewrite()” fonksiyonunda “ctrl”, “win”, “left” gibi özel karakterlere basamazken “press()” fonksiyonunu kullanarak basabilirsiniz. Birden fazla karaktere basmak istersek yazdığımız her karakter arasına virgül yazılır.

pyautogui.hotkey(“karakter”, ”karakter”)

Klavye kısayollarını (“ctrl+a”, “ctrl+shift+esc”) kullanabilmek için kullanılan bir fonksiyondur. Kısayollarını kullanmak için bir başka yol olarak “keyDown()” tuşa basmak, “keyUp()” basılan tuşu bırakmak olarak kullanılan fonksiyonlarda kullanılabilir.

pyautogui.keyDown(“karakter”)
pyautogui.keyUp(“karakter”)

PyAutoGui Ekran komutları

Ekran_goruntusu = pyautogui.screenshot()
Ekran_goruntusu.save(“ekran_görüntü_adı”)

Ekran görüntüsü almaya yarar ve görüntüyü aldıktan sonra onu kaydetmek için “save()” fonksiyonu kullanılır. Burada ekran görüntüsü  Python komut sisteminde yapıldığında python’nın yüklü olduğu dizine kaydedilir.  

Ekran_goruntusu = Pyautogui.screenshot(“ekran_görüntü_adı”, region(x, y, width, height)

Ekranda belirli bir kısmın görüntüsünü almak isterseniz “region” parametresini kullan. Bu parametrede x, y değerlerine görüntüyü almaya başlayacağı noktanın koordinatı yazılır sonra x noktasından sağa doğru ne kadar genişliği, y noktasından da ne kadar aşağı doğru yani yüksekliği belirtilir.

print(pyautogui.size())

Bu fonksiyon ile ekranın boyutunu bulunur. Ekran boyutu bilgisayardan bilgisayara farklılık gösterir. Bu komutta genişliği ve yüksekliği ayrı ayrı yazdırmak istersek;

genislik, yukseklik= pyautogui.size()
print(“ekran genişliği= ”, genislik)
print(“ekran yüksekliği= ”, yukseklik)

PyAutoGui Mesaj Kutusu Komutları

pyautogui.alert(text=”Metin”, title=”başlık”)
pyautogui.alert(text=”Metin”, title=”başlık”, button=”buton_adı”)

Başlığı, butonu ve içinde yazdığımız metin olan basit bir uyarı mesaj kutusu gönderir. Bu mesaj kutusuna buton adı eklemezseniz program buton adını “ok” olarak tanımlar. Buton adına tıklayarak mesaj kutusunu kapatabilirsiniz.

buton
pyautogui.confirm(text=”Metin”, title=”başlık”)
pyautogui.confirm(text=”Metin”, title=”başlık”, buttons=[”buton_adı”, “buton_adı”])

Bu fonksiyon ile bir onay mesaj kutusu oluşturulur. Burada metin olarak bir metin, talimat veya soru sorulur ve evet yada hayır butonlarından birini seçmesini ister.

pyautogui.password(text=”Metin”, title=”başlık”, mask=*”)

Dışarıdan gizli bir metin girilmek istediğimizde “mask” parametresi, girilen metni istenilen karakter ile şifrelemek için kullanmalısın.

mesaj kutusu
pyautogui.prompt(text=”Metin”, title=”başlık”)

Dışarıdan metin girişi olan bir mesaj kutusu istersek “prompt()” fonksiyonunu kullanırız.

mesaj kutusu

Metin girildikten sonra yazdırılmasını istersek “print()” fonksiyonu kullan.

Metin=pyautogui.prompt(text=”Metin”, title=”başlık”)
print(Metin)

Diğer Komutlar

Yazdığımız kodu belirttiğimiz süre kadar çalışmasını durdurmak için kullanınız. Bu fonksiyon ile kodun çalışma süresini attırmak ya da gerek duyulduğunda bazı komutlar arasına yazılarak bekleme ihtiyacında kullanabilirsin.

pyautogui.FAILSAFE

Otomasyon çalışırken olabilecek herhangi bir beklenmedik durumda otomasyonun çalışmasını durdurmak ya da bekletmek için kullanmalısın.

Özet

import pyautogui

#----Fare Komutları----

print(pyautogui.position());  # Fare imlecinin ekrandaki konumunu yazdırır

pyautogui.moveTo(0,0,6)  # 6 saniyede fareyi (0,0) noktasına taşır

pyautogui.moveRel(0,0,6)  # Fare imlecini olduğu noktadan 6 saniyede fareyi (0,0) noktasına taşır

pyautogui.click(427,258);  # Ekranda (427,258) noktasına gider ve farede bir defa sol tıklar

pyautogui.doubleClick(427,258); # Ekranda (427,258) noktasına gider ve farede 2 defa sol tıklar

pyautogui.rightClick(427,258); # Ekranda (427,258) noktasına gider ve farede 2 defa sağ tıklar

pyautogui.scroll(-2591); # Farenin tekerleğini bir miktar aşağı kaydırır 

pyautogui.mouseDown(427,258); #  Ekranda (427,258) noktasına basar

pyautogui.mouseUp(427,258);  #  Ekranda (427,258) noktasına basmayı bırakır

#----Klavye Komutları----

pyautogui.typewrite("Hacktorx",interval=1) # Her karakter arasında 1sn bekleyerek ekrana Hacktorx yazdırır

print(pyautogui.press(["ctrl","a"])); # Klavye tuşlarında basarak ctrl ve a tuşlarına tıklar

pyautogui.hotkey("ctrl","a");  # Klavye tuşlarında basarak ctrl+a kısayolunu çalıştırır

#----Ekran Komutları----

Ekran_goruntusu = pyautogui.screenshot() # Ekran görüntüsü alır

Ekran_goruntusu.save("ekran_görüntü_1") # Ekran görüntüsünü kaydeder 

print(pyautogui.size());  # Ekran boyutunu yazdırır

#----Mesaj Kutusu İşlemleri----

pyautogui.alert( text="Yine ziyaret etmeyi unutmayınız", title="Hacktorx") # Uyarı mesaj kutusu gösterir

pyautogui.confirm(text="Sevdiniz mi?", title="Hacktorx", buttons=["Evet","Tabii ki"]) # Onay mesaj kutusu gösterir

pyautogui.password(text="şifre", title="Hacktorx", mask="*") # Yazılan metnin karakterlerini "*" olarak gösterir

pyautogui.prompt(text="Düşünceleriniz", title="Hacktorx") #Dışarıdan metin girişi olan mesaj kutusu gösterir

#----Diğer Komutlar----

pyautogui.sleep(3) # Kodun çalışmasını 3sn bekletir

pyautogui.FAILSAFE # Kod çalışırken hata oluşması durumunda kodun çalışmasını durdurur

PyAutoGUI ile ilgili dökümantasyonun tamamına buradan ulaşabilirsiniz.

Aklınıza takılan sorular için [email protected] mail adresinden bana ulaşıp ve diğer yazılarımı ise buraya tıklayarak okuyabilirsin.

  • Site İçi Yorumlar

En az 10 karakter gerekli

Gönderdiğiniz yorum moderasyon ekibi tarafından incelendikten sonra yayınlanacaktır.