Mercurial > codedump
changeset 63:bdcdd9c42043
Create win95kggui.c
committer: GitHub <noreply@github.com>
author | Paper <37962225+mrpapersonic@users.noreply.github.com> |
---|---|
date | Sat, 23 Apr 2022 05:57:34 -0400 |
parents | 8be9281d7ade |
children | 94acc374973f |
files | win95kggui.c |
diffstat | 1 files changed, 196 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/win95kggui.c Sat Apr 23 05:57:34 2022 -0400 @@ -0,0 +1,196 @@ +/** + * Windows 95 Keygen (Win32 version) + * Copyright (c) Paper 2022 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +**/ +#include <stdio.h> +#include <windows.h> +#include <stdint.h> +#include <stdbool.h> +#include <commdlg.h> +#include <math.h> +#include <time.h> +#define _WIN32_WINNT 0x0400 +#define ARRAYSIZE(a) \ + sizeof(a)/sizeof(a[0]) +#define CONCAT_INTS(x, y) \ + x * pow(10, log10(y)+1) + y +#ifdef _MSC_VER +#define strdup(p) _strdup(p) +#endif +#define GENERATE_KEY 1 +#define LISTBOX 2 +#define KEY 3 +int type; +HWND hWndListBox, key_box; + +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 = num + 1; + } + return num; +} + +int win95_suffix(bool isoem) { + int first_digits, last_digit, second_segment = 5; + while (get_sum(second_segment) % 7 != 0) { + if (isoem == false) { + first_digits = rand() % 1000000; + } else { + 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); + } + return second_segment; +} + +int office_prefix() { + int new_site = 0; + int ez_pwned = 0; + while (CONCAT_INTS(new_site, ez_pwned) == 0) { + new_site = rand() % 100; + ez_pwned = (new_site % 10) + 2; + if (ez_pwned >= 10) { + ez_pwned -= 10; + } + } + return CONCAT_INTS(new_site, ez_pwned); +} + +int oem_prefix() { + const char* years[] = { + "95", + "96", + "97", + "98", + "99", + "00", + "01", + "02", + "03" + }; + char buf[6]; + sprintf(buf, "%03d", (rand() % 366) + 1); + strcat(buf, years[rand() % 9]); + int buf2 = atoi(buf); + return buf2; +} + +void AddControls(HWND hWnd) { + int i = 0; + /* Open File */ + HWND gen_button = CreateWindowA("Button", "Generate Key", WS_VISIBLE | WS_CHILD, (int)((225 - 100)/2), 5, 100, 20, hWnd, (HMENU)GENERATE_KEY, NULL, NULL); + /* Type */ + TCHAR listbox_items[][7] = {"Normal", "OEM", "Office"}; + hWndListBox = CreateWindowA("Listbox", NULL, WS_VISIBLE | WS_CHILD | LBS_STANDARD | LBS_NOTIFY, (int)((225 - 100)/2), 55, 100, 40, hWnd, (HMENU)LISTBOX, NULL, NULL); + for (i = 0; i < ARRAYSIZE(listbox_items); i++) { + int pos = (int)SendMessage(hWndListBox, LB_ADDSTRING, i, (LPARAM) listbox_items[i]); + SendMessage(hWndListBox, LB_SETITEMDATA, pos, (LPARAM) i); + } + SendMessage(hWndListBox, LB_SETCURSEL, (WPARAM)0, (LPARAM)0); + // idk + key_box = CreateWindowA("Edit", "", WS_VISIBLE | WS_CHILD | ES_READONLY | ES_CENTER | ES_MULTILINE, (int)((225 - 150)/2), 100, 150, 40, hWnd, (HMENU)KEY, NULL, NULL); + if (gen_button == NULL || hWndListBox == NULL || key_box == NULL) + MessageBoxA(hWnd, "how did you even trigger this", "GUI could not be initialized!", MB_ICONEXCLAMATION); +} + +bool CALLBACK SetFont(HWND child, LPARAM font) { + SendMessage(child, WM_SETFONT, font, true); + return true; +} + +LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { + switch(msg) { + case WM_COMMAND: + if(HIWORD(wParam) == CBN_SELCHANGE) { + if (LOWORD(wParam) == LISTBOX) + type = SendMessageA((HWND) lParam, (UINT) LB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); + } + switch(wParam) { + case GENERATE_KEY: { + char* p = calloc(24, sizeof(char)); + switch(type) { + case 2: + snprintf(p, 24, "%04d-%07d", office_prefix(), win95_suffix(false)); + SendMessageA(key_box, WM_SETTEXT, (WPARAM)0, (LPARAM)p); + break; + case 1: + snprintf(p, 24, "%05d-OEM-%07d-%05d", oem_prefix(), win95_suffix(true), (rand() % 100000)); + SendMessageA(key_box, WM_SETTEXT, (WPARAM)0, (LPARAM)p); + break; + case 0: + snprintf(p, 24, "%03d-%07d", win95_nt4_prefix(), win95_suffix(false)); + SendMessageA(key_box, WM_SETTEXT, (WPARAM)0, (LPARAM)p); + break; + } + } + case LISTBOX: + break; + case KEY: + break; + } + break; + case WM_CREATE: { + AddControls(hWnd); + EnumChildWindows(hWnd, (WNDENUMPROC)SetFont, (LPARAM)GetStockObject(DEFAULT_GUI_FONT)); + break; + } + case WM_DESTROY: + PostQuitMessage(0); + break; + default: + return DefWindowProcA(hWnd, msg, wParam, lParam); + } + return false; +} + +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR args, int ncmdshow) { + srand((unsigned) time(NULL)); // magic rand() stuff :p + WNDCLASSA wc = {0}; + + wc.hbrBackground = (HBRUSH)COLOR_WINDOW; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hInstance = hInstance; + wc.lpszClassName = "win95kg"; + wc.lpfnWndProc = WindowProcedure; + + if (!RegisterClassA(&wc)) return -1; + + CreateWindowA("win95kg", "Windows 95 Keygen", WS_OVERLAPPED | WS_VISIBLE | WS_MINIMIZEBOX | WS_SYSMENU, 100, 100, 225, 200, NULL, NULL, hInstance, NULL); + + MSG msg = {0}; + + while (GetMessage(&msg, NULL, 0, 0)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + return 0; +}