現在、ubuntuの使用に苦労していますが、何か助けが必要です。
だから今、Windows 7が何らかの形で去った後、USBフラッシュドライブからubuntuを実行しています。
Ubuntu内からラップトップのハードドライブのどこかにあるWindowsプロダクトキーを取得するにはどうすればよいですか?
最初に recovery mode に移動してUbuntuを回復します
Sudo apt install --reinstall ubuntu-desktop
この答えは私によって書かれたものではなく、 Thomas on Superuser によって書かれています。
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です
this が実際にどのように機能するのか疑問に思う人には。
基本的に、レジストリキーの内容を取得する必要があります。
HKLM\Software\Microsoft\Windows NT\CurrentVersion\DigitalProductId
これはいわゆるREG_BINARY
です。意味は単なるバイトのコレクションです。 chntpw
経由でダンプするか、手動でコピーできます。
いくつかの擬似コードを使用してプロダクトキーを取得するために、これらのバイトをどうするかを見てみましょう。
それらを配列に入れたら、製品IDをエンコードするバイトのサブセットを抽出する必要があります。特に、52〜(52 + 14)の範囲。それはあなたに15バイトを与えます。
EncodedId = DigitalProductId.Range(52, 52+14)
これは依然として大量のバイトであり、プロダクトキーとはまったく異なります。それをデコードしましょう。
そのためには、プロダクトキーを作成できるすべての文字のコレクションが必要です。
Characters = "BCDFGHJKMPQRTVWXY2346789"
はい、これはアルファベット全体ではありません。結局のところ、Windowsプロダクトキーは英数字記号のすべてを使用するわけではありません。
それでは、デコードを行いましょう。必要なもの:
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
はコメントであり、無視されますスーパーユーザー で、C#、PowerShell、およびPythonの3つの実際の実装を確認できます。