From 32b2ea04236efd5a689bbf1379326ec472fbb83a Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Wed, 7 Oct 2026 04:30:49 +0000 Subject: [PATCH] runtime: publish SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1 --- ...CHA-WATCHDOG-SANITIZED-SOURCE-99758R1.json | 38 +++ ...ACHA-WATCHDOG-SANITIZED-SOURCE-99758R1.txt | 208 ++++++++++++++++ runtime/latest.json | 16 +- runtime/latest.txt | 229 ++++++++++++------ 4 files changed, 409 insertions(+), 82 deletions(-) create mode 100644 runtime/history/SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1.json create mode 100644 runtime/history/SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1.txt diff --git a/runtime/history/SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1.json b/runtime/history/SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1.json new file mode 100644 index 00000000..23c97665 --- /dev/null +++ b/runtime/history/SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "windows-dacha-watchdog-sanitized-source", + "started_at_utc": "2026-10-07T04:30:48Z", + "finished_at_utc": "2026-10-07T04:30:49Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "82372359d1dfece3cca84734e47b1a82a17c43fb88ef3c8c418ee0f99f500497", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": false, + "result_contract_valid": true, + "result_contract_status": null, + "result_contract_error": null, + "command_rc": 0, + "changes_made": false, + "rollback_started": false, + "rollback_restored": null, + "mutation_outcome": "NO_MUTATION", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02", + "sanitized_output_sha256": "07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE=V1\nMODE=read-only\nNO_MUTATION=true\nWINDOWS_LOCAL_INSPECT_RC=0\nWINDOWS_EVIDENCE_PRESENT=true\nWATCHDOG_SHORTCUT_MATCH_COUNT=1\nWATCHDOG_PS1_RESOLVED=true\nWATCHDOG_PS1_BASENAME=watchdog.ps1\nWATCHDOG_PS1_SIZE=5001\nWATCHDOG_LINE_COUNT=169\nSANITIZED_SOURCE_BEGIN\nSRC|001|$ErrorActionPreference='SilentlyContinue'\nSRC|003|$HostKey=''\nSRC|004|$PlinkPath=' Files\\PuTTY\\plink.exe'\nSRC|005|$Target=''\nSRC|006|$FailureStreak=0\nSRC|008|function Get-Listeners {\nSRC|009| try {\nSRC|010| return @(Get-NetTCPConnection -State Listen -LocalPort 64020 -ErrorAction SilentlyContinue)\nSRC|011| } catch {\nSRC|012| return @()\nSRC|013| }\nSRC|014|}\nSRC|016|function Get-ProcessCommandLine([int]$processId) {\nSRC|017| try {\nSRC|018| $proc = Get-CimInstance Win32_Process -Filter \"ProcessId=$processId\"\nSRC|019| if ($proc) { return [string]$proc.CommandLine }\nSRC|020| } catch {}\nSRC|021| return ''\nSRC|022|}\nSRC|024|function Test-ExactOwner([int]$processId) {\nSRC|025| $commandLine = Get-ProcessCommandLine $processId\nSRC|026| if ([string]::IsNullOrWhiteSpace($commandLine)) { return $false }\nSRC|028| return (\nSRC|029| $commandLine -match '(?i)\\bplink(\\.exe)?\\b' -and\nSRC|030| $commandLine -match '(?i)-L\\s+127\\.0\\.0\\.1:64020:127\\.0\\.0\\.1:64020' -and\nSRC|031| $commandLine -match '(?i)root@192\\.168\\.50\\.11' -and\nSRC|032| $commandLine -match [regex]::Escape($HostKey)\nSRC|033| )\nSRC|034|}\nSRC|036|function Test-Tcp22 {\nSRC|037| $client = $null\nSRC|038| try {\nSRC|039| $client = New-Object Net.Sockets.TcpClient\nSRC|040| $task = $client.ConnectAsync($Target, 22)\nSRC|041| if (-not $task.Wait(1800)) { return $false }\nSRC|042| return $client.Connected\nSRC|043| } catch {\nSRC|044| return $false\nSRC|045| } finally {\nSRC|046| try { if ($client) { $client.Close() } } catch {}\nSRC|047| }\nSRC|048|}\nSRC|050|function Test-Tcp64020 {\nSRC|051| $client = $null\nSRC|052| try {\nSRC|053| $client = New-Object Net.Sockets.TcpClient\nSRC|054| $task = $client.ConnectAsync('', 64020)\nSRC|055| if (-not $task.Wait(1200)) { return $false }\nSRC|056| return $client.Connected\nSRC|057| } catch {\nSRC|058| return $false\nSRC|059| } finally {\nSRC|060| try { if ($client) { $client.Close() } } catch {}\nSRC|061| }\nSRC|062|}\nSRC|064|function Test-Socks {\nSRC|065| $curl = (Get-Command curl.exe -ErrorAction SilentlyContinue).Source\nSRC|066| if (-not $curl) { return $false }\nSRC|068| try {\nSRC|069| $code = ((& $curl '-sS' '-o' 'NUL' '--connect-timeout' '4' '--max-time' '10' '-w' '%{http_code}' '--socks5-hostname' ':64020' 'https://api.telegram.org' 2>$null) | Out-String).Trim()\nSRC|070| return ($LASTEXITCODE -eq 0 -and $code -match '^[1-5][0-9][0-9]$' -and $code -ne '000')\nSRC|071| } catch {\nSRC|072| return $false\nSRC|073| }\nSRC|074|}\nSRC|076|function Get-ExactPlinkPids {\nSRC|077| $result = New-Object 'System.Collections.Generic.List[int]'\nSRC|078| try {\nSRC|079| foreach ($proc in (Get-CimInstance Win32_Process -Filter \"Name='plink.exe'\" -ErrorAction SilentlyContinue)) {\nSRC|080| if (Test-ExactOwner ([int]$proc.ProcessId)) {\nSRC|081| $result.Add([int]$proc.ProcessId)\nSRC|082| }\nSRC|083| }\nSRC|084| } catch {}\nSRC|085| return @($result | Sort-Object -Unique)\nSRC|086|}\nSRC|088|function Start-Route {\nSRC|089| if (-not (Test-Path -LiteralPath $PlinkPath -PathType Leaf)) { return $false }\nSRC|090| if (-not (Test-Tcp22)) { return $false }\nSRC|092| $proc = $null\nSRC|093| try {\nSRC|094| $psi = New-Object Diagnostics.ProcessStartInfo\nSRC|095| $psi.FileName = $PlinkPath\nSRC|096| $psi.UseShellExecute = $false\nSRC|097| $psi.CreateNoWindow = $true\nSRC|098| $psi.Arguments = \"-batch -agent -noshare -no-antispoof -ssh -4 -P 22 -hostkey -N -L :64020::64020 @\"\nSRC|099| $proc = [Diagnostics.Process]::Start($psi)\nSRC|100| } catch {\nSRC|101| return $false\nSRC|102| }\nSRC|104| if ($null -eq $proc) { return $false }\nSRC|106| for ($i = 1; $i -le 30; $i++) {\nSRC|107| Start-Sleep -Milliseconds 500\nSRC|108| $rows = Get-Listeners\nSRC|109| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique)\nSRC|111| if ($owners.Count -eq 1 -and $owners[0] -eq $proc.Id -and (Test-Tcp64020)) {\nSRC|112| return $true\nSRC|113| }\nSRC|115| try {\nSRC|116| if ($proc.HasExited) { break }\nSRC|117| } catch {}\nSRC|118| }\nSRC|120| try {\nSRC|121| if (-not $proc.HasExited) {\nSRC|122| Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue\nSRC|123| }\nSRC|124| } catch {}\nSRC|126| return $false\nSRC|127|}\nSRC|129|while ($true) {\nSRC|130| $rows = Get-Listeners\nSRC|131| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique)\nSRC|133| if ($rows.Count -eq 0) {\nSRC|134| $FailureStreak = 0\nSRC|136| foreach ($staleProcessId in (Get-ExactPlinkPids)) {\nSRC|137| try {\nSRC|138| Stop-Process -Id $staleProcessId -Force -ErrorAction SilentlyContinue\nSRC|139| } catch {}\nSRC|140| }\nSRC|142| Start-Route | Out-Null\nSRC|143| }\nSRC|144| elseif ($owners.Count -eq 1 -and (Test-ExactOwner ([int]$owners[0]))) {\nSRC|145| if (Test-Socks) {\nSRC|146| $FailureStreak = 0\nSRC|147| }\nSRC|148| else {\nSRC|149| $FailureStreak++\nSRC|151| if ($FailureStreak -ge 3) {\nSRC|152| try {\nSRC|153| Stop-Process -Id ([int]$owners[0]) -Force -ErrorAction SilentlyContinue\nSRC|154| } catch {}\nSRC|156| $FailureStreak = 0\nSRC|157| Start-Sleep -Seconds 1\nSRC|158| Start-Route | Out-Null\nSRC|159| }\nSRC|160| }\nSRC|161| }\nSRC|162| else {\nSRC|163| # Safety hold: never terminate an unknown or competing owner.\nSRC|164| $FailureStreak = 0\nSRC|165| }\nSRC|167| Start-Sleep -Seconds 12\nSRC|168|}\nSANITIZED_SOURCE_END\nRUNNING_WATCHDOG_PS_COUNT=2\nRUNNING_BRIDGE_PS_COUNT=2\nREC|CURRENT_PLINK|IDX=1|HAS_R=false|HAS_L=true|HAS_D=false|HAS_64020=true|HAS_64022=false|HAS_AGENT=true|HAS_BATCH=true|HAS_N=true\nCURRENT_PLINK_COUNT=1\nWATCHDOG_PS1_SHA256=7738599c1d229c105f1073f04b420063bd776f3444b3f6fcf7d09bd320cce0e3\nWATCHDOG_PS1_SHA_MATCH=true\nPVE64020_LISTENER_COUNT=0\nPVE64020_SSHD_OWNER_COUNT=0\nCLUSTER_QUORATE=true\nNETBIRD_LAZY=false\nNETBIRD_MANAGEMENT=true\nNETBIRD_SIGNAL=true\nNETBIRD_CONNECTED=5\nDECISION=PASS_WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE\nNEXT_GATE=EXACT_WATCHDOG_LOGIC_REPAIR\nTASK_RESULT=WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" +} diff --git a/runtime/history/SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1.txt b/runtime/history/SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1.txt new file mode 100644 index 00000000..e9052e5a --- /dev/null +++ b/runtime/history/SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1.txt @@ -0,0 +1,208 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=windows-dacha-watchdog-sanitized-source +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=82372359d1dfece3cca84734e47b1a82a17c43fb88ef3c8c418ee0f99f500497 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGE_DECLARED=false +RESULT_CONTRACT_VALID=true +RESULT_CONTRACT_STATUS=NOT_APPLICABLE +RESULT_CONTRACT_ERROR=NONE +COMMAND_RC=0 +CHANGES_MADE=false +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=NO_MUTATION +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02 +SANITIZED_OUTPUT_SHA256=07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02 +OUTPUT_BEGIN +WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE=V1 +MODE=read-only +NO_MUTATION=true +WINDOWS_LOCAL_INSPECT_RC=0 +WINDOWS_EVIDENCE_PRESENT=true +WATCHDOG_SHORTCUT_MATCH_COUNT=1 +WATCHDOG_PS1_RESOLVED=true +WATCHDOG_PS1_BASENAME=watchdog.ps1 +WATCHDOG_PS1_SIZE=5001 +WATCHDOG_LINE_COUNT=169 +SANITIZED_SOURCE_BEGIN +SRC|001|$ErrorActionPreference='SilentlyContinue' +SRC|003|$HostKey='' +SRC|004|$PlinkPath=' Files\PuTTY\plink.exe' +SRC|005|$Target='' +SRC|006|$FailureStreak=0 +SRC|008|function Get-Listeners { +SRC|009| try { +SRC|010| return @(Get-NetTCPConnection -State Listen -LocalPort 64020 -ErrorAction SilentlyContinue) +SRC|011| } catch { +SRC|012| return @() +SRC|013| } +SRC|014|} +SRC|016|function Get-ProcessCommandLine([int]$processId) { +SRC|017| try { +SRC|018| $proc = Get-CimInstance Win32_Process -Filter "ProcessId=$processId" +SRC|019| if ($proc) { return [string]$proc.CommandLine } +SRC|020| } catch {} +SRC|021| return '' +SRC|022|} +SRC|024|function Test-ExactOwner([int]$processId) { +SRC|025| $commandLine = Get-ProcessCommandLine $processId +SRC|026| if ([string]::IsNullOrWhiteSpace($commandLine)) { return $false } +SRC|028| return ( +SRC|029| $commandLine -match '(?i)\bplink(\.exe)?\b' -and +SRC|030| $commandLine -match '(?i)-L\s+127\.0\.0\.1:64020:127\.0\.0\.1:64020' -and +SRC|031| $commandLine -match '(?i)root@192\.168\.50\.11' -and +SRC|032| $commandLine -match [regex]::Escape($HostKey) +SRC|033| ) +SRC|034|} +SRC|036|function Test-Tcp22 { +SRC|037| $client = $null +SRC|038| try { +SRC|039| $client = New-Object Net.Sockets.TcpClient +SRC|040| $task = $client.ConnectAsync($Target, 22) +SRC|041| if (-not $task.Wait(1800)) { return $false } +SRC|042| return $client.Connected +SRC|043| } catch { +SRC|044| return $false +SRC|045| } finally { +SRC|046| try { if ($client) { $client.Close() } } catch {} +SRC|047| } +SRC|048|} +SRC|050|function Test-Tcp64020 { +SRC|051| $client = $null +SRC|052| try { +SRC|053| $client = New-Object Net.Sockets.TcpClient +SRC|054| $task = $client.ConnectAsync('', 64020) +SRC|055| if (-not $task.Wait(1200)) { return $false } +SRC|056| return $client.Connected +SRC|057| } catch { +SRC|058| return $false +SRC|059| } finally { +SRC|060| try { if ($client) { $client.Close() } } catch {} +SRC|061| } +SRC|062|} +SRC|064|function Test-Socks { +SRC|065| $curl = (Get-Command curl.exe -ErrorAction SilentlyContinue).Source +SRC|066| if (-not $curl) { return $false } +SRC|068| try { +SRC|069| $code = ((& $curl '-sS' '-o' 'NUL' '--connect-timeout' '4' '--max-time' '10' '-w' '%{http_code}' '--socks5-hostname' ':64020' 'https://api.telegram.org' 2>$null) | Out-String).Trim() +SRC|070| return ($LASTEXITCODE -eq 0 -and $code -match '^[1-5][0-9][0-9]$' -and $code -ne '000') +SRC|071| } catch { +SRC|072| return $false +SRC|073| } +SRC|074|} +SRC|076|function Get-ExactPlinkPids { +SRC|077| $result = New-Object 'System.Collections.Generic.List[int]' +SRC|078| try { +SRC|079| foreach ($proc in (Get-CimInstance Win32_Process -Filter "Name='plink.exe'" -ErrorAction SilentlyContinue)) { +SRC|080| if (Test-ExactOwner ([int]$proc.ProcessId)) { +SRC|081| $result.Add([int]$proc.ProcessId) +SRC|082| } +SRC|083| } +SRC|084| } catch {} +SRC|085| return @($result | Sort-Object -Unique) +SRC|086|} +SRC|088|function Start-Route { +SRC|089| if (-not (Test-Path -LiteralPath $PlinkPath -PathType Leaf)) { return $false } +SRC|090| if (-not (Test-Tcp22)) { return $false } +SRC|092| $proc = $null +SRC|093| try { +SRC|094| $psi = New-Object Diagnostics.ProcessStartInfo +SRC|095| $psi.FileName = $PlinkPath +SRC|096| $psi.UseShellExecute = $false +SRC|097| $psi.CreateNoWindow = $true +SRC|098| $psi.Arguments = "-batch -agent -noshare -no-antispoof -ssh -4 -P 22 -hostkey -N -L :64020::64020 @" +SRC|099| $proc = [Diagnostics.Process]::Start($psi) +SRC|100| } catch { +SRC|101| return $false +SRC|102| } +SRC|104| if ($null -eq $proc) { return $false } +SRC|106| for ($i = 1; $i -le 30; $i++) { +SRC|107| Start-Sleep -Milliseconds 500 +SRC|108| $rows = Get-Listeners +SRC|109| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique) +SRC|111| if ($owners.Count -eq 1 -and $owners[0] -eq $proc.Id -and (Test-Tcp64020)) { +SRC|112| return $true +SRC|113| } +SRC|115| try { +SRC|116| if ($proc.HasExited) { break } +SRC|117| } catch {} +SRC|118| } +SRC|120| try { +SRC|121| if (-not $proc.HasExited) { +SRC|122| Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue +SRC|123| } +SRC|124| } catch {} +SRC|126| return $false +SRC|127|} +SRC|129|while ($true) { +SRC|130| $rows = Get-Listeners +SRC|131| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique) +SRC|133| if ($rows.Count -eq 0) { +SRC|134| $FailureStreak = 0 +SRC|136| foreach ($staleProcessId in (Get-ExactPlinkPids)) { +SRC|137| try { +SRC|138| Stop-Process -Id $staleProcessId -Force -ErrorAction SilentlyContinue +SRC|139| } catch {} +SRC|140| } +SRC|142| Start-Route | Out-Null +SRC|143| } +SRC|144| elseif ($owners.Count -eq 1 -and (Test-ExactOwner ([int]$owners[0]))) { +SRC|145| if (Test-Socks) { +SRC|146| $FailureStreak = 0 +SRC|147| } +SRC|148| else { +SRC|149| $FailureStreak++ +SRC|151| if ($FailureStreak -ge 3) { +SRC|152| try { +SRC|153| Stop-Process -Id ([int]$owners[0]) -Force -ErrorAction SilentlyContinue +SRC|154| } catch {} +SRC|156| $FailureStreak = 0 +SRC|157| Start-Sleep -Seconds 1 +SRC|158| Start-Route | Out-Null +SRC|159| } +SRC|160| } +SRC|161| } +SRC|162| else { +SRC|163| # Safety hold: never terminate an unknown or competing owner. +SRC|164| $FailureStreak = 0 +SRC|165| } +SRC|167| Start-Sleep -Seconds 12 +SRC|168|} +SANITIZED_SOURCE_END +RUNNING_WATCHDOG_PS_COUNT=2 +RUNNING_BRIDGE_PS_COUNT=2 +REC|CURRENT_PLINK|IDX=1|HAS_R=false|HAS_L=true|HAS_D=false|HAS_64020=true|HAS_64022=false|HAS_AGENT=true|HAS_BATCH=true|HAS_N=true +CURRENT_PLINK_COUNT=1 +WATCHDOG_PS1_SHA256=7738599c1d229c105f1073f04b420063bd776f3444b3f6fcf7d09bd320cce0e3 +WATCHDOG_PS1_SHA_MATCH=true +PVE64020_LISTENER_COUNT=0 +PVE64020_SSHD_OWNER_COUNT=0 +CLUSTER_QUORATE=true +NETBIRD_LAZY=false +NETBIRD_MANAGEMENT=true +NETBIRD_SIGNAL=true +NETBIRD_CONNECTED=5 +DECISION=PASS_WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE +NEXT_GATE=EXACT_WATCHDOG_LOGIC_REPAIR +TASK_RESULT=WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE +CHANGES_MADE=false +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=NO_MUTATION +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 246a4877..23c97665 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SEMANTIC-RCA-FIXED-99757R1", + "command_id": "SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1", "status": "OK", "rc": 0, "host": "pve01", "mode": "read-only", - "component": "windows-dacha-watchdog-semantic-rca-fixed", - "started_at_utc": "2026-10-07T04:22:31Z", - "finished_at_utc": "2026-10-07T04:22:32Z", + "component": "windows-dacha-watchdog-sanitized-source", + "started_at_utc": "2026-10-07T04:30:48Z", + "finished_at_utc": "2026-10-07T04:30:49Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "d5305a2592091a0bdee6810e59ff416686ecc668a271cefb00b941af34166b35", + "command_sha256": "82372359d1dfece3cca84734e47b1a82a17c43fb88ef3c8c418ee0f99f500497", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "daf114282e48c0472fc1f454fcc68053228fae8fbc85e996097870cdac05d508", - "sanitized_output_sha256": "daf114282e48c0472fc1f454fcc68053228fae8fbc85e996097870cdac05d508", + "raw_evidence_sha256": "07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02", + "sanitized_output_sha256": "07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "WINDOWS_DACHA_WATCHDOG_SEMANTIC_RCA_FIXED=V1\nMODE=read-only\nNO_MUTATION=true\nWINDOWS_LOCAL_INSPECT_RC=0\nWINDOWS_EVIDENCE_PRESENT=true\nWATCHDOG_SHORTCUT_MATCH_COUNT=1\nWATCHDOG_PS1_RESOLVED=true\nWATCHDOG_PS1_BASENAME=watchdog.ps1\nWATCHDOG_PS1_SIZE=5001\nWATCHDOG_LINE_COUNT=169\nWATCHDOG_HAS_CALL_OPERATOR=true\nWATCHDOG_HAS_START_PROCESS=false\nWATCHDOG_HAS_PROCESS_START=true\nWATCHDOG_HAS_INVOKE_EXPRESSION=false\nWATCHDOG_HAS_GET_NETTCP=true\nWATCHDOG_HAS_TEST_NETCONNECTION=false\nWATCHDOG_HAS_TCPCLIENT=true\nWATCHDOG_HAS_WHILE=true\nWATCHDOG_HAS_TRY=true\nWATCHDOG_HAS_CATCH=true\nWATCHDOG_HAS_EXIT=true\nWATCHDOG_HAS_RETURN=true\nWATCHDOG_HAS_SLEEP=true\nWATCHDOG_HAS_LOG_WRITE=false\nWATCHDOG_FORWARD_LITERAL_COUNT=0\nREC|SEM_LINE|LINE=4|PORTS=|VARS=plinkpath|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=8|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=true|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=10|PORTS=64020|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=true|LOCALPORT=true|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=true|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=12|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=19|PORTS=|VARS=proc|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=21|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=26|PORTS=|VARS=commandline,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=28|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=29|PORTS=|VARS=commandline|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=30|PORTS=127,1,64020,127,1,64020|VARS=commandline|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=41|PORTS=1800|VARS=task,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=42|PORTS=|VARS=client|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=44|PORTS=|VARS=false|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=50|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=54|PORTS=127,1,64020|VARS=task,client|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=55|PORTS=1200|VARS=task,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=56|PORTS=|VARS=client|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=58|PORTS=|VARS=false|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=66|PORTS=|VARS=curl,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=69|PORTS=4,10,127,1,64020,2|VARS=code,curl,null|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=true|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=70|PORTS=1,5,9,9|VARS=lastexitcode,code|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=true|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=72|PORTS=|VARS=false|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=76|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=79|PORTS=|VARS=proc|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=85|PORTS=|VARS=result|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=88|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=true|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=89|PORTS=|VARS=plinkpath,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=90|PORTS=|VARS=false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=94|PORTS=|VARS=psi|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=true|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=95|PORTS=|VARS=psi,plinkpath|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=98|PORTS=4,22,127,1,64020,127,1,64020,192,168,50,11|VARS=psi,hostkey|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=101|PORTS=|VARS=false|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=104|PORTS=|VARS=null,proc,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=106|PORTS=1,30|VARS=i|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=107|PORTS=500|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=true\nREC|SEM_LINE|LINE=108|PORTS=|VARS=rows|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=true|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=111|PORTS=1|VARS=owners,proc|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=112|PORTS=|VARS=true|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=116|PORTS=|VARS=proc|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=true|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=121|PORTS=|VARS=proc|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=true|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=126|PORTS=|VARS=false|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false\nREC|SEM_LINE|LINE=129|PORTS=|VARS=true|ASSIGN=false|IF=false|ELSE=false|WHILE=true|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=130|PORTS=|VARS=rows|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=true|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=136|PORTS=|VARS=staleprocessid|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=142|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=true|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=157|PORTS=1|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=true\nREC|SEM_LINE|LINE=158|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=true|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false\nREC|SEM_LINE|LINE=167|PORTS=12|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=true\nWATCHDOG_RELEVANT_LINE_COUNT=48\nRUNNING_WATCHDOG_PS_COUNT=2\nRUNNING_BRIDGE_PS_COUNT=2\nREC|CURRENT_PLINK|IDX=1|HAS_R=false|HAS_L=true|HAS_D=false|HAS_64020=true|HAS_64022=false|HAS_AGENT=true|HAS_BATCH=true|HAS_N=true\nCURRENT_PLINK_COUNT=1\nWATCHDOG_PS1_SHA256=7738599c1d229c105f1073f04b420063bd776f3444b3f6fcf7d09bd320cce0e3\nWATCHDOG_PS1_SHA_MATCH=true\nPVE64020_LISTENER_COUNT=0\nPVE64020_SSHD_OWNER_COUNT=0\nCLUSTER_QUORATE=true\nNETBIRD_LAZY=false\nNETBIRD_MANAGEMENT=true\nNETBIRD_SIGNAL=true\nNETBIRD_CONNECTED=5\nDECISION=PASS_WINDOWS_DACHA_WATCHDOG_SEMANTIC_RCA_FIXED\nNEXT_GATE=EXACT_WATCHDOG_BRANCH_REPAIR\nTASK_RESULT=WINDOWS_DACHA_WATCHDOG_SEMANTIC_RCA_FIXED\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SEMANTIC-RCA-FIXED-99757R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" + "output": "WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE=V1\nMODE=read-only\nNO_MUTATION=true\nWINDOWS_LOCAL_INSPECT_RC=0\nWINDOWS_EVIDENCE_PRESENT=true\nWATCHDOG_SHORTCUT_MATCH_COUNT=1\nWATCHDOG_PS1_RESOLVED=true\nWATCHDOG_PS1_BASENAME=watchdog.ps1\nWATCHDOG_PS1_SIZE=5001\nWATCHDOG_LINE_COUNT=169\nSANITIZED_SOURCE_BEGIN\nSRC|001|$ErrorActionPreference='SilentlyContinue'\nSRC|003|$HostKey=''\nSRC|004|$PlinkPath=' Files\\PuTTY\\plink.exe'\nSRC|005|$Target=''\nSRC|006|$FailureStreak=0\nSRC|008|function Get-Listeners {\nSRC|009| try {\nSRC|010| return @(Get-NetTCPConnection -State Listen -LocalPort 64020 -ErrorAction SilentlyContinue)\nSRC|011| } catch {\nSRC|012| return @()\nSRC|013| }\nSRC|014|}\nSRC|016|function Get-ProcessCommandLine([int]$processId) {\nSRC|017| try {\nSRC|018| $proc = Get-CimInstance Win32_Process -Filter \"ProcessId=$processId\"\nSRC|019| if ($proc) { return [string]$proc.CommandLine }\nSRC|020| } catch {}\nSRC|021| return ''\nSRC|022|}\nSRC|024|function Test-ExactOwner([int]$processId) {\nSRC|025| $commandLine = Get-ProcessCommandLine $processId\nSRC|026| if ([string]::IsNullOrWhiteSpace($commandLine)) { return $false }\nSRC|028| return (\nSRC|029| $commandLine -match '(?i)\\bplink(\\.exe)?\\b' -and\nSRC|030| $commandLine -match '(?i)-L\\s+127\\.0\\.0\\.1:64020:127\\.0\\.0\\.1:64020' -and\nSRC|031| $commandLine -match '(?i)root@192\\.168\\.50\\.11' -and\nSRC|032| $commandLine -match [regex]::Escape($HostKey)\nSRC|033| )\nSRC|034|}\nSRC|036|function Test-Tcp22 {\nSRC|037| $client = $null\nSRC|038| try {\nSRC|039| $client = New-Object Net.Sockets.TcpClient\nSRC|040| $task = $client.ConnectAsync($Target, 22)\nSRC|041| if (-not $task.Wait(1800)) { return $false }\nSRC|042| return $client.Connected\nSRC|043| } catch {\nSRC|044| return $false\nSRC|045| } finally {\nSRC|046| try { if ($client) { $client.Close() } } catch {}\nSRC|047| }\nSRC|048|}\nSRC|050|function Test-Tcp64020 {\nSRC|051| $client = $null\nSRC|052| try {\nSRC|053| $client = New-Object Net.Sockets.TcpClient\nSRC|054| $task = $client.ConnectAsync('', 64020)\nSRC|055| if (-not $task.Wait(1200)) { return $false }\nSRC|056| return $client.Connected\nSRC|057| } catch {\nSRC|058| return $false\nSRC|059| } finally {\nSRC|060| try { if ($client) { $client.Close() } } catch {}\nSRC|061| }\nSRC|062|}\nSRC|064|function Test-Socks {\nSRC|065| $curl = (Get-Command curl.exe -ErrorAction SilentlyContinue).Source\nSRC|066| if (-not $curl) { return $false }\nSRC|068| try {\nSRC|069| $code = ((& $curl '-sS' '-o' 'NUL' '--connect-timeout' '4' '--max-time' '10' '-w' '%{http_code}' '--socks5-hostname' ':64020' 'https://api.telegram.org' 2>$null) | Out-String).Trim()\nSRC|070| return ($LASTEXITCODE -eq 0 -and $code -match '^[1-5][0-9][0-9]$' -and $code -ne '000')\nSRC|071| } catch {\nSRC|072| return $false\nSRC|073| }\nSRC|074|}\nSRC|076|function Get-ExactPlinkPids {\nSRC|077| $result = New-Object 'System.Collections.Generic.List[int]'\nSRC|078| try {\nSRC|079| foreach ($proc in (Get-CimInstance Win32_Process -Filter \"Name='plink.exe'\" -ErrorAction SilentlyContinue)) {\nSRC|080| if (Test-ExactOwner ([int]$proc.ProcessId)) {\nSRC|081| $result.Add([int]$proc.ProcessId)\nSRC|082| }\nSRC|083| }\nSRC|084| } catch {}\nSRC|085| return @($result | Sort-Object -Unique)\nSRC|086|}\nSRC|088|function Start-Route {\nSRC|089| if (-not (Test-Path -LiteralPath $PlinkPath -PathType Leaf)) { return $false }\nSRC|090| if (-not (Test-Tcp22)) { return $false }\nSRC|092| $proc = $null\nSRC|093| try {\nSRC|094| $psi = New-Object Diagnostics.ProcessStartInfo\nSRC|095| $psi.FileName = $PlinkPath\nSRC|096| $psi.UseShellExecute = $false\nSRC|097| $psi.CreateNoWindow = $true\nSRC|098| $psi.Arguments = \"-batch -agent -noshare -no-antispoof -ssh -4 -P 22 -hostkey -N -L :64020::64020 @\"\nSRC|099| $proc = [Diagnostics.Process]::Start($psi)\nSRC|100| } catch {\nSRC|101| return $false\nSRC|102| }\nSRC|104| if ($null -eq $proc) { return $false }\nSRC|106| for ($i = 1; $i -le 30; $i++) {\nSRC|107| Start-Sleep -Milliseconds 500\nSRC|108| $rows = Get-Listeners\nSRC|109| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique)\nSRC|111| if ($owners.Count -eq 1 -and $owners[0] -eq $proc.Id -and (Test-Tcp64020)) {\nSRC|112| return $true\nSRC|113| }\nSRC|115| try {\nSRC|116| if ($proc.HasExited) { break }\nSRC|117| } catch {}\nSRC|118| }\nSRC|120| try {\nSRC|121| if (-not $proc.HasExited) {\nSRC|122| Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue\nSRC|123| }\nSRC|124| } catch {}\nSRC|126| return $false\nSRC|127|}\nSRC|129|while ($true) {\nSRC|130| $rows = Get-Listeners\nSRC|131| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique)\nSRC|133| if ($rows.Count -eq 0) {\nSRC|134| $FailureStreak = 0\nSRC|136| foreach ($staleProcessId in (Get-ExactPlinkPids)) {\nSRC|137| try {\nSRC|138| Stop-Process -Id $staleProcessId -Force -ErrorAction SilentlyContinue\nSRC|139| } catch {}\nSRC|140| }\nSRC|142| Start-Route | Out-Null\nSRC|143| }\nSRC|144| elseif ($owners.Count -eq 1 -and (Test-ExactOwner ([int]$owners[0]))) {\nSRC|145| if (Test-Socks) {\nSRC|146| $FailureStreak = 0\nSRC|147| }\nSRC|148| else {\nSRC|149| $FailureStreak++\nSRC|151| if ($FailureStreak -ge 3) {\nSRC|152| try {\nSRC|153| Stop-Process -Id ([int]$owners[0]) -Force -ErrorAction SilentlyContinue\nSRC|154| } catch {}\nSRC|156| $FailureStreak = 0\nSRC|157| Start-Sleep -Seconds 1\nSRC|158| Start-Route | Out-Null\nSRC|159| }\nSRC|160| }\nSRC|161| }\nSRC|162| else {\nSRC|163| # Safety hold: never terminate an unknown or competing owner.\nSRC|164| $FailureStreak = 0\nSRC|165| }\nSRC|167| Start-Sleep -Seconds 12\nSRC|168|}\nSANITIZED_SOURCE_END\nRUNNING_WATCHDOG_PS_COUNT=2\nRUNNING_BRIDGE_PS_COUNT=2\nREC|CURRENT_PLINK|IDX=1|HAS_R=false|HAS_L=true|HAS_D=false|HAS_64020=true|HAS_64022=false|HAS_AGENT=true|HAS_BATCH=true|HAS_N=true\nCURRENT_PLINK_COUNT=1\nWATCHDOG_PS1_SHA256=7738599c1d229c105f1073f04b420063bd776f3444b3f6fcf7d09bd320cce0e3\nWATCHDOG_PS1_SHA_MATCH=true\nPVE64020_LISTENER_COUNT=0\nPVE64020_SSHD_OWNER_COUNT=0\nCLUSTER_QUORATE=true\nNETBIRD_LAZY=false\nNETBIRD_MANAGEMENT=true\nNETBIRD_SIGNAL=true\nNETBIRD_CONNECTED=5\nDECISION=PASS_WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE\nNEXT_GATE=EXACT_WATCHDOG_LOGIC_REPAIR\nTASK_RESULT=WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 4b2557c7..e9052e5a 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,15 +1,15 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SEMANTIC-RCA-FIXED-99757R1 +COMMAND_ID=SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1 STATUS=OK RC=0 HOST=pve01 MODE=read-only -COMPONENT=windows-dacha-watchdog-semantic-rca-fixed +COMPONENT=windows-dacha-watchdog-sanitized-source REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=d5305a2592091a0bdee6810e59ff416686ecc668a271cefb00b941af34166b35 +COMMAND_SHA256=82372359d1dfece3cca84734e47b1a82a17c43fb88ef3c8c418ee0f99f500497 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false @@ -24,10 +24,10 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=daf114282e48c0472fc1f454fcc68053228fae8fbc85e996097870cdac05d508 -SANITIZED_OUTPUT_SHA256=daf114282e48c0472fc1f454fcc68053228fae8fbc85e996097870cdac05d508 +RAW_EVIDENCE_SHA256=07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02 +SANITIZED_OUTPUT_SHA256=07576991b3bcf03a1f05666fc4f906e8ce3bab611b76ac9d0e0cd4f2ff28da02 OUTPUT_BEGIN -WINDOWS_DACHA_WATCHDOG_SEMANTIC_RCA_FIXED=V1 +WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE=V1 MODE=read-only NO_MUTATION=true WINDOWS_LOCAL_INSPECT_RC=0 @@ -37,70 +37,151 @@ WATCHDOG_PS1_RESOLVED=true WATCHDOG_PS1_BASENAME=watchdog.ps1 WATCHDOG_PS1_SIZE=5001 WATCHDOG_LINE_COUNT=169 -WATCHDOG_HAS_CALL_OPERATOR=true -WATCHDOG_HAS_START_PROCESS=false -WATCHDOG_HAS_PROCESS_START=true -WATCHDOG_HAS_INVOKE_EXPRESSION=false -WATCHDOG_HAS_GET_NETTCP=true -WATCHDOG_HAS_TEST_NETCONNECTION=false -WATCHDOG_HAS_TCPCLIENT=true -WATCHDOG_HAS_WHILE=true -WATCHDOG_HAS_TRY=true -WATCHDOG_HAS_CATCH=true -WATCHDOG_HAS_EXIT=true -WATCHDOG_HAS_RETURN=true -WATCHDOG_HAS_SLEEP=true -WATCHDOG_HAS_LOG_WRITE=false -WATCHDOG_FORWARD_LITERAL_COUNT=0 -REC|SEM_LINE|LINE=4|PORTS=|VARS=plinkpath|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=8|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=true|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=10|PORTS=64020|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=true|LOCALPORT=true|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=true|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=12|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=19|PORTS=|VARS=proc|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=21|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=26|PORTS=|VARS=commandline,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=28|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=29|PORTS=|VARS=commandline|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=30|PORTS=127,1,64020,127,1,64020|VARS=commandline|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=41|PORTS=1800|VARS=task,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=42|PORTS=|VARS=client|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=44|PORTS=|VARS=false|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=50|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=54|PORTS=127,1,64020|VARS=task,client|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=55|PORTS=1200|VARS=task,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=56|PORTS=|VARS=client|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=58|PORTS=|VARS=false|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=66|PORTS=|VARS=curl,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=69|PORTS=4,10,127,1,64020,2|VARS=code,curl,null|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=true|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=70|PORTS=1,5,9,9|VARS=lastexitcode,code|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=true|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=72|PORTS=|VARS=false|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=76|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=79|PORTS=|VARS=proc|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=85|PORTS=|VARS=result|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=88|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=true|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=89|PORTS=|VARS=plinkpath,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=90|PORTS=|VARS=false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=94|PORTS=|VARS=psi|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=true|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=95|PORTS=|VARS=psi,plinkpath|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=98|PORTS=4,22,127,1,64020,127,1,64020,192,168,50,11|VARS=psi,hostkey|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=101|PORTS=|VARS=false|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=104|PORTS=|VARS=null,proc,false|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=106|PORTS=1,30|VARS=i|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=107|PORTS=500|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=true -REC|SEM_LINE|LINE=108|PORTS=|VARS=rows|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=true|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=111|PORTS=1|VARS=owners,proc|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=112|PORTS=|VARS=true|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=116|PORTS=|VARS=proc|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=true|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=121|PORTS=|VARS=proc|ASSIGN=false|IF=true|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=true|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=126|PORTS=|VARS=false|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=true|SLEEP=false -REC|SEM_LINE|LINE=129|PORTS=|VARS=true|ASSIGN=false|IF=false|ELSE=false|WHILE=true|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=130|PORTS=|VARS=rows|ASSIGN=true|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=true|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=true|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=136|PORTS=|VARS=staleprocessid|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=true|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=142|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=true|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=157|PORTS=1|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=true -REC|SEM_LINE|LINE=158|PORTS=|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=true|L=false|D=false|EXIT=false|RETURN=false|SLEEP=false -REC|SEM_LINE|LINE=167|PORTS=12|VARS=|ASSIGN=false|IF=false|ELSE=false|WHILE=false|TRY=false|CATCH=false|GET_NETTCP=false|LOCALPORT=false|REMOTEPORT=false|OWNINGPROCESS=false|STATE_LISTEN=false|TEST_NET=false|PLINK=false|CALL_OP=false|START_PROCESS=false|PROCESS_START=false|R=false|L=false|D=false|EXIT=false|RETURN=false|SLEEP=true -WATCHDOG_RELEVANT_LINE_COUNT=48 +SANITIZED_SOURCE_BEGIN +SRC|001|$ErrorActionPreference='SilentlyContinue' +SRC|003|$HostKey='' +SRC|004|$PlinkPath=' Files\PuTTY\plink.exe' +SRC|005|$Target='' +SRC|006|$FailureStreak=0 +SRC|008|function Get-Listeners { +SRC|009| try { +SRC|010| return @(Get-NetTCPConnection -State Listen -LocalPort 64020 -ErrorAction SilentlyContinue) +SRC|011| } catch { +SRC|012| return @() +SRC|013| } +SRC|014|} +SRC|016|function Get-ProcessCommandLine([int]$processId) { +SRC|017| try { +SRC|018| $proc = Get-CimInstance Win32_Process -Filter "ProcessId=$processId" +SRC|019| if ($proc) { return [string]$proc.CommandLine } +SRC|020| } catch {} +SRC|021| return '' +SRC|022|} +SRC|024|function Test-ExactOwner([int]$processId) { +SRC|025| $commandLine = Get-ProcessCommandLine $processId +SRC|026| if ([string]::IsNullOrWhiteSpace($commandLine)) { return $false } +SRC|028| return ( +SRC|029| $commandLine -match '(?i)\bplink(\.exe)?\b' -and +SRC|030| $commandLine -match '(?i)-L\s+127\.0\.0\.1:64020:127\.0\.0\.1:64020' -and +SRC|031| $commandLine -match '(?i)root@192\.168\.50\.11' -and +SRC|032| $commandLine -match [regex]::Escape($HostKey) +SRC|033| ) +SRC|034|} +SRC|036|function Test-Tcp22 { +SRC|037| $client = $null +SRC|038| try { +SRC|039| $client = New-Object Net.Sockets.TcpClient +SRC|040| $task = $client.ConnectAsync($Target, 22) +SRC|041| if (-not $task.Wait(1800)) { return $false } +SRC|042| return $client.Connected +SRC|043| } catch { +SRC|044| return $false +SRC|045| } finally { +SRC|046| try { if ($client) { $client.Close() } } catch {} +SRC|047| } +SRC|048|} +SRC|050|function Test-Tcp64020 { +SRC|051| $client = $null +SRC|052| try { +SRC|053| $client = New-Object Net.Sockets.TcpClient +SRC|054| $task = $client.ConnectAsync('', 64020) +SRC|055| if (-not $task.Wait(1200)) { return $false } +SRC|056| return $client.Connected +SRC|057| } catch { +SRC|058| return $false +SRC|059| } finally { +SRC|060| try { if ($client) { $client.Close() } } catch {} +SRC|061| } +SRC|062|} +SRC|064|function Test-Socks { +SRC|065| $curl = (Get-Command curl.exe -ErrorAction SilentlyContinue).Source +SRC|066| if (-not $curl) { return $false } +SRC|068| try { +SRC|069| $code = ((& $curl '-sS' '-o' 'NUL' '--connect-timeout' '4' '--max-time' '10' '-w' '%{http_code}' '--socks5-hostname' ':64020' 'https://api.telegram.org' 2>$null) | Out-String).Trim() +SRC|070| return ($LASTEXITCODE -eq 0 -and $code -match '^[1-5][0-9][0-9]$' -and $code -ne '000') +SRC|071| } catch { +SRC|072| return $false +SRC|073| } +SRC|074|} +SRC|076|function Get-ExactPlinkPids { +SRC|077| $result = New-Object 'System.Collections.Generic.List[int]' +SRC|078| try { +SRC|079| foreach ($proc in (Get-CimInstance Win32_Process -Filter "Name='plink.exe'" -ErrorAction SilentlyContinue)) { +SRC|080| if (Test-ExactOwner ([int]$proc.ProcessId)) { +SRC|081| $result.Add([int]$proc.ProcessId) +SRC|082| } +SRC|083| } +SRC|084| } catch {} +SRC|085| return @($result | Sort-Object -Unique) +SRC|086|} +SRC|088|function Start-Route { +SRC|089| if (-not (Test-Path -LiteralPath $PlinkPath -PathType Leaf)) { return $false } +SRC|090| if (-not (Test-Tcp22)) { return $false } +SRC|092| $proc = $null +SRC|093| try { +SRC|094| $psi = New-Object Diagnostics.ProcessStartInfo +SRC|095| $psi.FileName = $PlinkPath +SRC|096| $psi.UseShellExecute = $false +SRC|097| $psi.CreateNoWindow = $true +SRC|098| $psi.Arguments = "-batch -agent -noshare -no-antispoof -ssh -4 -P 22 -hostkey -N -L :64020::64020 @" +SRC|099| $proc = [Diagnostics.Process]::Start($psi) +SRC|100| } catch { +SRC|101| return $false +SRC|102| } +SRC|104| if ($null -eq $proc) { return $false } +SRC|106| for ($i = 1; $i -le 30; $i++) { +SRC|107| Start-Sleep -Milliseconds 500 +SRC|108| $rows = Get-Listeners +SRC|109| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique) +SRC|111| if ($owners.Count -eq 1 -and $owners[0] -eq $proc.Id -and (Test-Tcp64020)) { +SRC|112| return $true +SRC|113| } +SRC|115| try { +SRC|116| if ($proc.HasExited) { break } +SRC|117| } catch {} +SRC|118| } +SRC|120| try { +SRC|121| if (-not $proc.HasExited) { +SRC|122| Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue +SRC|123| } +SRC|124| } catch {} +SRC|126| return $false +SRC|127|} +SRC|129|while ($true) { +SRC|130| $rows = Get-Listeners +SRC|131| $owners = @($rows | ForEach-Object { $_.OwningProcess } | Where-Object { $_ -gt 0 } | Sort-Object -Unique) +SRC|133| if ($rows.Count -eq 0) { +SRC|134| $FailureStreak = 0 +SRC|136| foreach ($staleProcessId in (Get-ExactPlinkPids)) { +SRC|137| try { +SRC|138| Stop-Process -Id $staleProcessId -Force -ErrorAction SilentlyContinue +SRC|139| } catch {} +SRC|140| } +SRC|142| Start-Route | Out-Null +SRC|143| } +SRC|144| elseif ($owners.Count -eq 1 -and (Test-ExactOwner ([int]$owners[0]))) { +SRC|145| if (Test-Socks) { +SRC|146| $FailureStreak = 0 +SRC|147| } +SRC|148| else { +SRC|149| $FailureStreak++ +SRC|151| if ($FailureStreak -ge 3) { +SRC|152| try { +SRC|153| Stop-Process -Id ([int]$owners[0]) -Force -ErrorAction SilentlyContinue +SRC|154| } catch {} +SRC|156| $FailureStreak = 0 +SRC|157| Start-Sleep -Seconds 1 +SRC|158| Start-Route | Out-Null +SRC|159| } +SRC|160| } +SRC|161| } +SRC|162| else { +SRC|163| # Safety hold: never terminate an unknown or competing owner. +SRC|164| $FailureStreak = 0 +SRC|165| } +SRC|167| Start-Sleep -Seconds 12 +SRC|168|} +SANITIZED_SOURCE_END RUNNING_WATCHDOG_PS_COUNT=2 RUNNING_BRIDGE_PS_COUNT=2 REC|CURRENT_PLINK|IDX=1|HAS_R=false|HAS_L=true|HAS_D=false|HAS_64020=true|HAS_64022=false|HAS_AGENT=true|HAS_BATCH=true|HAS_N=true @@ -114,14 +195,14 @@ NETBIRD_LAZY=false NETBIRD_MANAGEMENT=true NETBIRD_SIGNAL=true NETBIRD_CONNECTED=5 -DECISION=PASS_WINDOWS_DACHA_WATCHDOG_SEMANTIC_RCA_FIXED -NEXT_GATE=EXACT_WATCHDOG_BRANCH_REPAIR -TASK_RESULT=WINDOWS_DACHA_WATCHDOG_SEMANTIC_RCA_FIXED +DECISION=PASS_WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE +NEXT_GATE=EXACT_WATCHDOG_LOGIC_REPAIR +TASK_RESULT=WINDOWS_DACHA_WATCHDOG_SANITIZED_SOURCE CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null MUTATION_OUTCOME=NO_MUTATION -HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SEMANTIC-RCA-FIXED-99757R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-261007-WINDOWS-DACHA-WATCHDOG-SANITIZED-SOURCE-99758R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} OUTPUT_END CHAT_OUTPUT_END