Hacker News new | ask | show | jobs
by chungy 1208 days ago
OEM keys for Windows 95 followed a similar structure to the retail key, albeit with a lot more digits.

OEM Windows 95 keys came in the form of XXXXX-OEM-00YYYYY-ZZZZZ. The XXXXX grouping represents when Microsoft issued the key by day-of-year and year, and the operating system would validate any number where the first three numbers range from 001 to 365 (or 366 for year 96), and the last two X digits were 95-99. The YYYYY group must be a multiple to 7, excluding the number 0. The ZZZZZ group is basically noise and anything is permissible in them.

Now you can run a Windows 95 keygen in your head. You're welcome :)

Actually I believe Windows 98, Me, and 2000 have a similar scheme but they obfuscate it with some algorithm to generate the 25-char alphanumeric style that Microsoft continues to use to this day. I've never dug into how it goes, but you can see the 95-style key on System Properties post-install.

1 comments

For no reason other than it seemed fun, I used this new knowledge to implement my own version of said key-gen, in my choice of dev environment: Swift and Xcode playgrounds. Fun little exercise.

https://gist.github.com/Bonney/5cc85f41cdeb80146c7d5169ded8a...

Impressive, I see one definite problem and a potential one:

* I had incorrectly stated the conditions of the Y grouping. The digits must sum up to a multiple of 7, rather than be a multiple of 7 by themselves. 0000007 and 0000016 are valid sequences, for instance, but 0000014 is not.

* The Z grouping probably has to be [0-9]. At least I've never tested non-numeric characters whenever I've installed Windows 95 (I usually type out 00195-OEM-0000007-00000 when I install it).