Tutte le permutazioni di una chiave di licenza di Windows


97

Devo richiedere un aggiornamento a Windows 8 per il mio laptop, per il quale ho bisogno della chiave di licenza di Windows 7 sul lato inferiore del laptop.

Poiché Microsoft ha deciso nella sua infinita saggezza di creare etichette di licenza che svaniscono e non riesco a leggere chiaramente la mia chiave di licenza, significa che non posso registrare il mio laptop per l'offerta di aggiornamento di Windows utilizzando un processo automatizzato.

Tenendo il laptop inclinato rispetto alla luce sono stato in grado di verificare la maggior parte del codice, ma molte delle lettere sono ambigue (grazie ancora Microsoft per aver utilizzato caratteri facili da leggere nella tua etichetta).

Ho la seguente chiave di licenza (offuscata),

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

dove i caratteri tra parentesi quadre sono ambigui, quindi è 8o B, Bo 8, Ho N, 6o G.

Fare 16 combinazioni.

È appropriato generare le possibili permutazioni di questa chiave di licenza utilizzando itertools o esiste un modo migliore?

Ho ricevuto la chiave corretta con i ringraziamenti ai contributori. Un modo molto comodo per verificare se la chiave è valida è utilizzare il controllo del codice Product Key di Windows 7 .


11
Penso che potresti elencare le sedici combinazioni a mano, che alla fine potrebbe richiedere meno tempo.
Waleed Khan

17
Una domanda così interessante. +1
Flavio

12
Mi aspetto davvero che tu abbia cambiato alcuni dei caratteri riconosciuti e non stai pubblicando la tua vera chiave di Windows su Internet ...
rodrigo

1
Eh, sarebbe stata una domanda molto interessante da pubblicare su codegolf.stackexchange.com
Earlz

4
@rodrigo Sì, ho offuscato il codice :)
Kerridge0

Risposte:


165

Disclaimer: Sì, so che questo non è codice Python . Mi è appena venuto in mente e ho dovuto semplicemente scriverlo.

Il modo più semplice è l'uso dell'espansione della 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

8
So che questo non è un codice Python. Mi è appena venuto in mente e mi è piaciuta l'idea. Non c'è bisogno di sottovalutare questa risposta. :-(
bikeshedder

Non pitone, ma comunque una bella soluzione.
Yuval Adam

2
+1 ... e Windows (per quanto ne so) non ha questa "espansione" ... ma puoi sempre usare Cygwin
Barranka

55
Beh, Windows potrebbe non averlo, ma se mai avessi bisogno di iterare la tua chiave di licenza Linux .. oh aspetta, questo è un altro motivo per cui amo Linux
Drake Clarris

1
Non solo è breve e dolce, ma ha fornito le risposte in modo molto pulito per il copia e incolla. In realtà c'era una quinta variabile e ho ottenuto la mia chiave !! In realtà ho affidato il compito di "annotarlo" a un collega e lui si è arreso! Molte grazie.
Kerridge0

59
from itertools import product
for perm in product('8B', 'B8', 'HN', '6G'):
    print 'MPP6R-09RXG-2H%sMT-%sK%sM9-V%sC8R' % perm

17

Un altro modo per generare le combinazioni

>>> ['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']
>>> 

9

Che ne dici di usare itertools e functools allo stesso tempo?

>>> 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']

1
Bello! Non mi è mai capitato di poter usare operator.mod anche per la formattazione delle stringhe.
Tom

@MartijnPieters partialnon è richiesto quando si usa formatpoiché non cambia nulla quando viene chiamato senza *argso **kwargs. Quando si utilizza formatnon è possibile passare direttamente la tupla ma è necessario convertirlo in argomenti prima: map(lambda args: 'MPP6R-09RXG-2H{}MT-{}K{}M9-V{}C8R'.format(*args), product('8B', 'B8', 'HN', '6G')). Uso ancora molto la vecchia %formattazione delle stringhe per motivi sentimentali. Dovrei davvero considerare di utilizzare la formatfunzione più spesso.
deposito biciclette

Sì, in qualche modo ho immaginato gli argomenti applicati come *args. Errore mio.
Martijn Pieters

3

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

Il Magical Jelly Bean Keyfinder è un'utilità freeware che recupera la chiave del prodotto (chiave cd) utilizzata per installare Windows dal registro. Ha anche un file di configurazione aggiornato dalla comunità che recupera i codici Product Key per molte altre applicazioni.

Eseguilo nell'installazione per cui desideri la chiave.


2
Sfortunatamente, Windows installato sul laptop non utilizza la chiave di licenza che si trova sul lato inferiore del laptop, ma viene installato utilizzando una sorta di chiave del volume aziendale. Microsoft non consente l'utilizzo di questi codici per convalidare l'aggiornamento di Windows.
Kerridge,

1

Se si utilizza l' opzione Windows Anytime Upgrade direttamente da Windows 7, NON è necessario sapere qual è la chiave di licenza.

Finché il sistema operativo è attivato, Windows 8 sovrascriverà semplicemente il sistema operativo esistente e metterà tutto da Windows 7 in una cartella "Windows-old" che puoi eliminare a meno che tu non abbia bisogno di un file o qualcosa del genere.

Il processo di aggiornamento di Windows cerca un sistema operativo Windows attivato, anche Windows XP lo farebbe fintanto che è attivato prima di installare l'aggiornamento.

Ti verrà inviata un'e-mail con la chiave di licenza di Windows 8 al momento dell'acquisto tramite Anytime Upgrade. Se acquisti un aggiornamento da un negozio, riceverai solo una chiave di licenza e un URL di download OPPURE inserisci la chiave in Windows Anytime Upgrade e verrà scaricata e installata da sola.


Corretto, tuttavia al momento della pubblicazione questo codice era necessario per l '"Offerta di aggiornamento di Windows". Questo processo potrebbe anche essere utile per coloro che desiderano reinstallare Windows utilizzando il codice sul certificato di autenticità e non hanno più la partizione di ripristino del produttore.
Kerridge0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.