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をコピーする