How to encode an Autopilot hash

Wie man einen Autopilot-Hash dekodiert

Dir ist vielleicht aufgefallen, dass ein Autopilot-Hash bei jeder Erstellung ein wenig anders aussieht. In diesem Beitrag möchte ich dir zeigen, wie man einen Autopilot-Hash dekodiert und seinen Inhalt anzeigst.

Was ist ein Hardware-Hash

Um ein Gerät als Autopilot-Gerät zu registrieren, benötigst du einen Hardware-Hash. Der Hardware-Hash ist ein kodiertes XML, das Informationen über das Gerät enthält, insbesondere über die Hardware. Dieser Hash wird benötigt, um das Gerät eindeutig mit dem Tenant eines Unternehmens zu verknüpfen. Zum Erzeugen und Hochladen des Hash kannst du das folgende Powershell-Skript verwenden: Get-WindowsAutoPilotInfo.ps1

Du kannst dir den Hash eher als Fingerabdruck des Geräts vorstellen und weniger als Geheimnis. Er setzt sich aus stabilen Hardware-Merkmalen wie dem TPM-Endorsement-Key, der Seriennummer der Festplatte und dem Netzwerkadapter sowie aus einigen flüchtigen Werten wie der aktuellen Uhrzeit zusammen. Genau diese Mischung ist der Grund, warum sich die Zeichenkette bei jedem Lauf ändert, selbst auf demselben Gerät. Deshalb solltest du den Hash immer direkt auf der physischen Maschine erfassen, die du registrieren willst, und ihn nicht von einem Gerät auf ein anderes kopieren.

Die Deployment Tools aus dem Windows ADK installieren

Wir brauchen ein Tool, das uns beim Dekodieren des Hardware-Hash hilft. Dafür müssen wir das Windows ADK installieren.

Wie man einen Autopilot-Hash dekodiert
  • Installiere das Windows SDK.
  • Klicke auf Next
Wie man einen Autopilot-Hash dekodiert
  • Wähle No und klicke auf Next
Wie man einen Autopilot-Hash dekodiert
  • Akzeptiere das Lizenzabkommen
Wie man einen Autopilot-Hash dekodiert
  • Wähle nur die Deployment Tools aus und klicke auf Install
Wie man einen Autopilot-Hash dekodiert

Du brauchst nur die Komponente Deployment Tools, daher gibt es keinen Grund, das komplette ADK zu installieren und mehrere Gigabyte herunterzuladen. Wenn du nur diese Komponente auswählst, bleibt der Speicherbedarf gering und du erhältst trotzdem die Datei oa3tool.exe, die wir im nächsten Schritt benötigen.

Den Hardware-Hash erzeugen

Wenn du dir das Skript Get-WindowsAutoPilotInfo.ps1 ansiehst, ist die Erstellung des Hardware-Hash recht einfach:

$session = New-CimSession
$devDetail = (Get-CimInstance -CimSession $session -Namespace root/cimv2/mdm/dmmap -Class MDM_DevDetail_Ext01 -Filter "InstanceID='Ext' AND ParentID='./DevDetail'")
$hash = $devDetail.DeviceHardwareData
Write-Host $hash
Wie man einen Autopilot-Hash dekodiert

Jetzt müssen wir nur noch das $devDetail an das Deployment-Tool oa3tool.exe übergeben, um den Hash in XML umzuwandeln. Du findest es unter dem folgenden Pfad: ‘C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Licensing\OA30\oa3tool.exe’.

Das fertige Skript sieht so aus:

$session = New-CimSession
$devDetail = (Get-CimInstance -CimSession $session -Namespace root/cimv2/mdm/dmmap -Class MDM_DevDetail_Ext01 -Filter "InstanceID='Ext' AND ParentID='./DevDetail'")
$hash = $devDetail.DeviceHardwareData
Write-Host $hash
& 'C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Licensing\OA30\oa3tool.exe' /DecodeHwHash="$($devDetail.DeviceHardwareData)"
Wie man einen Autopilot-Hash dekodiert

Ein paar typische Stolperfallen sind hier erwähnenswert. Die CIM-Abfrage liefert die DeviceHardwareData nur dann zurück, wenn sie in einer vollständigen Windows-Sitzung mit Administratorrechten läuft, daher ist eine erhöhte PowerShell-Eingabeaufforderung erforderlich. Wenn du sie innerhalb der Out-of-Box-Experience ausführst, drücke zuerst Umschalt + F10, um eine Eingabeaufforderung zu öffnen. Und da oa3tool.exe die rohe Base64-Zeichenkette erwartet, achte darauf, dass die Konsole den Wert nicht umbricht oder abschneidet, bevor du ihn übergibst.

Fazit

Der Grund, warum der Hash bei jeder Ausführung anders aussieht, ist der Zeitstempel innerhalb des Hash.

    <p n="OsSystemTime" v="2022-05-27T11:53:55Z" />
    <p n="OsLocalTime" v="2022-05-27T13:53:55+02:00" />

Letztlich ist der Hardware-Hash eine Kodierung mehrerer unterschiedlicher Werte. Im Inneren sieht der Hardware-Hash bis auf die Zeit immer gleich aus. Das führt jedoch dazu, dass der Hash stets unterschiedlich ist. Das Dekodieren auf diese Weise ist außerdem ein praktischer Trick zur Fehlersuche: Wenn eine Registrierung fehlschlägt, kannst du prüfen, ob das erfasste Gerät wirklich zu Modell, Seriennummer und TPM passt, die du erwartest, bevor du das Autopilot-Profil verdächtigst.

Wenn du tiefer in Autopilot eintauchen möchtest, schau dir meine weiteren Intune- und Autopilot-Anleitungen an und lies die offizielle Windows-Autopilot-Dokumentation auf Microsoft Learn. Ich hoffe, dieses Skript gibt dir einen Einblick hinter die Kulissen des Autopilot-Gerätehashs.
Bleib gesund, Cheers
Jannik