Je me bats actuellement avec Ubuntu et j'aimerais avoir de l'aide.
En ce moment, je lance Ubuntu depuis une clé USB après Windows 7.
Comment puis-je obtenir ma clé de produit Windows qui se trouve quelque part sur le disque dur de mon ordinateur portable, dans Ubuntu?
Commencez par récupérer votre Ubuntu en allant sur mode de récupération et en cours d'exécution.
Sudo apt install --reinstall ubuntu-desktop
Cette réponse n’est pas écrite par moi mais par Thomas sur superutilisateur , votez-y, merci de voter ici, merci
Il existe un excellent outil disponible pour Linux appelé chntpw. Vous pouvez l'obtenir facilement sur Debian/Ubuntu via:
Sudo apt install chntpw
Pour examiner le fichier de registre approprié, montez le disque Windows et ouvrez-le comme suit:
chntpw -e /path/to/windisk/Windows/System32/config/software
Maintenant, pour obtenir le DigitalProductId décodé, entrez cette commande:
dpi \Microsoft\Windows NT\CurrentVersion\DigitalProductId
Un commentaire de dessous dit
Le chemin d'accès au fichier de registre approprié est/chemin/vers/windisk/Windows/System32/config/RegBack/SOFTWARE
Donc, pour ceux qui se demandent comment this fonctionne réellement.
Essentiellement, vous devrez récupérer le contenu de la clé de registre
HKLM\Software\Microsoft\Windows NT\CurrentVersion\DigitalProductId
C'est ce qu'on appelle REG_BINARY
. Ce qui signifie que c'est juste une collection d'octets. Vous pouvez les transférer via chntpw
ou les copier à la main.
Voyons ce que nous avons à faire avec ces octets pour obtenir notre clé de produit à l'aide d'un pseudo-code .
Une fois que vous avez ceux-ci dans un tableau, vous devez extraire le sous-ensemble d'octets qui codent l'id du produit. En particulier: la plage entre 52 et (52 + 14). Cela vous donne 15 octets.
EncodedId = DigitalProductId.Range(52, 52+14)
Ceci est toujours un tas d'octets, qui ne ressemblent pas du tout à la clé de produit. Alors laissez-nous le décoder.
Pour cela, vous avez besoin de la collection de tous les caractères avec lesquels une clé de produit peut être composée:
Characters = "BCDFGHJKMPQRTVWXY2346789"
Oui, ce n'est pas l'alphabet entier. Une clé de produit Windows n’utilise pas tous les symboles alphanumériques.
Maintenant, faisons le décodage. Nous aurons besoin de:
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
Enfin, nous insérons le caractère "-" dans la chaîne aux endroits appropriés.
FOR i = 4 TO 1 STEP -1
ProductKey = ProductKey.Insert(i * 5, "-")
LOOP
Et nous avons fini!
... Presque:
PRINT(ProductKey)
À présent!
Capacités de notre pseudo-code
$array.Range($from, $to)
Obtenez le contenu de $array
de $from
à $to
$array.Insert($where, $what)
Insérez $what
à $where
FOR $var = $start TO $stop [STEP $step]
boucle la variable $var
de $start
à $stop
en appliquant $step
à chaque itération$a XOR $b
Calculer au format binaire exclusif ou sur les chiffres $a
et $b
$a MOD $b
Calcule le reste de la division de $a
et $b
$array[$i]
Ne prenez que l'élément à la position $i
du tableau#bla bla
Est un commentaire et sera ignoréVous pouvez voir 3 mises en œuvre réelles dans C #, PowerShell et Python sur at super utilisateur