Toutes les permutations d'une clé de licence Windows

97

Je dois demander une mise à niveau de Windows 8 pour mon ordinateur portable, pour laquelle j'ai besoin de la clé de licence Windows 7 sur le dessous de l'ordinateur portable.

Étant donné que Microsoft a décidé dans sa sagesse infinie de créer des étiquettes de licence qui s'estompent et que je ne peux pas lire clairement ma clé de licence, cela signifie que je ne peux pas enregistrer mon ordinateur portable pour l'offre de mise à niveau Windows à l'aide d'un processus automatisé.

En tenant l'ordinateur portable à un angle par rapport à la lumière, j'ai pu vérifier la plupart du code, mais plusieurs des lettres sont ambiguës (merci encore à Microsoft d'avoir utilisé des caractères faciles à mal lire dans votre étiquette).

J'ai la clé de licence suivante (masquée),

MPP6R-09RXG-2H[8B]MT-[B8]K[HN]M9-V[6G]C8R

où les caractères entre crochets sont ambigus, il s'agit donc de 8ou B, Bou 8, Hou N, 6ou G.

Faire 16 combinaisons.

Est-il approprié de générer les permutations possibles de cette clé de licence à l'aide d'itertools ou existe-t-il un meilleur moyen?

J'ai obtenu la bonne clé grâce aux contributeurs. Un moyen très pratique de vérifier si la clé est valide consiste à utiliser le vérificateur de clé de produit Windows 7 .

Kerridge0
la source
11
Je pense que vous pourriez énumérer les seize combinaisons à la main, ce qui peut finalement prendre moins de temps.
Waleed Khan
17
Une question tellement cool. +1
Flavius
12
Je m'attends vraiment à ce que vous ayez changé certains des caractères reconnus et que vous ne publiez pas votre vraie clé Windows sur Internet ...
rodrigo
1
Heh, aurait été une question très intéressante à publier sur codegolf.stackexchange.com
Earlz
4
@rodrigo Oui, j'ai obscurci le code :)
Kerridge0

Réponses:

165

Avertissement: Oui, je sais que ce n'est pas du code Python . Cela m'est venu à l'esprit et j'ai simplement dû l' écrire.

Le moyen le plus simple est d'utiliser l'expansion du shell:

$ echo MPP6R-09RXG-2H{8,B}MT-{B,8}K{H,N}M9-V{6,G}C8R
MPP6R-09RXG-2H8MT-BKHM9-V6C8R
MPP6R-09RXG-2H8MT-BKHM9-VGC8R
MPP6R-09RXG-2H8MT-BKNM9-V6C8R
MPP6R-09RXG-2H8MT-BKNM9-VGC8R
MPP6R-09RXG-2H8MT-8KHM9-V6C8R
MPP6R-09RXG-2H8MT-8KHM9-VGC8R
MPP6R-09RXG-2H8MT-8KNM9-V6C8R
MPP6R-09RXG-2H8MT-8KNM9-VGC8R
MPP6R-09RXG-2HBMT-BKHM9-V6C8R
MPP6R-09RXG-2HBMT-BKHM9-VGC8R
MPP6R-09RXG-2HBMT-BKNM9-V6C8R
MPP6R-09RXG-2HBMT-BKNM9-VGC8R
MPP6R-09RXG-2HBMT-8KHM9-V6C8R
MPP6R-09RXG-2HBMT-8KHM9-VGC8R
MPP6R-09RXG-2HBMT-8KNM9-V6C8R
MPP6R-09RXG-2HBMT-8KNM9-VGC8R
vélo
la source
8
Je sais que ce n'est pas du code python. Cela m'est venu à l'esprit et j'ai aimé l'idée. Pas besoin de voter contre cette réponse. :-(
bikeshedder
Pas python, mais une belle solution quand même.
Yuval Adam
2
+1 ... et Windows (pour autant que je sache) n'a pas cette "extension" ... mais vous pouvez toujours utiliser Cygwin
Barranka
55
Eh bien, Windows ne l'a peut-être pas, mais si jamais vous avez besoin d'itérer votre clé de licence Linux ... oh attendez, c'est une autre raison pour laquelle j'aime Linux
Drake Clarris
1
Non seulement il est court et doux, mais il a donné les réponses d'une manière très propre pour le copier-coller. Il y avait en fait une 5ème variable, et j'ai eu ma clé !! J'ai en fait confié la tâche «notez-le» à un collègue, et il a abandonné! Merci beaucoup.
Kerridge0
59
from itertools import product
for perm in product('8B', 'B8', 'HN', '6G'):
    print 'MPP6R-09RXG-2H%sMT-%sK%sM9-V%sC8R' % perm
Yuval Adam
la source
17

Une autre façon de générer les combinaisons

>>> ['MPP6R-09RXG-2H%sMT-%sK%sM9-V%sC8R' % (a, b, c, d)
...  for a in '8B' for b in 'B8' for c in 'HN' for d in '6G']
['MPP6R-09RXG-2H8MT-BKHM9-V6C8R',
 'MPP6R-09RXG-2H8MT-BKHM9-VGC8R',
 'MPP6R-09RXG-2H8MT-BKNM9-V6C8R',
 'MPP6R-09RXG-2H8MT-BKNM9-VGC8R',
 'MPP6R-09RXG-2H8MT-8KHM9-V6C8R',
 'MPP6R-09RXG-2H8MT-8KHM9-VGC8R',
 'MPP6R-09RXG-2H8MT-8KNM9-V6C8R',
 'MPP6R-09RXG-2H8MT-8KNM9-VGC8R',
 'MPP6R-09RXG-2HBMT-BKHM9-V6C8R',
 'MPP6R-09RXG-2HBMT-BKHM9-VGC8R',
 'MPP6R-09RXG-2HBMT-BKNM9-V6C8R',
 'MPP6R-09RXG-2HBMT-BKNM9-VGC8R',
 'MPP6R-09RXG-2HBMT-8KHM9-V6C8R',
 'MPP6R-09RXG-2HBMT-8KHM9-VGC8R',
 'MPP6R-09RXG-2HBMT-8KNM9-V6C8R',
 'MPP6R-09RXG-2HBMT-8KNM9-VGC8R']
>>> 
Nick Dandoulakis
la source
9

Que diriez-vous d'utiliser itertools et functools en même temps?

>>> from operator import mod
>>> from functools import partial
>>> from itertools import product
>>> map(partial(mod, 'MPP6R-09RXG-2H%sMT-%sK%sM9-V%sC8R'), product('8B', 'B8', 'HN', '6G'))
['MPP6R-09RXG-2H8MT-BKHM9-V6C8R', 'MPP6R-09RXG-2H8MT-BKHM9-VGC8R', 'MPP6R-09RXG-2H8MT-BKNM9-V6C8R', 'MPP6R-09RXG-2H8MT-BKNM9-VGC8R', 'MPP6R-09RXG-2H8MT-8KHM9-V6C8R', 'MPP6R-09RXG-2H8MT-8KHM9-VGC8R', 'MPP6R-09RXG-2H8MT-8KNM9-V6C8R', 'MPP6R-09RXG-2H8MT-8KNM9-VGC8R', 'MPP6R-09RXG-2HBMT-BKHM9-V6C8R', 'MPP6R-09RXG-2HBMT-BKHM9-VGC8R', 'MPP6R-09RXG-2HBMT-BKNM9-V6C8R', 'MPP6R-09RXG-2HBMT-BKNM9-VGC8R', 'MPP6R-09RXG-2HBMT-8KHM9-V6C8R', 'MPP6R-09RXG-2HBMT-8KHM9-VGC8R', 'MPP6R-09RXG-2HBMT-8KNM9-V6C8R', 'MPP6R-09RXG-2HBMT-8KNM9-VGC8R']
vélo
la source
1
Agréable! Il ne m'est jamais arrivé que vous puissiez utiliser operator.mod pour faire le formatage de chaînes également.
Tom
@MartijnPieters partialn'est pas requis lors de l'utilisation formatcar il ne change rien lorsqu'il est appelé sans *argsou **kwargs. Lors de l' utilisation que formatvous ne pouvez pas passer le tuple directement mais ont besoin de le convertir en premiers arguments: map(lambda args: 'MPP6R-09RXG-2H{}MT-{}K{}M9-V{}C8R'.format(*args), product('8B', 'B8', 'HN', '6G')). J'utilise encore %beaucoup l'ancien formatage de chaîne pour des raisons sentimentales. Je devrais vraiment envisager d'utiliser la formatfonction plus souvent.
bikeshedder
Ouais, d'une manière ou d'une autre, j'ai imaginé les arguments appliqués comme *args. Mon erreur.
Martijn Pieters
3

http://www.magicaljellybean.com/keyfinder/

Le Magical Jelly Bean Keyfinder est un utilitaire gratuit qui récupère votre clé de produit (clé cd) utilisée pour installer Windows à partir de votre registre. Il dispose également d'un fichier de configuration mis à jour par la communauté qui récupère les clés de produit pour de nombreuses autres applications.

Exécutez-le simplement sur l'installation pour laquelle vous souhaitez obtenir la clé.

Paul Collingwood
la source
2
Malheureusement, Windows installé sur l'ordinateur portable n'utilise pas la clé de licence qui se trouve sous l'ordinateur portable, mais est installé à l'aide d'une sorte de clé de volume d'entreprise. Microsoft n'autorise pas l'utilisation de ces codes pour valider la mise à niveau de Windows.
Kerridge0
1

Si vous utilisez la mise à niveau Windows à tout moment option de directement à partir de Windows 7, vous n'avez PAS besoin de savoir quelle est la clé de licence.

Tant que le système d'exploitation est activé, Windows 8 écrasera simplement le système d'exploitation existant et placera tout ce qui se trouve à partir de Windows 7 dans un dossier «ancien de Windows» que vous pouvez supprimer à moins que vous n'ayez besoin d'un fichier ou autre.

Le processus de mise à niveau de Windows recherche un système d'exploitation Windows activé, même Windows XP le ferait tant qu'il est activé avant d'installer la mise à niveau.

Vous recevrez par e-mail la clé de licence Windows 8 lors de l'achat via la mise à niveau à tout moment. Si vous achetez une mise à niveau dans un magasin, vous obtiendrez simplement une clé de licence et une URL de téléchargement OU vous branchez simplement la clé dans Windows Anytime Upgrade et elle se téléchargera et s'installera d'elle-même.

phpMedler
la source
Correct, mais au moment de la publication, ce code était nécessaire pour «l'offre de mise à niveau Windows». Ce processus peut également être utile pour ceux qui souhaitent réinstaller Windows en utilisant le code sur COA et qui ne disposent plus de la partition de restauration du fabricant.
Kerridge0