Windows-Key auslesen

Windows-Lizenzschlüssel mit Linux auslesen

Getestet mit Ubuntu 24.04.

Früher (zu Windows 7 Zeiten) gab es oft Probleme mit verlorenen oder abgenutzten Lizenzaufklebern. Um dies zu verhindern, nutzen Hersteller das OA 3.0 (OEM Activation 3.0) Verfahren:

Bei modernen Computern von namhaften PC-Größen wie Dell, HP und Lenovo, aber auch bei spezialisierten Herstellern wie Microsoft (Surface-Reihe) oder im Gaming-Bereich bei Firmen wie Razer und MSI, wird der Windows-Product-Key heutzutage als digitaler Lizenzmarker direkt in der Firmware des Mainboards ausgeliefert. Genauer wird der Lizenzmarker im sogenannten SPI-Flash-Baustein gespeichert. Das ist der physische Chip auf dem Mainboard, auf dem sich die UEFI/BIOS-Firmware befindet.

Mit Linux lässt sich der Lizenzmarker (bzw. Windows-Lizenzschlüssel) z. B. bei einem Dell Latitude 5580 sehr einfach auslesen:

sudo strings /sys/firmware/acpi/tables/MSDM

liefert:

MSDMU
DELL  CBX3
AMI
AAAAA-BBBBB-CCCCC-DDDDD-EEEEE

wobei AAAAA-BBBBB-CCCCC-DDDDD-EEEEE im vorliegenden Beispiel der Windows-Lizenzschlüssel ist. Das Auslesen funktioniert auch im Legacy-BIOS Modus des Dell Latitude 5580, also wenn das System nicht im UEFI-Modus gestartet wurde. Es ist jedoch möglich, dass andere Hersteller bzw. andere Geräte erfordern, dass das Gerät im UEFI-Modus gebootet werden muss.

Warum der Zugriff oft auch im Legacy-BIOS-Modus klappt: Obwohl die MSDM-Tabelle (Microsoft Digital Marker) ein Teil der modernen UEFI-Spezifikation ist, stellen viele Hersteller wie Dell oder Lenovo diese Tabelle auch dann bereit, wenn das System im Legacy-BIOS-Modus gebootet wurde. Der Linux-Kernel scannt beim Start den physischen Speicher nach dem sogenannten ACPI-Root-Pointer. Findet er dort den Verweis auf die MSDM-Tabelle, wird diese unter /sys/firmware/acpi/tables/MSDM eingebunden – unabhängig davon, ob man UEFI oder Legacy nutzt. Sollte das Verzeichnis bei einem anderen Gerät dennoch leer sein, liegt dies meist an einer restriktiven BIOS-Implementierung des Herstellers; in diesem Fall hilft nur ein kurzer Wechsel in den UEFI-Boot-Modus.