comparison 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
comparison
equal deleted inserted replaced
62:8be9281d7ade 64:1508aee998df
1 /**
2 * Windows 95 Keygen - 4/23/2022
3 * By Paper
4 * a "rewrite" of my C++ app to vanilla C
5 * truth be told, most of it was C already
6 *
7 * skaven is awesome!!
8 **/
9 #include <stdio.h>
10 #include <stdlib.h>
11 #include <math.h>
12 #include <time.h>
13 #include <string.h>
14 #define CONCAT_INTS(x, y) \
15 x * pow(10, log10(y)+1) + y;
16
17 int get_sum(int n) {
18 int sum;
19 for (sum = 0; n > 0; sum += n % 10, n /= 10); // copied this from google. sorry not sorry
20 return sum;
21 }
22
23 int win95_nt4_prefix() {
24 int num = rand() % 1000;
25 while ((num == 333) || (num == 444) || (num == 555) || (num == 666) || (num == 777) || (num == 888) || (num == 999) || ((num % 3) != 0)) {
26 num = num + 1;
27 }
28 return num;
29 }
30
31 int win95_suffix() {
32 int first_digits, last_digit, second_segment = 5;
33 while (second_segment % 7 != 0) {
34 first_digits = rand() % 1000000;
35 last_digit = rand() % 10;
36 while ((last_digit == 0) || (last_digit >= 8)) {
37 last_digit = rand() % 10;
38 }
39 second_segment = CONCAT_INTS(first_digits, last_digit);
40 }
41 return second_segment;
42 }
43
44 int office_prefix() {
45 int new_site = rand() % 1000;
46 int ez_pwned = new_site % 10 + 1;
47 while (ez_pwned >= 10) {
48 ez_pwned = ez_pwned - 10;
49 }
50 return CONCAT_INTS(new_site, ez_pwned);
51 }
52
53 int oem_prefix() {
54 int years[] = {
55 95,
56 96,
57 97,
58 98,
59 99,
60 00,
61 01,
62 02,
63 03
64 };
65 return CONCAT_INTS(((rand() % 366) + 1), years[rand() % 9]);
66 }
67
68 int oem_middle() {
69 int first_digits, last_digit, second_segment, sum = 1;
70 while (sum % 7 != 0) {
71 sum = 0;
72 first_digits = rand() % 10000;
73 last_digit = rand() % 10;
74 while ((last_digit == 0) || (last_digit >= 8)) {
75 last_digit = rand() % 10;
76 }
77 second_segment = CONCAT_INTS(first_digits, last_digit);
78 get_sum(second_segment);
79 }
80 return second_segment;
81 }
82
83 int main(int argc, char* argv[]) {
84 srand((unsigned) time(NULL)); // magic rand() stuff :p
85 if (argc >= 2) {
86 if (strcmp(argv[1], "--office") == 0) {
87 printf("%04d-%07d", office_prefix(), win95_suffix());
88 return 0;
89 } else if (strcmp(argv[1], "--oem") == 0) {
90 printf("%05d-OEM-%07d-%05d", oem_prefix(), oem_middle(), (rand() % 100000));
91 return 0;
92 } else if (strcmp(argv[1], "--normal") == 0) {
93 printf("%03d-%07d", win95_nt4_prefix(), win95_suffix());
94 return 0;
95 }
96 }
97 printf("usage: %s [--normal] [--oem] [--office]", argv[0]);
98 return 0;
99 }