Могу ли я восстановить свой ключ продукта Windows из Ubuntu? [дубликат]

На этот вопрос уже есть ответ здесь:

Я сейчас борюсь с использованием ubuntu и нужна помощь.

Итак, сейчас я запускаю Ubuntu с USB-накопителя после того, как Windows 7 каким-то образом ушла.

Как я могу получить ключ продукта Windows, который находится где-то на жестком диске моего ноутбука, из Ubuntu?

36
задан 5 September 2017 в 20:54

2 ответа

Сначала восстановите свою Ubuntu с движением к режим восстановления и выполнение

sudo apt install --reinstall ubuntu-desktop
<час>

, Этот ответ не записан мной, но Thomas на Суперпользователь , голосуйте там при голосовании здесь спасибо

существует большой инструмент, доступный для Linux, названного chntpw. Можно получить его легко на Debian/Ubuntu через:

sudo apt install chntpw

Для изучения соответствующего файла реестра монтируют диск Windows и открывают его как так:

chntpw -e /path/to/windisk/Windows/System32/config/software

Теперь для получения декодируемого DigitalProductId вводят эту команду:

dpi \Microsoft\Windows NT\CurrentVersion\DigitalProductId

в комментарии А снизу говорится

, путь к соответствующему файлу реестра является/path/to/windisk/Windows/System32/config/RegBack/SOFTWARE

45
ответ дан 23 November 2019 в 00:21

Таким образом для любого задающегося вопросом, как это на самом деле работает.

По существу необходимо будет захватить содержание ключа реестра

HKLM\Software\Microsoft\Windows NT\CurrentVersion\DigitalProductId

Это - так называемое REG_BINARY. Значение это - просто набор байтов. Вы могли вывести их через chntpw или скопируйте их вручную.

Давайте посмотрим то, что мы имеем отношение к тем байтам для получения нашего ключа продукта с помощью некоторого псевдо кода.

После того как у Вас есть те, которые в Массиве, необходимо извлечь подмножество байтов, которые кодируют идентификатор продукта. В особенности: диапазон между 52 и (52 + 14). Это дает Вам 15 байтов.

EncodedId = DigitalProductId.Range(52, 52+14)

Это - все еще набор байтов, которые не делают вообще напоминают ключ продукта. Таким образом давайте декодировать его.

Для этого Вам нужен набор всех символов, из которых может быть сделан ключ продукта:

Characters = "BCDFGHJKMPQRTVWXY2346789"

Да это не целый алфавит. Как оказалось, ключ продукта Windows не использует все алфавитно-цифровые символы.

Теперь давайте сделаем декодирование. Нам будет нужно:

  • Переменная для содержания ключа продукта
  • Цикл от более чем 0 до 24. Для каждого символа нашего ключа продукта
  • Внутренний цикл от более чем 0 до 14 (Наоборот) Для каждого байта в нашем закодированном идентификаторе
  • Некоторый бит fiddeling и арифметика для процесса декодирования

ProductKey = ""
FOR i = 0 TO 24
    c = 0

    FOR j = 14 TO 0 STEP -1
        # Shift the current contents of c to the left by 1 byte 
        #  and xor it with the next byte of our id
        c = (c * 256) XOR EncodedId[j]

        # Put the result of the divison back into the array
        EncodedId[j] = FLOOR(c / 24)

        # Calculate remainder of c
        c = c MOD 24
    LOOP
    # Take character at position c and prepend it to the ProductKey
    ProductKey = Characters[c] + ProductKey
LOOP

Наконец мы вставляем "-" символ в строку в соответствующих местах.

FOR i = 4 TO 1 STEP -1
    ProductKey = ProductKey.Insert(i * 5, "-")
LOOP

И мы сделаны!

... Почти:

PRINT(ProductKey)

Теперь!


Поддержка нашего псевдо кода

  • $array.Range($from, $to) Получите содержание $array от $from кому: $to
  • $array.Insert($where, $what) Вставить $what в $where
  • FOR $var = $start TO $stop [STEP $step] циклично выполните переменную $var от $start кому: $stop применение $step на каждом повторении
  • $a XOR $b Вычислите поразрядно эксклюзивный или на числах $a и $b
  • $a MOD $b Вычислите остаток от подразделения $a и $b
  • $array[$i] Возьмите только элемент в положении $i от массива
  • #bla bla Комментарий и будет проигнорирован
  • Строки являются просто массивами символов.

Вы видите 3 фактической реализации в C#, PowerShell и Python в Суперпользователе

6
ответ дан 23 November 2019 в 00:21

Другие вопросы по тегам:

Похожие вопросы: