Усі перестановки ліцензійного ключа 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 .


11
Я думаю, ви могли б перерахувати шістнадцять комбінацій вручну, що, врешті-решт, може зайняти менше часу.
Уелід Хан

17
Таке класне питання. +1
Флавій

12
Я дійсно очікую, що ви змінили деяких визнаних персонажів і не публікуєте свій справжній ключ Windows в Інтернеті ...
rodrigo

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
Я знаю, що це не пітон. Це просто спливало мені в голову, і ідея про це мені сподобалась. Не потрібно спростовувати цю відповідь. :-(
велосипедист

Не пітон, але гарне рішення.
Юваль Адам

2
+1 ... і Windows (наскільки я знаю) не має цього "розширення" ... але ви завжди можете використовувати Cygwin
Barranka

55
Ну, можливо, у Windows його немає, але якщо вам коли-небудь доведеться ітератувати ліцензійний ключ Linux .. о, зачекайте, це ще одна причина, що я люблю Linux
Drake Clarris

1
Він не тільки короткий і солодкий, але й давав відповіді дуже чистим способом для копіювання та вставки. Насправді була 5-я змінна, і я отримав свій ключ !! Я фактично дав завдання «записати це» колезі, і він здався! Дуже дякую.
Керридж0

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функції частіше.
велосипедист

Так, я якось зобразив аргументи, що застосовуються як *args. Моя помилка.
Martijn Pieters

3

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

Magical Jelly Bean Keyfinder - це безкоштовна утиліта, яка отримує ваш ключ продукту (ключ CD), який використовується для встановлення вікон із вашого реєстру. У ньому також є файл конфігурації, оновлений для спільноти, який витягує ключі продуктів для багатьох інших програм.

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


2
На жаль, Windows, встановлена ​​на ноутбуці, не використовує ліцензійний ключ, який можна знайти з нижньої сторони ноутбука, але встановлюється за допомогою якогось корпоративного ключа гучності. Microsoft не дозволяє ці коди використовувати для перевірки оновлення Windows.
Керридж0

1

Якщо ви використовуєте опцію Windows Anytime Upgrade безпосередньо з Windows 7, тоді НЕ потрібно знати, що таке ключ ліцензії.

Поки операційна система активована, тоді Windows 8 просто замінить існуючу операційну систему і помістить все, що з Windows 7, у папку "Windows-old", яку ви можете видалити, якщо вам не потрібен файл чи щось.

Процес оновлення Windows шукає активовану операційну систему Windows, навіть Windows XP робитиме це, доки вона активована перед встановленням оновлення.

Вам буде надіслано електронний лист із ліцензійним ключем Windows 8 при покупці через будь-коли оновлення. Якщо ви купуєте оновлення у магазині, ви просто отримаєте ліцензійний ключ та URL-адресу для завантаження АБО ви просто підключите ключ до оновлення Windows Anytime Upgrade, і він завантажиться та встановиться сам.


Правильно, проте на момент публікації цього коду було потрібно для "Пропозиції щодо оновлення Windows". Цей процес також може бути корисним для тих, хто хотів би перевстановити Windows за допомогою коду на COA і більше не має розділу відновлення виробника.
Керридж0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.