Anleitungen
VMWare Encrypted Passwort Credential Manager auslesen
Seit der VMWare Workstation 26H2 werden die Encryption Passwörter vom TPM im Windows Credential Manager gespeichert.
Dieses wird bei kopierten Windows Umgebungen beim Zugriff erneut abgefragt, weil VMWare für jede VM einen eigenen Eintrag im Windows Credential Manager verlangt.
Weil beim Anlegen der VM ein Passwort generiert wurde, was nicht bekannt ist, muss es über den folgenden Weg ausgelesen werden.
Die folgende Anleitung stammt nicht von mir, sondern wurde andshrew [1] erstellt.
PowerShell starten
Windows Suche: powershell
Skript Code per Copy&Paste einfügen
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class Win32Cred
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CREDENTIAL
{
public int Flags;
public int Type;
public IntPtr TargetName;
public IntPtr Comment;
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
public int CredentialBlobSize;
public IntPtr CredentialBlob;
public int Persist;
public int AttributeCount;
public IntPtr Attributes;
public IntPtr TargetAlias;
public IntPtr UserName;
}
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern bool CredReadW(string target, int type, int reservedFlag, out IntPtr credentialPtr);
[DllImport("advapi32.dll", SetLastError = true)]
public static extern void CredFree(IntPtr buffer);
public static string CredRead(string targetName, int type = 1)
{
IntPtr credPtr;
if (CredReadW(targetName, type, 0, out credPtr))
{
CREDENTIAL cred = (CREDENTIAL)Marshal.PtrToStructure(credPtr, typeof(CREDENTIAL));
string pass = Marshal.PtrToStringAnsi(cred.CredentialBlob, cred.CredentialBlobSize);
CredFree(credPtr);
return pass;
}
throw new System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error());
}
}
"@
Aus der .vmx Datei der VM den Eintrag encryptedVM.guid rauskopieren
Beispiel:
encryptedVM.guid = "{833AB4F5-587E-4B11-9260-4DB13742FA7F}"
In der PowerShell den folgenden Befehl eingeben mit der eigenen encryptedVM.guid
[Win32Cred]::CredRead("{encryptedVM.guid}")
Beispiel:
[Win32Cred]::CredRead("{833AB4F5-587E-4B11-9260-4DB13742FA7F}")
Auslesen der vorhanden Einträge im Windows Credential Manager
Sollte bei Punk-4 kein Ergebnis kommen, so ist der Eintrag von VMWare anders bennant. In diesem Fall könnte der Eintrag den Pfad der VM selbst beinhalten.
Dieses kann mit dem folgenden Befehl ausgelesen werden
cmdkey /list
Jetzt den Passenden Eintrag raussuchen und Punk-4 wiederholen, aber mit dem neuen Eintrag anstelle der encryptedVM.guid
Reference
[1] https://gist.github.com/andshrew/bf6e5e8fa09b957caffc09c6dee58472