それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

UbuntuでWindowsのプロダクトキーを取得する。

概要

USBメモリUbuntuWindowsマシンをブートしてWindowsのプロダクトキー(DigitalProductId)を取り出すことが出来る。

次のコマンド

sudo apt install chntpw
chntpw -e /media/ubuntu/OS/Windows/System32/config/SOFTWARE
## chntpw で
dpi \Microsoft\Windows NT\CurrentVersion\DigitalProductId

BIOSに搭載のキーは

sudo strings /sys/firmware/acpi/tables/MSDM

用意するもの

ubuntu が起動するUSBメモリ

Rufus / UNetbootinUbuntuのISOから作成する。終了後もデータが残るようにすると良い。

Windows PCにUSBメモリを挿して起動

USBメモリさしてUbuntuで起動する

一般的なPCだと、起動時にF12あたりを連打してるとUbuntuから起動する。

Ubuntu が起動したら

ターミナルを起動する。

ネットワーク設定がうまく言ってることを確認

ping 1.1.1.1

apt installを使えるようにする

sudo add-apt-repository universe

chntpw をインストール

sudo apt install chntpw

windows のディスクをマウント

Windows のディスクをマウントして使えるようにする。

Disk アプリから 再生ボタン▶を押せば、自動的にマウントされる。

もし、Bitlockerをしていれば、この時点でアクセスできないので、 sudo apt install dislocker を使ってパスワードを用意してBitlockerの暗号化を読み込めるようにしておく。

マウントできたことを確認

mount 
ls /media/ubuntu/OS/Windows/

レジストリにアクセスし、キーをサルベージ

Windowsレジストリは、/Windows/System32/config/SOFTWARE なので、そこをめがけて開く

chntpw -e /media/ubuntu/OS/Windows/System32/config/SOFTWARE
> dpi \Microsoft\Windows NT\CurrentVersion\DigitalProductId

実際にやってみると、次のような感じ

> dpi \Microsoft\Windows NT\CurrentVersion\DigitalProductId
Value <\Microsoft\Windows NT\CurrentVersion\DigitalProductId> of type REG_BINARY, data length 164 [0xa4]

Decoded product ID: [XXXXXXXXXXXXXXVFPMG]

### Office15くらいならプロダクトキーもわかるっぽい
cat Microsoft\Office\15.0\ClickToRun\Scenario\INSTALL\ProductKeys
Value <Microsoft\Office\15.0\ClickToRun\Scenario\INSTALL\ProductKeys> of type REG_SZ (1), data length 60 [0x3c]
XXX-XXX-XXXX-XXXX-XXXXX

たまたま、転がっていた古いノートPCで試したところ、問題なく動いたし、ついでに古いOfficeのライセンスも取り出しておいた。つええ

BIOSOEMキー

UEFI/BIOSに含まれるWindowsOEMキーは、sys ファイルシステムから取れる。って。まじか!

sudo strings /sys/firmware/acpi/tables/MSDM

やってみた。

takuya@lenovo:~$ sudo strings /sys/firmware/acpi/tables/MSDM
[sudo] password for takuya:
MSDMU
 XXXXX-XXX -
AMI
XXXX-XXXX-XXX-XXXX-9QBK4

なんか出てきますね。

ログイン・パスワードの初期化

chntpw を使えば、Windowsのユーザーのパスワードを「消去」したり、パスワードの変更ができる。

NTFSを書き換えるので、ReadOnlyではなく、ReadWriteで再マウントが必要

sudo mount -o remount,rw  /media/ubuntu/OS/
/media/ubuntu/OS/Windows/System32/config
sudo chntpw -u takuya_1st SAM
Select  [q] :1 
Select  [q] :q

これで、パスワードをリセットして空にすることが出来る。

ただし、マイクロソフト・アカウントと紐付いたWindowsアカウントはこの方法では解除することはできません。

セキュリティ的な懸念と対策。

UbuntuのUSBドライブがあるだけで、Windowsのライセンスをぶっこ抜かれます。これはUSB怖いとかそういうことではありません。

WindowのインストールされたHDDを暗号化していないために起こりえます。今すぐBitlockerで暗号化してください。

もしくは物理的に安全な場所に設置してください(家庭内など)モバイルノートPCは暗号化必須だと思ってください。

Win11からTPM必須でブートに制限がかかったり暗号化ディスクを使うようになってるのは理に適っているのです。

従来のセキュリティのUSBブートをさせない、USBメモリが駄目、BIOSパスワードを掛けろ、はなく、「暗号化しろ」というわけなのです。

そして、ローカルアカウントではなくマイクロソフトアカウントを使ってPIN入力(PINは本体に保存される)を使うほうが安全なのです。

参考資料