diff --git a/Payloads/Debug/Debug.ps1 b/Payloads/Debug/Debug.ps1 new file mode 100644 index 0000000..0dc5d26 --- /dev/null +++ b/Payloads/Debug/Debug.ps1 @@ -0,0 +1,209 @@ + + +function Upload-Discord { + + [CmdletBinding()] + param ( + [parameter(Position=0,Mandatory=$False)] + [string]$file, + [parameter(Position=1,Mandatory=$False)] + [string]$text + ) + + $hookurl = 'https://discord.com/api/webhooks/1088110570106015784/3ykq-tfMf_H357zgZ2xQivHM1gAdCsRPggtdXm8xphG9nI0oa99a66BMzfMnBy8ODZwv' + + $Body = @{ + 'username' = $env:username + 'content' = $text + } + + if (-not ([string]::IsNullOrEmpty($text))){Invoke-RestMethod -ContentType 'Application/Json' -Uri $hookurl -Method Post -Body ($Body | ConvertTo-Json)}; + + if (-not ([string]::IsNullOrEmpty($file))){curl.exe -F "file1=@$file" $hookurl} +} + + +# ---------------------------------------------------------------------------------------------------------------------- + +function Resolve-ErrorRecord +{ + param( + [Parameter(Position=0, ValueFromPipeline=$true)] + [ValidateNotNull()] + [System.Management.Automation.ErrorRecord[]] + $ErrorRecord + ) + + Process + { + if (!$ErrorRecord) + { + if ($global:Error.Count -eq 0) + { + Write-Host "The `$Error collection is empty." + return + } + else + { + $ErrorRecord = @($global:Error[0]) + } + } + foreach ($record in $ErrorRecord) + { + $txt = @($record | Format-List * -Force | Out-String -Stream) + $txt += @($record.InvocationInfo | Format-List * | Out-String -Stream) + $Exception = $record.Exception + for ($i = 0; $Exception; $i++, ($Exception = $Exception.InnerException)) + { + $txt += "Exception at nesting level $i ---------------------------------------------------" + $txt += @($Exception | Format-List * -Force | Out-String -Stream) + } + + $txt | Foreach {$prevBlank=$false} { + if ($_.Trim().Length -gt 0) + { + $_ + $prevBlank = $false + } + elseif (!$prevBlank) + { + $_ + $prevBlank = $true + } + } + } + } +} + +# ---------------------------------------------------------------------------------------------------------------------- + +function Get-ScreenCss +{ + param() + + Process + { + '' + } +} + +# ---------------------------------------------------------------------------------------------------------------------- + + +function Get-ScreenHtml +{ + param($Count = $Host.UI.RawUI.WindowSize.Height) + + Begin + { + # Required by HttpUtility + Add-Type -Assembly System.Web + + $raw = $Host.UI.RawUI + $buffsz = $raw.BufferSize + + function BuildHtml($out, $buff) + { + function OpenElement($out, $fore, $back) + { + & { + $out.Append('') + } | out-null + } + + function CloseElement($out) { + $out.Append('') | out-null + } + + $height = $buff.GetUpperBound(0) + $width = $buff.GetUpperBound(1) + + $prev = $null + $whitespaceCount = 0 + + $out.Append("
") | out-null + + for ($y = 0; $y -lt $height; $y++) + { + for ($x = 0; $x -lt $width; $x++) + { + $current = $buff[$y, $x] + + if ($current.Character -eq ' ') + { + $whitespaceCount++ + write-debug "whitespaceCount: $whitespaceCount" + } + else + { + if ($whitespaceCount) + { + write-debug "appended $whitespaceCount spaces, whitespaceCount: 0" + $out.Append((new-object string ' ', $whitespaceCount)) | out-null + $whitespaceCount = 0 + } + + if ((-not $prev) -or + ($prev.ForegroundColor -ne $current.ForegroundColor) -or + ($prev.BackgroundColor -ne $current.BackgroundColor)) + { + if ($prev) { CloseElement $out } + + OpenElement $out $current.ForegroundColor $current.BackgroundColor + } + + $char = [System.Web.HttpUtility]::HtmlEncode($current.Character) + $out.Append($char) | out-null + $prev = $current + } + } + + $out.Append("`n") | out-null + $whitespaceCount = 0 + } + + if($prev) { CloseElement $out } + + $out.Append('') | out-null + } + } + + Process + { + $cursor = $raw.CursorPosition + + $rect = new-object Management.Automation.Host.Rectangle 0, ($cursor.Y - $Count), $buffsz.Width, $cursor.Y + $buff = $raw.GetBufferContents($rect) + + $out = new-object Text.StringBuilder + BuildHtml $out $buff + $out.ToString() + } +} + +# ---------------------------------------------------------------------------------------------------------------------- +function main { +$css = Get-ScreenCss +$html = Get-ScreenHtml + +echo $css > $env:tmp\jakobyHelpTicket.html +echo $html >> $env:tmp\jakobyhelpticket.html + +$errorRecord = Resolve-ErrorRecord +echo $errorRecord > $env:tmp\ErrorRecord.txt + +Upload-Discord -file $env:tmp\jakobyHelpTicket.html + +Upload-Discord -file $env:tmp\ErrorRecord.txt + +} + +main +# ---------------------------------------------------------------------------------------------------------------------- +# ----------------------------------------------------------------------------------------------------------------------