Wszystkie permutacje klucza licencyjnego Windows

97

Muszę ubiegać się o aktualizację do systemu Windows 8 dla mojego laptopa, do którego potrzebuję klucza licencyjnego Windows 7 na spodzie laptopa.

Ponieważ firma Microsoft w swojej nieskończonej mądrości zdecydowała się stworzyć etykiety licencji, które się zużywają i nie mogę wyraźnie odczytać mojego klucza licencyjnego, oznacza to, że nie mogę zarejestrować mojego laptopa do oferty aktualizacji systemu Windows przy użyciu zautomatyzowanego procesu.

Trzymając laptopa pod kątem do światła, udało mi się zweryfikować większość kodu, ale kilka liter jest niejednoznacznych (jeszcze raz dziękuję firmie Microsoft za użycie łatwych do błędnego odczytania znaków na etykiecie).

Mam następujący (zaciemniony) klucz licencyjny,

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

gdzie znaki w nawiasach kwadratowych są niejednoznaczne, więc jest to albo 8albo B, Balbo 8, Halbo N, 6albo G.

Tworzenie 16 kombinacji.

Czy właściwe jest generowanie możliwych permutacji tego klucza licencyjnego za pomocą narzędzi itertools, czy jest lepszy sposób?

Dzięki współautorom otrzymałem właściwy klucz. Bardzo wygodnym sposobem sprawdzenia, czy klucz jest ważny, jest użycie narzędzia do sprawdzania kluczy produktu Windows 7 .

Kerridge0
źródło
11
Myślę, że możesz ręcznie wymienić szesnaście kombinacji, co może ostatecznie zająć mniej czasu.
Waleed Khan
17
Takie fajne pytanie. +1
Flavius
12
Naprawdę spodziewam się, że zmieniłeś niektóre z rozpoznawanych postaci i nie umieszczasz swojego prawdziwego klucza Windows w Internecie ...
rodrigo
1
Heh, byłoby bardzo interesującym pytaniem do wysłania na codegolf.stackexchange.com
Earlz
4
@rodrigo Tak zaciemniłem kod :)
Kerridge0

Odpowiedzi:

165

Zastrzeżenie: Tak, wiem, że to nie jest kod w Pythonie . Po prostu przyszło mi to do głowy i po prostu musiałem to zapisać.

Najprostszym sposobem jest użycie rozszerzenia powłoki:

$ 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
źródło
8
Wiem, że to nie jest kod w Pythonie. Po prostu przyszło mi to do głowy i spodobał mi się ten pomysł. Nie ma potrzeby odrzucania tej odpowiedzi. :-(
bikeshedder
Nie Python, ale mimo to piękne rozwiązanie.
Yuval Adam
2
+1 ... a Windows (o ile wiem) nie ma tego "rozszerzenia" ... ale zawsze możesz użyć Cygwin
Barranka
55
Cóż, Windows może go nie mieć, ale jeśli kiedykolwiek będziesz potrzebować iteracji klucza licencyjnego Linuksa ... och, czekaj, to kolejny powód, dla którego kocham Linuksa
Drake Clarris
1
Jest nie tylko krótki i słodki, ale daje odpowiedzi w bardzo przejrzysty sposób do kopiowania i wklejania. Właściwie istniała piąta zmienna i dostałem swój klucz !! Właściwie powierzyłem koledze zadanie „zapisz to”, a on się poddał! Wielkie dzięki.
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
źródło
17

Inny sposób generowania kombinacji

>>> ['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
źródło
9

A co powiesz na używanie itertools i functools w tym samym czasie?

>>> 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
źródło
1
Miły! Nigdy nie przyszło mi do głowy, że można użyć operator.mod również do formatowania napisów.
Tom
@MartijnPieters partialnie jest wymagany podczas używania, formatponieważ nic nie zmienia, gdy jest wywoływany bez *argslub **kwargs. Podczas używania formatnie można przejść bezpośrednio krotki ale trzeba go przekonwertować do argumentów pierwszy: map(lambda args: 'MPP6R-09RXG-2H{}MT-{}K{}M9-V{}C8R'.format(*args), product('8B', 'B8', 'HN', '6G')). Nadal %często używam starego formatowania ciągów z powodów sentymentalnych. Naprawdę powinienem rozważyć formatczęstsze używanie tej funkcji.
bikeshedder
Tak, jakoś wyobraziłem sobie argumenty stosowane jako *args. Mój błąd.
Martijn Pieters
3

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

Magical Jelly Bean Keyfinder to darmowe narzędzie, które pobiera klucz produktu (klucz cd) używany do instalowania systemu Windows z rejestru. Zawiera również zaktualizowany przez społeczność plik konfiguracyjny, który pobiera klucze produktów dla wielu innych aplikacji.

Po prostu uruchom go na instalacji, do której chcesz mieć klucz.

Paul Collingwood
źródło
2
Niestety system Windows zainstalowany na laptopie nie używa klucza licencyjnego znajdującego się na spodzie laptopa, ale jest instalowany przy użyciu jakiegoś korporacyjnego klucza głośności. Firma Microsoft nie zezwala na używanie tych kodów do sprawdzania aktualizacji systemu Windows.
Kerridge0
1

Jeśli korzystasz z opcji Windows Anytime Upgrade bezpośrednio z poziomu Windows 7, NIE musisz wiedzieć, jaki jest klucz licencyjny.

Dopóki system operacyjny jest aktywny, Windows 8 po prostu nadpisze istniejący system operacyjny i umieści wszystko z Windows 7 w folderze „starego Windowsa”, który możesz usunąć, chyba że potrzebujesz pliku lub czegoś podobnego.

Proces uaktualniania systemu Windows szuka aktywowanego systemu operacyjnego Windows, nawet Windows XP zrobiłby to, o ile jest aktywowany przed zainstalowaniem uaktualnienia.

Otrzymasz e-mail z kluczem licencyjnym Windows 8 przy zakupie za pośrednictwem Anytime Upgrade. Jeśli kupisz aktualizację w sklepie, otrzymasz po prostu klucz licencyjny i adres URL pobierania LUB po prostu podłączasz klucz do aktualizacji systemu Windows Anytime, a aplikacja pobierze się i zainstaluje.

phpMedler
źródło
Prawidłowo, jednak w momencie wysyłania ten kod był potrzebny do „Oferty uaktualnienia systemu Windows”. Ten proces może być również przydatny dla tych, którzy chcieliby ponownie zainstalować system Windows przy użyciu kodu na certyfikacie autentyczności i nie mają już partycji przywracania producenta.
Kerridge0