86 lines
2.4 KiB
PowerShell
86 lines
2.4 KiB
PowerShell
Set-StrictMode -Version Latest
|
|
|
|
$TestScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
|
|
$ModuleRoot = Resolve-Path "$TestScriptRoot\.."
|
|
$ModuleManifest = "$ModuleRoot\Exfiltration\Exfiltration.psd1"
|
|
|
|
Remove-Module [E]xfiltration
|
|
Import-Module $ModuleManifest -Force -ErrorAction Stop
|
|
|
|
Describe 'Get-Keystrokes' {
|
|
|
|
if (Test-Path "$($env:TEMP)\key.log") { Remove-Item -Force "$($env:TEMP)\key.log" }
|
|
$WindowTitle = (Get-Process -Id $PID).MainWindowTitle
|
|
|
|
$Shell = New-Object -ComObject wscript.shell
|
|
$Shell.AppActivate($WindowTitle)
|
|
|
|
$KeyLogger = Get-Keystrokes -PassThru
|
|
Start-Sleep -Seconds 1
|
|
|
|
$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 }
|
|
|
|
$KeyObjects = Get-Content -Path "$($env:TEMP)\key.log" | ConvertFrom-Csv
|
|
|
|
It 'Should log keystrokes' {
|
|
$FileLength = (Get-Item "$($env:TEMP)\key.log").Length
|
|
$FileLength | Should BeGreaterThan 14
|
|
}
|
|
|
|
It 'Should get foreground window title' {
|
|
$KeyObjects[0].WindowTitle | Should Be $WindowTitle
|
|
}
|
|
|
|
It 'Should log time of key press' {
|
|
$KeyTime = [DateTime]::Parse($KeyObjects[0].Time)
|
|
$KeyTime.GetType().Name | Should Be 'DateTime'
|
|
}
|
|
|
|
It 'Should stop logging after timeout' {
|
|
|
|
$Timeout = 0.05
|
|
$KeyLogger = Get-Keystrokes -Timeout $Timeout -PassThru
|
|
|
|
Start-Sleep -Seconds 4
|
|
|
|
$KeyLogger.Runspace.RunspaceAvailability | Should Be 'Available'
|
|
$KeyLogger.Dispose()
|
|
}
|
|
|
|
Remove-Item -Force "$($env:TEMP)\key.log"
|
|
}
|
|
|
|
Describe "Get-MicrophoneAudio" {
|
|
|
|
$RecordPath = "$env:TEMP\test_record.wav"
|
|
$RecordLen = 2
|
|
Context 'Successful Recording' {
|
|
BeforeEach {
|
|
#Ensure the recording as been removed prior to testing
|
|
Remove-Item -Path $RecordPath -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
AfterEach {
|
|
#Remove the recording after testing
|
|
Remove-Item -Path $RecordPath -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
It 'should record audio from the microphone and save it to a specified path' {
|
|
$result = Get-MicrophoneAudio -Path $RecordPath -Length $RecordLen
|
|
$result | Should Not BeNullOrEmpty
|
|
$result.Length | Should BeGreaterThan 0
|
|
}
|
|
|
|
}
|
|
|
|
Context 'Invalid Arguments' {
|
|
It 'should not allow invalid paths to be used' {
|
|
{ Get-MicrophoneAudio -Path "c:\FAKEPATH\yay.wav" -Length RecordLen} | Should Throw
|
|
}
|
|
}
|
|
|
|
}
|