diff win95kg.c @ 64:1508aee998df

Add Windows 95 Keygen GUI
author Paper <mrpapersonic@gmail.com>
date Mon, 25 Apr 2022 02:10:41 -0400
parents
children 96b9e046f45d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win95kg.c	Mon Apr 25 02:10:41 2022 -0400
@@ -0,0 +1,99 @@
+/** 
+ *  Windows 95 Keygen - 4/23/2022
+ *  By Paper
+ *  a "rewrite" of my C++ app to vanilla C
+ *  truth be told, most of it was C already
+ *
+ *  skaven is awesome!!
+**/
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <time.h>
+#include <string.h>
+#define CONCAT_INTS(x, y) \
+	x * pow(10, log10(y)+1) + y;
+
+int get_sum(int n) {
+	int sum;
+	for (sum = 0; n > 0; sum += n % 10, n /= 10); // copied this from google. sorry not sorry
+	return sum;
+}
+
+int win95_nt4_prefix() {
+    int num = rand() % 1000;
+    while ((num == 333) || (num == 444) || (num == 555) || (num == 666) || (num == 777) || (num == 888) || (num == 999) || ((num % 3) != 0)) {
+        num = num + 1;
+    }
+    return num;
+}
+
+int win95_suffix() {
+    int first_digits, last_digit, second_segment = 5;
+    while (second_segment % 7 != 0) {
+        first_digits = rand() % 1000000;
+        last_digit = rand() % 10;
+        while ((last_digit == 0) || (last_digit >= 8)) {
+            last_digit = rand() % 10;
+        }
+		second_segment = CONCAT_INTS(first_digits, last_digit);
+    }
+    return second_segment;
+}
+
+int office_prefix() {
+    int new_site = rand() % 1000;
+    int ez_pwned = new_site % 10 + 1;
+    while (ez_pwned >= 10) {
+        ez_pwned = ez_pwned - 10;
+    }
+    return CONCAT_INTS(new_site, ez_pwned);
+}
+
+int oem_prefix() {
+    int years[] = {
+        95,
+        96,
+        97,
+        98,
+        99,
+        00,
+        01,
+        02,
+        03
+    };
+    return CONCAT_INTS(((rand() % 366) + 1), years[rand() % 9]);
+}
+
+int oem_middle() {
+    int first_digits, last_digit, second_segment, sum = 1;
+    while (sum % 7 != 0) {
+        sum = 0;
+        first_digits = rand() % 10000;
+        last_digit = rand() % 10;
+        while ((last_digit == 0) || (last_digit >= 8)) {
+            last_digit = rand() % 10;
+        }
+        second_segment = CONCAT_INTS(first_digits, last_digit);
+        get_sum(second_segment);
+    }
+    return second_segment;
+}
+
+int main(int argc, char* argv[]) {
+	srand((unsigned) time(NULL)); // magic rand() stuff :p
+    if (argc >= 2) {
+        if (strcmp(argv[1], "--office") == 0) {
+			printf("%04d-%07d", office_prefix(), win95_suffix());
+			return 0;
+        } else if (strcmp(argv[1], "--oem") == 0) {
+			printf("%05d-OEM-%07d-%05d", oem_prefix(), oem_middle(), (rand() % 100000));
+			return 0;
+        } else if (strcmp(argv[1], "--normal") == 0) {
+            printf("%03d-%07d", win95_nt4_prefix(), win95_suffix());
+			return 0;
+        }
+    }
+	printf("usage: %s [--normal] [--oem] [--office]", argv[0]);
+    return 0;
+}
\ No newline at end of file