테크레시피

윈도95 제품키에 숨겨진 초단순 알고리즘

지난 1995년 등장한 윈도95를 설치할 때에는 제품키 입력을 요구하지만 제품키는 111-1111111이나 000-0000000이라는 단순한 숫자 열로도 인증이 되어 버린다고 한다.

윈도95 제품키 입력 화면에서 잘못된 제품키를 입력하면 설치를 계속할 수 없게 되지만 111-1111111 같은 단순한 제품키도 올바른 제품키로 인식되어 설치를 계속할 수 있다. 또 맨 앞 3자릿수를 000-1111111, 001-1111111, 567-1111111로 바꿔도 설치를 계속할 수 있다. 다만 맨앞 3자릿수에 뭐든 된다는 얘기는 아니다. 0이나 1, 2 이외 숫자 3연속을 입력하면 설치를 계속할 수 없게 된다. 아래 7가지를 1 연속 이외 숫자로 바꿔보면 000-0000001로 시작하면 올바른 제품키로 인식되지 않지만 1자리 숫자를 차례로 늘리면 올바른 제품키로 인식된다.

제품키 특징은 모든 자리 숫자를 합하면 0과 7 같은 7로 나눌 수 있는 숫자가 된다는 것이다. 111-1111111도 마찬가지로 모든 숫자를 합하면 7이 된다. 이런 검증 결과를 보면 제품키 아래 7자릿수는 모든 자릿수 합계가 7로 나눌 수 있는 숫자인지 아닌지에 따라 합격 여부가 판단되고 있는 것으로 보인다.

리버스 엔지니어링 툴(Ghidra)로 제품키 합격 여부 판단 부분 구조를 확인해보면 맨앞 3자리는 333, 444, 555, 666, 777, 888, 999가 블랙리스트에 들어가 있고 다른 3자리 숫자라면 뭐든 괜찮다는 게 판명됐다. 더구나 맨앞 3자리와 아래 7자리를 잇는 문자를 체크되어 있지 않은 것도 판명됐다. 더구나 모든 자릿수 합계가 7로 나눌 수 있는 숫자라면 합격이라는 코드가 포함되어 있는 것으로 나타났다.

정리하면 윈도95 제품키 조건은 맨앞 3자릿수는 333, 444, 555, 666, 777, 888, 999를 빼면 괜찮다. 또 전체 숫자 합계는 7로 나눠지면 된다. 이 조건에 해당되면 설치를 계속 할 수 있다는 얘기다.

이 조건은 윈도95 소매 버전 조건이다. OEM 버전의 경우 맨 앞은 1, ∼366 이어서 합계가 7로 나뉘는 7자리 숫자. 다만 첫 자리째는 0에 한정한다. 말미 5자릿수는 숫자라면 뭐든 괜찮다.

추천기사