From 41e527c4928f785affc68634be5f051888eab31f Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Fri, 7 Aug 2026 06:58:02 +0200 Subject: [PATCH] =?UTF-8?q?Auto-Logon=20aktiv=20=E2=80=94=20Registry-Weg,?= =?UTF-8?q?=20sicherer=20Weg=20blieb=20wirkungslos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Endstand verifiziert: AutoAdminLogon=1, DefaultUserName=ah, DefaultDomainName=HOMEBASE, Aufgabe OilAutoLogonLock Bereit und auf autologon_lock.ps1 zeigend. Die Boot-Luecke ist damit konfiguratorisch geschlossen. ⚠ Der SICHERE Weg hat nicht funktioniert: Sysinternals Autologon beendete sich mit ExitCode 0, schrieb aber nichts — weder ueber den Dialog noch ueber die Argument-Form. Ausgeschlossen: DevicePasswordLessBuildVersion (nicht gesetzt), fehlende Elevation, haengender Prozess. Ursache ungeklaert. Aktiv ist deshalb der Registry-Weg, und damit steht das Passwort im KLARTEXT unter HKLM\...\Winlogon\DefaultPassword — lesbar fuer jeden lokalen Admin und jedes Backup-Image. Entfernen-Kommando in CLAUDE.md. ⚠ Dritter Fall derselben Fehlerklasse in diesem Skript, jetzt behoben: die Speicherart wurde aus einer stale Variable gelesen, die VOR dem Registry-Schreiben gefuellt war. Die Ausgabe widersprach sich direkt — erst korrekt 'steht jetzt im KLARTEXT', zwei Zeilen spaeter 'nicht im Klartext ✅'. Der Zustand wird jetzt nach jedem Schreibvorgang frisch gelesen. Lehre aus allen drei Faellen: eine Erfolgsmeldung muss den Zustand NACH der Aktion pruefen, nicht den davor. Offen: die Wirkung ist erst beim naechsten Reboot belegt. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 26 +++++++++++++++++++++++++- tools/autologon_einrichten.ps1 | 18 ++++++++++++++++-- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index a2d8462..ebeaf61 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -259,7 +259,7 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche: Anteil, WR-Verfall, PF<1, Einzelverlust). **Wöchentlich** laufen lassen (B4/B5). - **Vor „fertig":** immer `python -m py_compile `; JS grob via Klammern- Balance prüfen (kein node im Env). -- **⚠ BOOT-LÜCKE: Auto-Logon vorbereitet, aber NICHT abgeschlossen (2026-08-07).** +- **✅ BOOT-LÜCKE GESCHLOSSEN: Auto-Logon AKTIV (2026-08-07).** `OilTradingServer` und `HyperliquidDashboard` hängen an einem **Logon**-Trigger — nach einem Update-Reboot läuft nichts bis zur Anmeldung (real 20.07.: Reboot 01:30, Server bis 07:42 tot, −95,48 €). ⚠ Ein Task „ohne angemeldete @@ -311,6 +311,30 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche: `ONLOGON`-Trigger unterscheidet nicht. Deshalb prüft `tools/autologon_lock.ps1` jetzt die **Systemlaufzeit** — gesperrt wird nur, wenn der Rechner **< 3 min** läuft (= Auto-Logon nach Boot). Nach manueller Anmeldung passiert nichts. + ⚠⚠ **ENDSTAND — der SICHERE Weg hat NICHT funktioniert.** Sysinternals + `Autologon` beendete sich mit **ExitCode 0**, schrieb aber **nichts** (weder + über den Dialog noch über die Argument-Form). Ausgeschlossen wurden: der + Windows-11-Blocker `DevicePasswordLessBuildVersion` (nicht gesetzt), fehlende + Elevation (Admin-Prüfung bestand), ein hängender Prozess. **Ursache ungeklärt.** + Aktiv ist deshalb der **Registry-Weg** — verifiziert: + | | | + |---|---| + | `AutoAdminLogon` | **1** | + | `DefaultUserName` / `DefaultDomainName` | `ah` / `HOMEBASE` | + | `DefaultPassword` | ⚠ **KLARTEXT** (Länge 4) | + | Aufgabe `OilAutoLogonLock` | **Bereit**, läuft als `ah`, ruft `autologon_lock.ps1` | + ⚠ Das Passwort ist damit für **jeden lokalen Administrator und jedes + Backup-Image** lesbar. Entfernen (deaktiviert zugleich den Auto-Logon): + `Remove-ItemProperty -Path 'HKLM:\…\Winlogon' -Name DefaultPassword`. + ⚠ **Offen:** die Wirkung ist erst beim **nächsten Reboot** belegt — bis dahin + ist nur die Konfiguration verifiziert, nicht das Verhalten. + ⚠⚠ **DRITTER Fall derselben Fehlerklasse in diesem einen Skript** (Erfolg + melden, wo keiner ist): die Speicherart wurde aus einer **stale** Variable + gelesen, die VOR dem Registry-Schreiben gefüllt war — die Ausgabe widersprach + sich direkt („steht jetzt im KLARTEXT" … zwei Zeilen später „nicht im Klartext + ✅"). Behoben: der Zustand wird nach jedem Schreibvorgang **frisch gelesen**. + Die drei Fälle zusammen sind die Lehre: **eine Erfolgsmeldung muss den Zustand + NACH der Aktion prüfen, nicht den davor.** - **⚠⚠ .ps1 MIT NICHT-ASCII BRAUCHT EIN BOM — sonst bricht `powershell.exe` 5.1 (2026-08-07, real passiert).** Das Autologon-Skript ließ sich nicht ausführen: „Schließende ) fehlt", „Zeichenfolge hat kein Abschlusszeichen". Es war **kein** diff --git a/tools/autologon_einrichten.ps1 b/tools/autologon_einrichten.ps1 index 38695c6..befcda4 100644 --- a/tools/autologon_einrichten.ps1 +++ b/tools/autologon_einrichten.ps1 @@ -192,8 +192,6 @@ if (-not $aktiv) { $aktiv = ($an -eq '1') Write-Host "" Write-Host " AutoAdminLogon : $an" - Write-Host " ⚠ DefaultPassword steht jetzt im KLARTEXT in der Registry." -ForegroundColor Yellow - Write-Host " Entfernen mit: Remove-ItemProperty -Path '$k' -Name DefaultPassword" } if (-not $aktiv) { @@ -201,6 +199,22 @@ if (-not $aktiv) { exit 1 } +# ⚠⚠ NEU EINLESEN, NICHT den alten Wert wiederverwenden. Beim ersten Bau stand +# hier eine stale Variable aus der Zeit VOR dem Registry-Schreiben — die Ausgabe +# widersprach sich dann direkt: erst korrekt "steht jetzt im KLARTEXT", zwei +# Zeilen spaeter "nicht im Klartext (LSA-Secret) ✅". DRITTER Fall derselben +# Fehlerklasse in diesem Skript (Erfolg melden, wo keiner ist bzw. wo das +# Gegenteil zutrifft). Der Zustand wird deshalb immer frisch gelesen. +$klartext = (Get-ItemProperty -Path $k -Name DefaultPassword -EA SilentlyContinue).DefaultPassword +Write-Host "" +if ($klartext) { + Write-Host " SPEICHERART: ⚠ Passwort im KLARTEXT in der Registry." -ForegroundColor Yellow + Write-Host " Entfernen (deaktiviert damit auch den Auto-Logon):" + Write-Host " Remove-ItemProperty -Path '$k' -Name DefaultPassword" +} else { + Write-Host " SPEICHERART: verschluesseltes LSA-Secret ✅" -ForegroundColor Green +} + if ($klartext) { Write-Host " DefaultPassword : ⚠ KLARTEXT in der Registry!" -ForegroundColor Yellow } else {