We zullen de InstallatieID tegen het licht houden. De InstallatieID bestaat uit groepen van 6 cijfers. Om typfouten uit te sluiten heeft Microsoft per groep een controlegetal ingebouwd; dat is het laatste cijfer. Door middel van een berekening wordt gekeken of de som van alle cijfers van de groep als uitkomst 6 is. Verandert 1 getal in de reeks cijfers, dan verandert ook deze uitkomst en is de ID dus fout.
Als de controlegetallen wel kloppen kunnen ze verwijderd worden. Na verwijdering rest een decimaalgetal van 41 tekens. Zo'n getal komt overeen met een 136 bits Multi-precision-Integer value, die opgeslagen is als Byte-array. Op deze manier kan de InstallatieID ook worden weergegeven als een hexadecimale reeks van 17 bytes:
0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0x94 0xAA Ox46 0xD6 0x0F 0xBD 0x2C 0xC8 0x00
De laatste byte is niet versleuteld (0x00), dit is de hoogste bitwaarde (met hoogste waarde in een bitreeks bedoelen we altijd de eerste cijfers in een reeks; de laagste bitreeks zijn dus de getallen achteraan).
De overige 16 bits zijn wel versleuteld volgens het Feistel-Chiffre algoritme. Bij dit algoritme worden er van het aantal bytes twee gelijke groepen gemaakt, waardoor het zeventiende bit afvalt. Het resultaat van de algoritme berekening is een opdeling van de 17 bytes in vier Double Words en een byte (Little-Endian Byte volgorde). De eerste twee bytes worden bepaald door de hardwareconfiguratie van de pc waarop Windows XP is geïnstalleerd. De andere bytes zijn onderdeel van de ProductID.
|
Naam byte serie |
Grote byte serie |
|
Hardware 1 |
Double word |
|
Hardware 2 |
Double word |
|
ProductID deel 1 |
Double word |
|
ProductID deel 2 |
Double word |
| ProductID deel 3 |
Byte |
|