Par exemple : FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8
Pour information, cette clef - à ne surtout pas utiliser ! - est la plus célèbre des clefs "pirates" de Windows XP PRO Corporate, apparue lors du lancement de Windows XP en 2001.

On peut s' interroger sur ce jeu de caractères utilisé.
Il comporte 24 éléments, ce qui signifie tout simplement que l' on est en présence de nombres représentés en base 24.
D' où cette mixité de lettres et chiffres (comme c' est déjà le cas pour la représentation conventionnelle de nombre exprimés en base hexadécimale).
Il fallait donc choisir 24 caractères parmi les 26 lettres de l' alphabet et 10 chiffres.
Afin d' éviter toute confusion entre lettres et chiffres, Microsoft n'a pas retenu les lettres et chiffres suivants :

A (confusion possible avec H)
E (confusion possible avec F)
I (confusion possible avec L ou 1)
L (confusion possible avec I ou 1)
N (confusion possible avec M)
O (confusion possible avec Q ou 0)
S (confusion possible avec 5)
U (confusion possible avec V)
Z (confusion possible avec 2)
0 (confusion possible avec O ou Q)
1 (confusion possible avec I ou L)
5 (confusion possible avec S)
Par contre, il est regrettable que Microsoft ait laissé possible la confusion entre B et 8 .

Les chiffres de cette base 24 correspondent aux valeurs décimales suivantes :

B = 0 Q = 10 6 = 20 Puissances de 24

C = 1 R = 11 7 = 21 24^1 24
D = 2 T = 12 8 = 22 24^2 576
F = 3 V = 13 9 = 23 24^3 13824
G = 4 W = 14 24^4 331776
H = 5 X = 15 24^5 7962624
J = 6 Y = 16 ... ...
K = 7 2 = 17
M = 8 3 = 18
P = 9 4 = 19
Exemples :
2B7Q8 est le codage en base 24 de :

2 = 17 x 24^4 5640192
B = 0 x 24^3 0
7 = 21 x 24^2 12096
Q = 10 x 24^1 240
8 = 22 x 24^0 22
5652550 (en hexadécimal : 0x564046)

Inversement, le codage en base 24 de 2005 (en décimal) est :

2005 / 24 = 83 reste 13 V
83 / 24 = 3 reste 11 R
3 / 24 = 0 reste 3 F
FRV

Contrairement au ProductID, il n' existe pas dans la base de registres d' entrée contenant en clair (5 fois 5 caractères) la clef de produit (ProductKey).

On trouve seulement une entrée nommée DigitalProductID de type REG_BINARY.
Cette entrée concerne Windows, mais aussi des applications telles que Office, Visio, FrontPage, OneNote, Money, Internet Explorer ...
Sa taille est de 164 octets en général, mais peut atteindre parfois (cas de Internet Explorer) 256 octets.

Le nombre maximal que l' on peut coder est donc 24^25 -1 (nombre de 25 chiffres compris entre 0 et 23), soit 3,2 x 10^34 comme cité plus haut.
Exprimé en puissances de 16, ce nombre est de l' ordre de 16^29.
Donc pour le représenter en base 16, il faudra 29 "chiffres" hexadécimaux, soit, après arrondi, 15 octets (1 octet étant représenté par 2 chiffres hexadécimaux).
Cette représentation binaire de la ProductKey est appelée "Raw Key" (clef brute) C' est ce que l' on observe dans toutes entrées DigitalProductID,
la Raw Key étant stockée sur 15 octets, entre les offsets 0x34 à 0x42.
Ne pas oublier que dans les architectures "Intel" (et compatible), les grandeurs binaires sont représentées en "Little Endian", c'est à dire que les octets de poids faibles sont en tête.

Dans l' exemple ci-contre, la Raw Key est le nombre (en hexadécimal) 03D3FC979F6BA773C899DEA7EF6380

On peut être amené à réinstaller des logiciels Microsoft (Windows, Office,..)
Pour cela il faut ressaisir la ProductKey au cours de la procédure d' installation.
Or cette clef étant souvent fournie sous la forme d' un autocollant posé sur l' emballage, il arrive fréquemment que l' on ait perdu cette clef.

D' où l' intérêt de pouvoir obtenir la ProductKey en clair, par conversion de la "RAW key" en nombre exprimé en base24.

En raison de la grandeur des nombres rencontrés, cette conversion ne peut se faire que par programmation.
Avec de possibles variantes, l' algorithme est toujours le même :

On effectue une division euclidienne du nombre par 24.
Le reste obtenu est le chiffre en base 24 des unités.
Puis on recommence la division euclidienne sur le quotient,
et ainsi de suite, jusqu'au ce que le quotient soit nul.
Chaque reste est un chiffre de poids de plus en plus fort.
Exemple :
Conversion de 7D5 (représentation hexadécimale de 2005) en base 24
(18 est la représentation hexadécimale de 24)

7D5 = 53 x 18 + 0D V
53 = 3 x 18 + 0B R
3 = 0 x 18 + 03 F
FRV

Il existe différents outils qui effectuent cette conversion :
Le 1er de cette catégorie fut le logiciel Aida32.
Mais c' est devenu un produit commercial (Everest)
Et seules les versions payantes donnent les "ProductKey".
L ancienne version gratuite est ICI

Relation entre ProductKey et ProductID
En raison de l' absence de toute documentation de la part de Microsoft, ces informations sont susceptibles d' évoluer au fur et à mesure des expérimentations effectuées.

Malgré la présence de la ProductKey, le ProductID subsiste toujours car c' est lui qui permet à Microsoft de détecter la provenance authentique ou frauduleuse du logiciel correspondant.

C' est ainsi que le Service Pack 1 (et suivants) de Windows XP refuse de s' installer sur les machines dotées dont le ProductID est de la forme :
XXXXX-640-0000356-23XXX
XXXXX-640-2001765-23XXX
car il dénote l' utilisation de clefs "pirates" de Windows XP PRO Corporate (licence en volume, qui ne nécessite pas d'activation, réservée aux professionnels).
Cette information est extraite du document Microsoft Technical Details on SP1 Changes to Microsoft Product Activation for Windows XP.
Lors de la sortie du SP1 (2002), ce document était disponible sur le site Microsoft à l' adresse http://www.microsoft.com/piracy/basics/activation/WPA_SP1_Market_Bulletin.doc mais il a disparu du site, on se demande pourquoi ?.

C'est par un procédé analogue que WGA (Windows Genuine Advantage) autorise ou non les télé chargements (hors correctifs de sécurité)

Alors que le ProductID était autrefois saisi manuellement par l' utilisateur, et constituait le seul identificateur du produit, il est à présent dérivé de la ProductKey, par un algorithme (hachage) relativement complexe.
Microsoft ne fait qu 'évoquer cet algorithme dans le document cité précédemment.
Il est contenu dans la DLL PIDgen.dll (située dans %systemroot%\system32) (PIDgen = acronyme de Product Identifier Generator)

On peut néanmoins trouver des informations très pertinentes à ce sujet dans le document Inside Windows Product Activation dû à la Compagnie Licenturion spécialisée dans les solutions de protections de logiciels.

L'algorithme ProductID=f(ProductKey) dépend du produit (Windows, Suite Office, Money, ...)

Ce qui suit ne concerne que Windows :
Opérations Exemples
Il faut tout d' abord convertir la ProductKey
(5 fois 5 caractères) en RAWkey binaire
comme exposé précédemment FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8
->
00C8D5F1B880E1C0EC45F9CC4B4046
(big endian)
Puis retenir les 31 1ers bits de poids faibles
(équivalent à effectuer un AND logique avec 0x7FFFFFFF) 4C4B4046

Puis décaler d' un bit vers la droite le résultat
(équivalent à une division euclidienne par 2) 2625A023
Convertir le résultat en décimal
(ajouter éventuellement des 0 en tête afin que le résultat comporte 9 chiffres) 640000035
Scinder ce nombre en 2 parties constituées des 3 premiers et des 6 derniers chiffres. 640
000035
Multiplier le 2ème nombre par 10, et lui ajouter un chiffre de telle façon que la somme de tous les chiffres soit un multiple de 7 0000350
+ 6
(0+0+0+0+3+5+6 = 2x7)
La partie centrale du ProductID est donc : 640-0000356

dans cet exemple, on retrouve un ProductID de ProductKey "blacklistée"
par le Service Pack 1 de Windows XP, qui dénote donc une clef "pirate"!

Seuls les 2ème et 3ème nombres sont utiles ici pour détecter la "provenance" d' une ProductKey.

Le chiffre des centaines du 2ème nombre indique la catégorie du logiciel


0xx : licence au détail
2xx : licence contrat Select
3xx : licence MSDN
6xx : licence en volume ("Corporate")
7xx : licence OEM

A partir de là on peut extraire des clés non black listés pour les xp avant début 2004 car après il semble que microsoft ai modifié l algorithme des clés suite a la publication d un logiciel de calcul sur le net que semble t il n est plus publié.

Je vous propose donc la version béta valable pour les premiers xp ICI

ATTENTION valable aussi pour xp home et pro avec des cles corporate.

ce qui permet d actuver ces xp sans passer par microsoft.

La procédure d'activation de Windows XP par microsoft.

Une nouvelle disposition (MPA = "Microsoft Product Activation") est apparue avec Windows XP (concerne aussi Office XP, Visio 2002, Project 2002, Windows 2003, et au delà) afin de lutter contre les copies illicites de logiciel.
Ainsi il n' est plus possible, en ne possédant qu 'une seule licence, de "cloner" allègrement sur "n" machines différentes un CDROM de Windows (officiel ou non !).
La mise en oeuvre de cette protection est effectuée au cours de l' installation et tout au long de l' utilisation de Windows.
Les informations qui suivent sont tirées en partie du site Microsoft

:
http://www.microsoft.com/france/windows/xp/pro/utilisez/info/info.asp?mar=/france/windows/xp/pro/utilisez/info/activation.html
(NB: ce lien est très "mouvant"!)

Mode opératoire de la MPA

Phase 1
Installation de XP sur une machine.
Windows est toute de suite opérationnel, mais pendant un temps limité (30 jours) pendant lequel il va falloir "l'activer"

Phase 2
Activation de Windows.
Elle a lieu, au choix :
* soit par Internet (fait par le système)
* soit par téléphone (fait par l' utilisateur)
Il est communiqué à Microsoft :
* l' identifiant de la licence
* un identifiant généré automatiquement par l' installation, en fonction de 10 paramètres matériels de la machine :
1. Carte graphique
2. Carte SCSI
3. Carte IDE
4. Carte réseau - adresse MAC
5. Mémoire RAM
6. Type de processeur
7. Numéro de série du processeur
8. Taille du disque dur
9. Numéro de série du disque dur
10. présence de lecteur de CDROM / CD-RW / DVD-ROM
Au total, cela représente un code à 50 chiffres.
Ces paramètres ont des pondérations différentes. Par exemple la carte réseau a un "poids" important, c' est en effet un élément qu' on a moins tendance à changer sur une même machine que de la RAM.

A partir de ces identifiants le serveur Microsoft vérifie que la machine :
* soit n'a jamais été encore activée
* soit qu 'elle l'a déjà été mais que les modifications sont mineures (cf. seuils plus bas).
Si c' est le cas, un code d'activation est retourné, et Windows XP est alors opérationnel, sans limitation de durée.

L'activation est ANONYME.
La seule information à fournir est le nom du pays.
Par exemple le disque dur n' est pas analysé.

Si Windows n'a pas été activé et que le temps fatidique de 30 jours a été dépassé, on ne peut plus ouvrir de session (mais seulement déclencher la procédure d'activation)

. Phase 3
Ensuite, à chaque démarrage de Windows, une vérification de cohérence entre le code d'activation et l'identifiant matériel est effectuée.
Si trop de différences sont constatées, une nouvelle procédure d'activation est requise.
(par Internet, mais limitée à 4 fois par an, ou alors par téléphone)

Les seuils de différences

2 cas sont à distinguer :

1. Si une carte réseau existe et reste inchangée :
6 ou plus des valeurs énumérées ci-dessus doivent changer pour que l'activation soit requise.
2. Si une carte réseau existe et a été modifiée ou si elle n'a jamais existé :
4 ou plus des valeurs énumérées ci-dessus doivent changer pour que l'activation soit requise.

Remarques

* L' ajout de composants à un PC, comme un nouveau disque dur absent au départ, n' oblige pas à réactiver
* La modification d' un composant non listé dans le tableau (Webcam, scanner, carte son, ...) n' oblige pas à réactiver
* On peut réactiver autant de fois que l' on veut une même machine après réinstallation de Windows XP.
* L'activation (ou réactivation) automatique via Internet est possible 4 fois par an. (au delà, il faut procéder par voie téléphonique)

Les entreprises ayant un parc important de machines sont dispensées de cette procédure d'activation par l' utilisation d' une version spéciale de XP, dite "Corporate" (évidemment très recherchée par les "hackers" )

sando pour les arf