Skip to content

Library for product key generation / validation for Windows 95 and other Microsoft products

License

Notifications You must be signed in to change notification settings

nandolawson/keyforge95

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

keyforge95

version downloads on crates.io downloads on npm build status

This library is a cross-platform generator and validator for Windows 95 keys written in Rust. As it turned out, however, it supposedly works for all Microsoft products that require a 10-digit product key in the following format: XXX-XXXXXXX. In addition to these retail keys, OEM keys (XXXXX-OEM-XXXXXXX-XXXXX) can also be generated. Keyforge95 can not only be easily added to any Rust project via Cargo, but can also be compiled into WebAssembly for JavaScript/TypeScript using wasm-pack or obtained via npm.

It is only sporadically developed as it is solely a learning project for me and does not have particularly significant practical use.

⚠️ Note: keyforge95 and I are in no way associated with Microsoft or their products. Only publicly available information from the internet has been used to create this project. It neither bypasses effective copy measures nor constitutes a "crack." The purpose of this repository, from my perspective, is solely to gain experience in programming and enhance my skills and knowledge.

Compatible Software

  • Access ADI 95
  • Hell Bender
  • Office 7.0b
  • Office Professional 95
  • Plus! 95
  • Plus! 98
  • Return to Arcade
  • Windows 95
  • Windows CE Toolkit for Visual Basic 5
  • Windows CE Toolkit for Visual C++ 5
  • Windows NT 4.0 Server
  • Windows NT 4.0 Workstation
  • Visual Basic Standard 4.0
  • Visual SourceSafe 4.0

Usage

The following information is written for Rust. However, all information should be easily applicable to JavaScript / TypeScript, as this project is a very simple library.

This library only has two public functions: generate_product_key() and validate_product_key()

Generate

After adding keyforge95 to your project, just use generate_product_key(Retail / OEM) to generate a valid product key as a String.

use keyforge95::prelude::*;
let product_key: String = generate_product_key(OEM);
println("Generated product key: {}", product_key);

Validate

To check the validity of a key, add keyforge95 to your project and use validate_product_key("key"). This function returns a bool. It is important that the right formatting (XXX-XXXXXXX) is used for the product key. Otherwise, the validation will fail.

use keyforge95::prelude::*;
let product_key: &str = "000-0000000"
match validate_product_key(product_key) {
    true => println!("Valid key: {}", product_key),
    false => println!("Invalid key: {}", product_key)
}

Compiling

For Rust

No extra steps necessary. Just run cargo build.

For WebAssembly

Install wasm32 as a target in rustup: rustup target add wasm32-unknown-unknown and compile the project: cargo build --target wasm32-unknown-unknown. It is recommended, but not necessary, to compile the project via wasm-pack instead. To do this, simply run cargo install wasm-pack and then wasm-pack build --target nodejs after installing the target mentioned above. The finished build will then end up in the pkg folder in the project root.

Contributing

Anyone who wants to contribute is more than welcome to do so. I would be delighted to learn from the contributions of other users. If you find a bug or have a feature in mind that you think would be useful, please feel free to create a pull request on GitHub. If you decide to fork this project, please make sure to adhere to the license. Your involvement and feedback are highly appreciated!