Alle Permutationen eines Windows-Lizenzschlüssels

97

Ich muss ein Windows 8-Upgrade für meinen Laptop beantragen, für das ich den Windows 7-Lizenzschlüssel an der Unterseite des Laptops benötige.

Da Microsoft in seiner unendlichen Weisheit beschlossen hat, abgenutzte Lizenzetiketten zu erstellen und ich meinen Lizenzschlüssel nicht klar lesen kann, kann ich meinen Laptop nicht mithilfe eines automatisierten Prozesses für das Windows-Upgrade-Angebot registrieren.

Indem ich den Laptop in einem Winkel zum Licht hielt, konnte ich den größten Teil des Codes überprüfen, aber einige der Buchstaben sind mehrdeutig (nochmals vielen Dank an Microsoft für die Verwendung von leicht falsch zu lesenden Zeichen in Ihrem Etikett).

Ich habe den folgenden (verschleierten) Lizenzschlüssel:

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

wo die Zeichen in eckigen Klammern sind nicht eindeutig, so ist es entweder 8oder B, Boder 8, Hoder N, 6oder G.

16 Kombinationen machen.

Ist es angemessen, die möglichen Permutationen dieses Lizenzschlüssels mit itertools zu generieren, oder gibt es einen besseren Weg?

Ich habe dank der Mitwirkenden den richtigen Schlüssel bekommen. Eine sehr bequeme Möglichkeit, um zu überprüfen, ob der Schlüssel gültig ist, ist die Verwendung der Windows 7-Produktschlüsselprüfung .

Kerridge0
quelle
11
Ich denke, Sie könnten die sechzehn Kombinationen von Hand auflisten, was am Ende weniger Zeit in Anspruch nehmen könnte.
Waleed Khan
17
So eine coole Frage. +1
Flavius
12
Ich
gehe
1
Heh, wäre eine sehr interessante Frage gewesen, um auf codegolf.stackexchange.com
Earlz
4
@rodrigo Ja, ich habe den Code verschleiert :)
Kerridge0

Antworten:

165

Haftungsausschluss: Ja, ich weiß, dass dies kein Python- Code ist. Es kam mir gerade in den Sinn und ich musste es einfach aufschreiben.

Der einfachste Weg ist die Verwendung der Shell-Erweiterung:

$ 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
Bikeshedder
quelle
8
Ich weiß, dass dies kein Python-Code ist. Es kam mir gerade in den Sinn und ich mochte die Idee davon. Diese Antwort muss nicht abgelehnt werden. :-(
Bikeshedder
Nicht Python, aber trotzdem eine schöne Lösung.
Yuval Adam
2
+1 ... und Windows (soweit ich weiß) hat diese "Erweiterung" nicht ... aber Sie können Cygwin
Barranka
55
Nun, Windows hat es vielleicht nicht, aber wenn Sie jemals Ihren Linux-Lizenzschlüssel iterieren müssen. Oh, warte, das ist ein weiterer Grund, warum ich Linux liebe
Drake Clarris
1
Es ist nicht nur kurz und bündig, sondern es gab auch die Antworten auf sehr saubere Weise zum Kopieren und Einfügen. Es gab tatsächlich eine 5. Variable und ich bekam meinen Schlüssel !! Ich habe die Aufgabe "Aufschreiben" tatsächlich einem Kollegen gegeben, und er hat aufgegeben! Vielen Dank.
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
quelle
17

Eine andere Möglichkeit, die Kombinationen zu generieren

>>> ['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
quelle
9

Wie wäre es mit der gleichzeitigen Verwendung von itertools und functools?

>>> 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']
Bikeshedder
quelle
1
Nett! Mir ist nie aufgefallen, dass Sie operator.mod auch für die Formatierung von Zeichenfolgen verwenden können.
Tom
@MartijnPieters partialist bei Verwendung nicht erforderlich, formatda es beim Aufruf ohne *argsoder nichts ändert **kwargs. Bei Verwendung können formatSie das Tupel nicht direkt übergeben, sondern müssen es zuerst in Argumente konvertieren : map(lambda args: 'MPP6R-09RXG-2H{}MT-{}K{}M9-V{}C8R'.format(*args), product('8B', 'B8', 'HN', '6G')). Ich benutze immer noch die alte %String-Formatierung aus sentimentalen Gründen. Ich sollte wirklich in Betracht ziehen, die formatFunktion öfter zu verwenden.
Bikeshedder
Ja, irgendwie habe ich mir die Argumente vorgestellt, als *args. Mein Fehler.
Martijn Pieters
3

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

Der Magical Jelly Bean Keyfinder ist ein Freeware-Dienstprogramm, das Ihren Product Key (CD-Key) abruft, mit dem Windows aus Ihrer Registrierung installiert wird. Es hat auch eine von der Community aktualisierte Konfigurationsdatei, die Produktschlüssel für viele andere Anwendungen abruft.

Führen Sie es einfach auf der Installation aus, für die Sie den Schlüssel möchten.

Paul Collingwood
quelle
2
Leider verwendet das auf dem Laptop installierte Windows nicht den Lizenzschlüssel, der sich auf der Unterseite des Laptops befindet, sondern einen Unternehmens-Volume-Schlüssel. Microsoft erlaubt nicht, dass diese Codes zur Überprüfung des Windows-Upgrades verwendet werden.
Kerridge0
1

Wenn Sie die Option Windows Anytime Upgrade direkt in Windows 7 verwenden, müssen Sie den Lizenzschlüssel NICHT kennen.

Solange das Betriebssystem aktiviert ist, überschreibt Windows 8 nur das vorhandene Betriebssystem und legt alles von Windows 7 in einem "Windows-alten" Ordner ab, den Sie löschen können, es sei denn, Sie benötigen eine Datei oder etwas anderes.

Der Windows-Aktualisierungsprozess sucht nach einem aktivierten Windows-Betriebssystem. Selbst Windows XP würde dies tun, solange es aktiviert ist, bevor das Upgrade installiert wird.

Beim Kauf über das Anytime Upgrade erhalten Sie den Windows 8-Lizenzschlüssel per E-Mail. Wenn Sie ein Upgrade in einem Geschäft kaufen, erhalten Sie nur einen Lizenzschlüssel und eine Download- URL ODER Sie schließen den Schlüssel einfach an Windows Anytime Upgrade an und er lädt sich herunter und installiert sich selbst.

phpMedler
quelle
Richtig, zum Zeitpunkt der Veröffentlichung war dieser Code jedoch für das "Windows-Upgrade-Angebot" erforderlich. Dieser Vorgang kann auch für Benutzer nützlich sein, die Windows mithilfe des COA-Codes neu installieren möchten und die Wiederherstellungspartition des Herstellers nicht mehr haben.
Kerridge0