Todas las permutaciones de una clave de licencia de Windows

97

Necesito solicitar una actualización de Windows 8 para mi computadora portátil, para lo cual necesito la clave de licencia de Windows 7 en la parte inferior de la computadora portátil.

Debido a que Microsoft decidió en su infinita sabiduría crear etiquetas de licencia que se desgastan, y no puedo leer mi clave de licencia con claridad, significa que no puedo registrar mi computadora portátil para la oferta de actualización de Windows mediante un proceso automatizado.

Al sostener la computadora portátil en ángulo con respecto a la luz, he podido verificar la mayor parte del código, pero varias de las letras son ambiguas (gracias nuevamente a Microsoft por usar caracteres fáciles de leer mal en su etiqueta).

Tengo la siguiente clave de licencia (ofuscada),

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

donde los caracteres entre corchetes son ambiguos, por lo que es 8o B, Bo 8, Ho N, 6o G.

Haciendo 16 combinaciones.

¿Es apropiado generar las posibles permutaciones de esta clave de licencia usando itertools o hay una mejor manera?

Obtuve la clave correcta gracias a los contribuyentes. Una forma muy conveniente de comprobar si la clave es válida es mediante el comprobador de claves de producto de Windows 7 .

Kerridge0
fuente
11
Creo que podría enumerar las dieciséis combinaciones a mano, lo que al final puede llevar menos tiempo.
Waleed Khan
17
Qué pregunta tan genial. +1
Flavius
12
Realmente espero que haya cambiado algunos de los caracteres reconocidos y no esté publicando su clave de Windows real en Internet ...
rodrigo
1
Je, hubiera sido una pregunta muy interesante para publicar en codegolf.stackexchange.com
Earlz
4
@rodrigo Sí, ofusqué el código :)
Kerridge0

Respuestas:

165

Descargo de responsabilidad: Sí, sé que este no es un código Python . Simplemente me vino a la mente y simplemente tuve que escribirlo.

La forma más sencilla es el uso de la expansión de 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
bicishedder
fuente
8
Sé que este no es un código Python. Simplemente me vino a la mente y me gustó la idea. No es necesario rechazar esta respuesta. :-(
bikeshedder
No es Python, pero es una hermosa solución.
Yuval Adam
2
+1 ... y Windows (que yo sepa) no tiene esta "expansión" ... pero siempre puedes usar Cygwin
Barranka
55
Bueno, es posible que Windows no lo tenga, pero si alguna vez necesita iterar su clave de licencia de Linux ... oh, espera, esa es otra razón por la que amo Linux
Drake Clarris
1
No solo es breve y dulce, sino que dio las respuestas de una manera muy limpia para copiar y pegar. En realidad, había una quinta variable, ¡y obtuve mi clave! De hecho, le di la tarea de "escribirlo" a un colega, ¡y se rindió! Muchas gracias.
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
fuente
17

Otra forma de generar las combinaciones

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

¿Qué tal usar itertools y functools al mismo tiempo?

>>> 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']
bicishedder
fuente
1
¡Agradable! Nunca se me ocurrió que pudieras usar operator.mod para dar formato a cadenas también.
Tom
@MartijnPieters partialno es necesario cuando se usa, formatya que no cambia nada cuando se llama sin *argso **kwargs. Cuando se utiliza formatno se puede pasar directamente a la tupla pero necesitan para convertirlo en argumentos primero: map(lambda args: 'MPP6R-09RXG-2H{}MT-{}K{}M9-V{}C8R'.format(*args), product('8B', 'B8', 'HN', '6G')). Todavía uso mucho el %formato de cadena antiguo por razones sentimentales. Realmente debería considerar usar la formatfunción con más frecuencia.
bikeshedder
Sí, de alguna manera imaginé los argumentos que se estaban aplicando como *args. Mi error.
Martijn Pieters
3

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

Magical Jelly Bean Keyfinder es una utilidad gratuita que recupera su clave de producto (clave de CD) utilizada para instalar Windows desde su registro. También tiene un archivo de configuración actualizado por la comunidad que recupera claves de producto para muchas otras aplicaciones.

Simplemente ejecútelo en la instalación para la que desea la clave.

Paul Collingwood
fuente
2
Desafortunadamente, Windows instalado en la computadora portátil no usa la clave de licencia que se encuentra en la parte inferior de la computadora portátil, sino que se instala usando algún tipo de clave de volumen corporativa. Microsoft no permite que estos códigos se utilicen para validar la actualización de Windows.
Kerridge0
1

Si usa la opción Actualización de Windows en cualquier momento directamente desde Windows 7, NO necesita saber cuál es la clave de licencia.

Siempre que el sistema operativo esté activado, Windows 8 simplemente sobrescribirá el sistema operativo existente y colocará todo, desde Windows 7 en una carpeta "antigua" que puede eliminar a menos que necesite un archivo o algo.

El proceso de actualización de Windows busca un sistema operativo Windows activado, incluso Windows XP lo haría siempre que esté activado antes de instalar la actualización.

Se le enviará por correo electrónico la clave de licencia de Windows 8 cuando realice la compra a través de Anytime Upgrade. Si compra una actualización en una tienda, solo obtendrá una clave de licencia y una URL de descarga O simplemente conecte la clave a Windows Anytime Upgrade y se descargará e instalará.

phpMedler
fuente
Correcto, sin embargo, en el momento de publicar este código era necesario para la "Oferta de actualización de Windows". Este proceso también podría ser útil para aquellos que deseen reinstalar Windows usando el código en COA, y ya no tienen la partición de restauración del fabricante.
Kerridge0