Posso recuperar a chave do produto Windows do Ubuntu? [duplicado]

23

Estou lutando agora com o uso do Ubuntu e gostaria de ajuda.

Então, agora eu estou executando o Ubuntu a partir de uma unidade flash USB após o Windows 7 de alguma forma à esquerda.

Como posso obter a minha chave do Windows, que está em algum lugar no disco rígido do meu laptop, no Ubuntu?

    
por frugge 05.09.2017 / 22:36

2 respostas

30

Primeiro, recupere seu Ubuntu com o modo de recuperação e executando

sudo apt install --reinstall ubuntu-desktop

Esta resposta não é escrita por mim, mas por Thomas em Superusuário , por favor, vote aqui, se você votar aqui, obrigado

  

Existe uma ótima ferramenta disponível para Linux chamada chntpw. Você pode ter   facilmente no Debian / Ubuntu via:

     

sudo apt install chntpw

     

Para examinar o arquivo de registro relevante, monte o disco do Windows e   abra-o assim:

     

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

     

Agora, para obter o DigitalProductId decodificado, insira este comando:

     

dpi \Microsoft\Windows NT\CurrentVersion\DigitalProductId

Um comentário abaixo diz

  

O caminho para o arquivo de registro relevante é   / path / to / windisk / Windows / System32 / config / RegBack / SOFTWARE

    
por Mark Kirby 05.09.2017 / 23:22
5

Então, para qualquer um que esteja se perguntando como isso realmente funciona.

Essencialmente você terá que pegar o conteúdo da chave de registro

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

Este é um chamado REG_BINARY . Significa que é apenas uma coleção de bytes. Você poderia lançá-los via chntpw ou copiá-los manualmente.

Vamos ver o que temos a fazer com esses bytes para obter nossa chave de produto com a ajuda de algum pseudo-código .

Depois de ter aqueles em uma Matriz, você precisa extrair o subconjunto de bytes que codificam o ID do produto. Em particular: o intervalo entre 52 e (52 + 14). Isso te dá 15 bytes.

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

Este ainda é um monte de bytes, que não se parecem com a chave do produto. Então vamos decodificá-lo.

Para isso, você precisa da coleção de todos os caracteres de uma chave de produto:

Characters = "BCDFGHJKMPQRTVWXY2346789"

Sim, este não é o alfabeto inteiro. Como se constata, uma chave de produto do Windows não usa todos os símbolos alfanuméricos.

Agora vamos fazer a decodificação. Nós vamos precisar de:

  • Uma variável para manter a chave do produto
  • Um loop de 0 a 24. Para cada caractere de nossa chave de produto
  • Um loop interno entre 0 e 14 (ao contrário) Para cada byte em nosso ID codificado
  • Algum pouco fiddeling e arithmatic para o processo de decodificação
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

Finalmente, inserimos o caractere "-" na string nos locais apropriados.

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

E terminamos!

... Quase:

PRINT(ProductKey)

Agora!

Recursos do nosso pseudo-código

  • $array.Range($from, $to) Obter o conteúdo de $array de $from para $to
  • $array.Insert($where, $what) Inserir $what em $where
  • FOR $var = $start TO $stop [STEP $step] executa o loop da variável $var de $start para $stop aplicando $step em cada iteração
  • $a XOR $b Calcula o exclusivo bit a bit ou os números $a e $b
  • $a MOD $b Calcula o restante da divisão de $a e $b
  • $array[$i] Pegue apenas o elemento na posição $i da matriz
  • #bla bla É um comentário e será ignorado
  • As strings são apenas matrizes de caracteres.

Você pode ver duas implementações reais em C # e o PowerShell no Superusuário

    
por MrPaulch 06.09.2017 / 14:42

Tags