aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Davis <jdalton.davis@gmail.com>2016-01-13 21:02:50 -0600
committerJesse Davis <jdalton.davis@gmail.com>2016-01-13 21:02:50 -0600
commit759bd481ae57e450fd6fb371690014e67411ac98 (patch)
treef5bd5f7e0575758ab9c9f9700d9ce56a2ef6713e
parentf66e219bd633bfcab96b5f34bfcaf86d3984faaf (diff)
downloadPowerSploit-759bd481ae57e450fd6fb371690014e67411ac98.tar.gz
PowerSploit-759bd481ae57e450fd6fb371690014e67411ac98.zip
Fixed Pester/PassThru
-rw-r--r--Exfiltration/Get-Keystrokes.ps18
-rw-r--r--Tests/Exfiltration.tests.ps110
2 files changed, 11 insertions, 7 deletions
diff --git a/Exfiltration/Get-Keystrokes.ps1 b/Exfiltration/Get-Keystrokes.ps1
index d78f9c2..3a7d1dc 100644
--- a/Exfiltration/Get-Keystrokes.ps1
+++ b/Exfiltration/Get-Keystrokes.ps1
@@ -19,6 +19,10 @@ function Get-Keystrokes {
Specifies the interval in minutes to capture keystrokes. By default, keystrokes are captured indefinitely.
+.PARAMETER PassThru
+
+ Returns the keylogger's PowerShell object, so that it may manipulated (disposed) by the user; primarily for testing purposes.
+
.EXAMPLE
Get-Keystrokes -LogPath C:\key.log
@@ -43,7 +47,7 @@ function Get-Keystrokes {
[Double]$Timeout,
[Parameter()]
- [Switch]$Return
+ [Switch]$PassThru
)
$LogPath = Join-Path (Resolve-Path (Split-Path -Parent $LogPath)) (Split-Path -Leaf $LogPath)
@@ -368,5 +372,5 @@ function Get-Keystrokes {
# Start KeyLogger
[void]$PowerShell.BeginInvoke()
- if ($Return.IsPresent) { return $PowerShell }
+ if ($PassThru.IsPresent) { return $PowerShell }
} \ No newline at end of file
diff --git a/Tests/Exfiltration.tests.ps1 b/Tests/Exfiltration.tests.ps1
index baeebb8..064ebfe 100644
--- a/Tests/Exfiltration.tests.ps1
+++ b/Tests/Exfiltration.tests.ps1
@@ -15,10 +15,10 @@ Describe 'Get-Keystrokes' {
$Shell = New-Object -ComObject wscript.shell
$Shell.AppActivate($WindowTitle)
- $KeyLogger = Get-Keystrokes -Return
+ $KeyLogger = Get-Keystrokes -PassThru
Start-Sleep -Seconds 1
- $Shell.SendKeys('Pester is SUPER l337!')
+ $Shell.SendKeys("Pester`b`b`b`b`b`b")
$KeyLogger.Dispose()
It 'Should output to file' { Test-Path "$($env:TEMP)\key.log" | Should Be $true }
@@ -28,7 +28,7 @@ Describe 'Get-Keystrokes' {
It 'Should log all keystrokes' {
$Keys = $KeyObjects | % { $_.TypedKey }
$String = -join $Keys
- $String | Should Be '<Shift>Pester< >is< ><Shift>S<Shift>U<Shift>P<Shift>E<Shift>R< >l337<Shift>!'
+ $String | Should Match 'Pester'
}
It 'Should get foreground window title' {
@@ -40,10 +40,10 @@ Describe 'Get-Keystrokes' {
$KeyTime.GetType().Name | Should Be 'DateTime'
}
- It 'Should stop logging Pester is SUPER l337!after timeout' {
+ It 'Should stop logging after timeout' {
$Timeout = 0.05
- $KeyLogger = Get-Keystrokes -Timeout $Timeout -Return
+ $KeyLogger = Get-Keystrokes -Timeout $Timeout -PassThru
Start-Sleep -Seconds 4