他人のPCのPINを無断で入手し、ログインする行為は不正アクセス行為となります。不正アクセス行為に該当する場合、不正アクセス禁止法により三年以下の懲役又は百万円以下の罰金に処せられる可能性があります。
また、ログインせずともPINを無断で入手し保管した場合、一年以下の懲役又は五十万円以下の罰金に処せられる可能性があります。
はじめに
初めてじゃない人は初めません、24BのU.N.ABCです。
この記事はWindows 10/11(注)において「PINもパスワードも忘れてログインできない!」とか「PCの所有者がいなくなってログインできないけどデータを救出したい」とか「道端でPCを拾ったけど生意気にもPINを設定していやがったから解析してやるぜ」といった人向けの内容となっています。ちなみに最後の例は普通に犯罪なのでおとなしく自首しましょう。
注)この記事で紹介する方法はほとんどのWindows 11では使えません。これはWindows 11においてTPMが必須となっているからです。なお、この記事では説明用にわざとTPMを無効化したWindows 11を使用しています。
Let's Crack!
必要なもの
今回のCrackingで必要なもの一覧。
- USBメモリ(最低でも4GB)
- CrackするPC(犠牲者,TPMが無効化されているWindows 10/11)
- PIN解析用PC(攻撃者,OSは何でもいい)
- 倫理観(最重要)
犠牲となるPCに関しては今回の場合インターネットに接続されている必要があります。ネット接続なしでもPINの抽出は可能ですが今回は扱いません。また、解析用PCに関しては高性能のGPUを積むことを推奨します(無くても解析可能)。なお、この記事ではPIN解析用PCとしてNVIDIA GeForce RTX 3060tiを搭載したものを使用しています。
流れ
今回の流れ。
- PINのHashを抽出する
- 抽出したHashを解析する
これだけです。簡単でしょ?
Hashって何...?ってなった人はググるなりLLMに聞くなりで(不親切)
事前情報
今回はM.KというユーザーのPINを解析してみます。事前にわざと間違ったPINを入力することでPINは8桁であるということが分かっています。

下ごしらえ
まず事前準備として用意したUSBメモリーにubuntuを焼きます。どのバージョンでも構いませんが、この記事ではubuntu 24.04 LTS を使用します。焼き方は各自でググるなりLLMに聞くなりで。これで準備完了です。では早速PINをCrackしていきましょう!
Hashの抽出
準備したUSBメモリーを犠牲PCに差し、ubuntuを立ち上げましょう。この辺のやり方は「ubuntu usbブート」と検索してもらえばと。BIOSにパスワードがかかっていた場合は電池を抜いてリセットするなりで。

さて、無事にubuntuが起動すれば以下のような画面が表示されるはずです。
言語を選べ、みたいな画面が表示されますが、Xで消しちゃってください。次に「Alt+Ctrl+T」でターミナルを立ち上げます。ターミナルが表示されたら以下のコマンドを入力します。
sudo apt-get update
sudo apt-get upgrade
sudo apt install git
sudo apt install python3-pip
pip install dpapick3 --break-system-packages
git clone https://github.com/Banaanhangwagen/WINHELLO2hashcat.git
cd WINHELLO2hashcat/
なお、あらかじめUSB内にインストールしたubuntuでこれらのコマンドを実行しておけばネット接続なしでもHashの抽出が可能です。その場合、これらのコマンドを下ごしらえの段階で済ませておいてください。

これでHashの抽出準備が完了しました!あとは以下のコマンドを実行し、Hashを抽出するだけです。
python3 WINHELLO2hashcat.py --cryptokeys <crypo keys directory> --masterkey <user masterkey directory> --system <system hive> --security <security hive> --ngc <NGC>
ただし、<crypo keys directory>、<user masterkey directory>、<system hive>、<security hive>、<NGC> はそれぞれ以下のパスに置き換えてください。
-
<crypo keys directory>
"/media/ubuntu/<NAME>/Windows/ServiceProfiles/LocalService/AppData/Roaming/Microsoft/Crypto/Keys" -
<user masterkey directory>
"/media/ubuntu/<NAME>/Windows/System32/Microsoft/Protect/S-1-5-18/User" -
<system hive>
"/media/ubuntu/<NAME>/Windows/System32/config/SYSTEM" -
<security hive>
"/media/ubuntu/<NAME>/Windows/System32/config/SECURITY" -
<NGC>
"/media/ubuntu/<NAME>/Windows/ServiceProfiles/LocalService/AppData/Local/Microsoft/Ngc"
ここで、<NAME>はWindowsがインストールされているボリューム名(画像の例の場合"Windows")に置き換えてください。また、このコマンドを実行する前にmountコマンドなりダブルクリックで開く(画像の例の場合"Windows"をダブルクリック)なり[1]であらかじめマウントしておいてください。
正しく入力すると以下のようなものが出力されます。
ということで無事にHashを抽出できましたー($WINHELLO$以下がHashです)!このHashはあとで使うのでコピーしてどこかに保存しておいてください。次はこのHashを解析していきます。
開こうとして以下のような画面が表示された場合は諦めてください。これはディスクが暗号化されているのが原因であり、最新のWindows 11ではこの設定が自動でONとなっています。
↩︎
Hashの解析
無事Hashが抽出できたので早速解析していきましょう!Hashの解析にはhashcatというツールを使います。公式ページからhashcat binariesをダウンロード・解凍してhashcat.exeがある階層にhash.txtというファイルを作り、先ほど抽出したHashをペーストして保存してください。
そして、コマンドプロンプトを開き以下のコマンドを実行します。
hashcat -m 28100 -w 3 hash.txt -a 3 ?d?d?d?d?d?d?d?d
これで解析が始まりました。sを押すと現在とステータスが分かるらしいので見てみましょう。
Time.Estimated
の部分を見ると10分程度で解析が終了すると書いています。解析が終わるまで待つ間暇なので先ほど実行したコマンドの引数が何を意味するのかを見てみましょう。
-m 28100
というのはhash typeを指定します。今回はWindows PINを解析するので28100
を指定します。hash type一覧は公式ページにあるので暇な人は眺めてみてください。
-w 3
オプションで最大効率で解析するようにします。PCが重くなる可能性があるので解析中に他のタスクをやりたい人はこのオプションを外してください。
-a 3
で総当たり攻撃で解析します。
?d?d?d?d?d?d?d?d
ではマスクを指定しています。?d
は数字1文字を表します。今回解析するのは8桁のPINなのでこのように指定すればよいです。
結果
10分経ちました。解析結果は如何に。
StatusはCracked
となり、PINは19541017
(画像赤枠部分)であることが分かりました!誕生日をPINに設定するのダメ、絶対。
そして、このPINを使用することで...
このようにTPMやディスク暗号化が無効な場合、8桁程度のPINならすぐに破られてしまうことが分かります。
最後に
Windows 11でTPMが必須となり、ディスクの暗号化がデフォルトで有効となったことにより、この記事で紹介した方法でPINを解析することはほぼ不可能となっています。しかし、TPMが必須ではないWindows 10等ではこの手法でPINが破られる可能性があります。PINを破られないようにするためにもTPMを有効化する、BitLockerでディスクを暗号化するなどの対策を取るようにしましょう。
そして最後にお願い。今回紹介した方法を悪用しないように。冒頭にも書きましたが最後にもう一度書いておきます。
他人のPCのPINを無断で入手し、ログインする行為は不正アクセス行為となります。不正アクセス行為に該当する場合、不正アクセス禁止法により三年以下の懲役又は百万円以下の罰金に処せられる可能性があります。
また、ログインせずともPINを無断で入手し保管した場合、一年以下の懲役又は五十万円以下の罰金に処せられる可能性があります。