XP-Aktivierung Bit für Bit

Dekodierung

Entfernt man die Prüfziffern, ergibt sich eine 41-stellige Dezimalzahl. Eine Dezimalzahl dieser Länge stimmt ungefähr mit einem 136-bittigen Multi-Precision-Integer-Wert überein. Und tatsächlich ist die 41-stellige Zahl nur die dezimale Darstellung eines solchen Integer-Werts, der in einer Little-Endian-Byte-Folge als Byte-Array gespeichert ist. Unsere Installations-ID lässt sich also darstellen als Abfolge von 17 Bytes in hexadezimaler Darstellung (die X stehen für die ausgeblendeten Zeichen):

0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0x94 0xAA 0x46 0xD6 0x0F 0xBD 0x2C 0xC8 0x00

Beim Entschlüsseln beliebiger Installations-IDs kann man feststellen, dass das höherwertige Byte entweder 0x00 oder 0x01 ist, während die übrigen Bytes anscheinend zufällig zu Stande kommen. Der Grund liegt darin, dass die niedrigen 16 Bytes der Installations-ID verschlüsselt sind, das höchstwertige Byte hingegen nicht.

Der verwendete kryptographische Algorithmus ist eine proprietäre Feistel-Chiffre mit vier Runden. Da der Block der an eine Feistel-Chiffre übergebenen Eingabe-Bytes in zwei gleich große Blöcke unterteilt wird, wird diese Chiffre-Klasse typischerweise für Eingabeblöcke verwendet, die aus einer geraden Anzahl von Bytes bestehen. In diesem Fall sind das die unteren 16 der 17 Eingabe-Bytes.