Windows 95のプロダクトキーは「111-1111111」や「000-0000000」でも突破できる超単純アルゴリズムで実装されていた

GIGAZINE



1995年に登場した「Windows 95」のインストール時にはプロダクトキーの入力を求めらるのですが、プロダクトキーは「111-1111111」や「000-0000000」といった単純な数字の羅列でも認証されてしまいます。このような単純なプロダクトキーでも認証可能な理由について、セキュリティ研究者のstacksmashing氏が解説しています。

Why 111-1111111 is a valid Windows 95 key – YouTube
[embedded content]

これが、Windows 95のプロダクトキー入力画面です。不正なプロダクトキーを入力するとインストールを続行できなくなるのですが、「111-1111111」という単純なプロダクトキーでも「正しいプロダクトキー」として認識され、インストールを続行できます。


また、先頭の3桁を「000-1111111」「001-1111111」「567-1111111」といったように変更してもインストールを続行できます。


ただし、「先頭の3桁は何でもOK」というわけではありません。試しに、「333-1111111」と入力。


すると、インストールを続行できませんでした。他にも、「444-1111111」「555-1111111」といった「0や1、2以外の数字3連続」を先頭3桁に入力するとインストールを続行できなくなります。


次に、下7桁を「1の連続」以外の数字に変えてみます。まず、「000-0000001」と入力。


しかし、「000-0000001」は正しいプロダクトキーと認識されず、インストールを続行できませんでした。


下1桁の数字を1ずつ増やしていくと、「000-0000007」が正しいプロダクトキーとして認識されました。


下1桁の数字を順番に増やした結果、以下のプロダクトキーが正しいプロダクトキーとして認識されることが判明。


これらのプロダクトキーの特徴は、「すべての桁の数字を合計すると、0や7といった『7で割り切れる数字』になる」という点です。


冒頭の「111-1111111」も同様に、すべての桁の数字を合計すると「7」になります。


上記の検証結果から、プロダクトキーの下7桁は「すべての桁の合計が7で割り切れる数字」か否かで合否が判断されていると考えられます。


続いて、リバースエンジニアリングツール「Ghidra」でプロダクトキーの合否判断部分の仕組みを確認してみます。


リバースエンジニアリングの』結果、先頭3桁は「333」「444」「555」「666」「777」「888」「999」がブラックリストに入れられており、他の3桁の数字なら何でもOKなことが判明。加えて、先頭3桁と下7桁をつなぐ文字はチェックされていないことも判明しました。


さらに、「すべての桁の合計が7で割り切れる数字なら合格」というコードが含まれていることも判明しました。


まとめると、Windows 95のプロダクトキーの条件は以下の通り。

・先頭3桁は「333」「444」「555」「666」「777」「888」「999」以外ならOK
・4桁目は数字でも文字でも何でもOK
・下7桁は各桁の合計が7で割り切れればOK


条件に当てはまっていれば、「YOLO0000000」といったプロダクトキーでもインストールを続行できるというわけです。


上記の条件は、Windows 95のリテール版の場合の条件です。OEM版Windows 95の場合は、以下の条件が適用されます。

・先頭は1~366
・先頭に続いて「95」「96」「97」「98」「99」「00」「01」「02」のいずれか
・ハイフンに続いて「OEM」と入力
・ハイフンにつづいて合計が7で割り切れる7桁の数字。ただし、1桁目は「0」に限る
・末尾の5桁は数字なら何でもOK


この記事のタイトルとURLをコピーする

Source

タイトルとURLをコピーしました