Все варианты лицензионного ключа Windows

97

Мне нужно подать заявку на обновление Windows 8 для моего ноутбука, для чего мне нужен лицензионный ключ Windows 7 на нижней стороне ноутбука.

Поскольку Microsoft решила в своей бесконечной мудрости создать лицензионные ярлыки, которые стираются, и я не могу четко прочитать свой лицензионный ключ, это означает, что я не могу зарегистрировать свой ноутбук для предложения обновления Windows, используя автоматизированный процесс.

Держа ноутбук под углом к ​​свету, я смог проверить большую часть кода, но некоторые буквы неоднозначны (еще раз спасибо Microsoft за использование легко читаемых символов на этикетке).

У меня есть следующий (обфусцированный) лицензионный ключ,

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

где символы в квадратных скобках являются неоднозначными, так что либо 8или B, Bили 8, Hили N, 6или G.

Составляем 16 комбинаций.

Уместно ли генерировать возможные перестановки этого лицензионного ключа с помощью itertools или есть способ лучше?

Я получил правильный ключ благодаря участникам. Очень удобный способ проверить действительность ключа - использовать средство проверки ключа продукта Windows 7 .

Керридж0
источник
11
Я думаю, вы могли бы перечислить шестнадцать комбинаций вручную, что в итоге может занять меньше времени.
Waleed Khan
17
Такой классный вопрос. +1
Flavius
12
Я действительно ожидаю, что вы изменили некоторые из распознанных символов и не публикуете свой настоящий ключ Windows в Интернете ...
Родриго
1
Хех, было бы очень интересно задать вопрос на codegolf.stackexchange.com
Earlz
4
@rodrigo Да, я запутал код :)
Kerridge0

Ответы:

165

Отказ от ответственности: Да, я знаю, что это не код Python . Это просто пришло мне в голову, и мне просто пришлось это записать.

Самый простой способ - использовать расширение оболочки:

$ 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
Я знаю, что это не код на Python. Это просто пришло мне в голову, и мне понравилась эта идея. Нет необходимости отрицать этот ответ. :-(
bikeshedder
Не питон, но все же красивое решение.
Yuval Adam
2
+1 ... и Windows (насколько я знаю) не имеет этого "расширения" ... но вы всегда можете использовать Cygwin
Барранка
55
Что ж, в Windows его может и не быть, но если вам когда-нибудь понадобится повторить лицензионный ключ Linux ... о, подождите, это еще одна причина, по которой я люблю Linux
Дрейк Кларрис
1
Он не только короткий и приятный, но и дает очень четкие ответы для копирования и вставки. На самом деле была пятая переменная, и я получил свой ключ !! Я фактически дал задание «записать» своему коллеге, и он сдался! Большое спасибо.
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

Другой способ создания комбинаций

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

Как насчет использования itertools и 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']
велосипедист
источник
1
Ницца! Мне никогда не приходило в голову, что вы также можете использовать operator.mod для форматирования строк.
Том
@MartijnPieters partialне требуется при использовании, formatпоскольку он ничего не меняет при вызове без *argsили **kwargs. При использовании formatвы не можете передать кортеж напрямую , но нужно , чтобы преобразовать его аргументы первым: map(lambda args: 'MPP6R-09RXG-2H{}MT-{}K{}M9-V{}C8R'.format(*args), product('8B', 'B8', 'HN', '6G')). Я по-прежнему часто использую старое %форматирование строк по сентиментальным причинам. Мне действительно стоит подумать об использовании этой formatфункции чаще.
bikeshedder
Да, я каким-то образом представлял себе применяемые аргументы *args. Моя ошибка.
Мартейн Питерс
3

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

Magical Jelly Bean Keyfinder - это бесплатная утилита, которая извлекает ваш ключ продукта (ключ компакт-диска), используемый для установки Windows из вашего реестра. Он также имеет обновленный сообществом файл конфигурации, который извлекает ключи продуктов для многих других приложений.

Просто запустите его при установке, для которой нужен ключ.

Пол Коллингвуд
источник
2
К сожалению, Windows, установленная на ноутбуке, не использует лицензионный ключ, который находится на нижней стороне ноутбука, а устанавливается с использованием какого-то корпоративного ключа громкости. Microsoft не разрешает использовать эти коды для проверки обновления Windows.
Kerridge0
1

Если вы используете опцию обновления Windows Anytime Upgrade непосредственно из Windows 7, вам НЕ нужно знать, какой у вас лицензионный ключ.

Пока операционная система активирована, Windows 8 просто перезапишет существующую операционную систему и поместит все из Windows 7 в «устаревшую» папку Windows, которую вы можете удалить, если вам не нужен файл или что-то в этом роде.

Процесс обновления Windows ищет активированную операционную систему Windows, даже Windows XP подойдет, если она активирована до установки обновления.

Вам будет отправлен лицензионный ключ Windows 8 по электронной почте при покупке через Anytime Upgrade. Если вы покупаете обновление в магазине, вы просто получите лицензионный ключ и URL-адрес для загрузки ИЛИ вы просто вставите ключ в Windows Anytime Upgrade, и он загрузится и установится.

phpMedler
источник
Верно, однако на момент публикации этот код был необходим для «предложения по обновлению Windows». Этот процесс также может быть полезен для тех, кто хотел бы переустановить Windows с использованием кода на сертификате подлинности и больше не имеет раздела восстановления производителя.
Kerridge0 06