6 Commits

Author SHA1 Message Date
TheTank20
972eef88b6 again 2025-07-22 23:55:48 -05:00
TheTank20
3d94685209 make the exe smaller? 2025-07-22 23:48:57 -05:00
TheTank20
e45776479d pipe support for confids (#140) 2025-07-19 17:18:30 -05:00
Neo
8ac486f806 Update CI display text 2025-07-19 13:32:43 -07:00
Neo
cbc1af3306 include new logo in readme.md
taking a large helping of style from the MAS project (thanks y'all <3)
2025-07-19 13:04:04 -07:00
TheTank20
50279dee5a Change the Icon to a new design (#139)
* placeholder icon change

* macOS icon + diff placeholder

* oh yeah we're an app now

* oh yeah we're an app now x2

* use open -a

* use --args

* Revert because you just don't use macos icons for cli

* Revert x2

* new icon

* remove bad macos icon

---------

Co-authored-by: TehAwesomestKitteh <jorem9@gmail.com>
2025-07-19 11:23:49 -07:00
10 changed files with 54 additions and 33 deletions

View File

@@ -18,7 +18,7 @@
# @FileCreated by Neo on 06/19/2023
# @Maintainer Neo
name: C/C++ CI (DOS DJGPP)
name: DOS DJGPP
on:
push:

View File

@@ -18,7 +18,7 @@
# @FileCreated by techguy16 on 07/23/2023
# @Maintainer techguy16
name: C/C++ CI (FreeBSD)
name: FreeBSD
on:
#push:

View File

@@ -18,7 +18,7 @@
# @FileCreated by TheTank20 on 06/13/2023
# @Maintainer Neo
name: C/C++ CI (Linux)
name: Linux
on:
push:

View File

@@ -18,7 +18,7 @@
# @FileCreated by techguy16 on 07/23/2023
# @Maintainer techguy16
name: C/C++ CI (macOS)
name: macOS
on:
push:

View File

@@ -18,7 +18,7 @@
# @FileCreated by TheTank20 on 07/08/2025
# @Maintainer Neo
name: C/C++ CI (Windows ARM)
name: Windows ARM
on:
push:

View File

@@ -18,7 +18,7 @@
# @FileCreated by TheTank20 on 07/08/2025
# @Maintainer Neo
name: C/C++ CI (Windows x86+64)
name: Windows x86+64
on:
push:

View File

@@ -27,6 +27,11 @@ if (WIN32 AND NOT MSVC)
set(CMAKE_CXX_COMPILER "C:/TDM-GCC-64/bin/g++.exe" CACHE FILEPATH "C++ Compiler" FORCE)
message(STATUS "[UMSKT] Forcing use of TDM-GCC in C:/TDM-GCC-64")
# Add size optimization flags for GCC
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os -s -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -fno-stack-protector")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os -s -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -fno-stack-protector")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Wl,--gc-sections -Wl,--strip-all")
# Configure windres for resource compilation
set(CMAKE_RC_COMPILER "C:/TDM-GCC-64/bin/windres.exe")
set(CMAKE_RC_COMPILER_INIT windres)
@@ -123,13 +128,13 @@ ENDIF()
IF(MSVC)
SET(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
IF(NOT BUILD_SHARED_LIBS)
SET(CMAKE_CXX_FLAGS_RELEASE "/MT")
SET(CMAKE_CXX_FLAGS_RELEASE "/MT /Os /GL /GS- /Gy")
SET(CMAKE_CXX_FLAGS_DEBUG "/MTd")
ELSE()
SET(CMAKE_CXX_FLAGS_RELEASE "/MD")
SET(CMAKE_CXX_FLAGS_RELEASE "/MD /Os /GL /GS- /Gy")
SET(CMAKE_CXX_FLAGS_DEBUG "/MDd")
ENDIF()
SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT")
SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT /OPT:REF /OPT:ICF")
SET(CMAKE_ENABLE_EXPORTS ON)
SET(UMSKT_EXE_WINDOWS_EXTRA src/windows/umskt.rc)
SET(UMSKT_EXE_WINDOWS_DLL src/windows/dllmain.cpp)

View File

@@ -1,24 +1,26 @@
# Universal MS Key Toolkit (UMSKT)
<p align="center"><img src="https://avatars.githubusercontent.com/u/135211890?s=128&c=0" alt="umskt logo"/></p>
<h1 align="center"><b>U</b>niversal <b>MS</b> <b>K</b>ey <b>T</b>oolkit (UMSKT)</h1>
<p align="center">An open source toolkit designed to generate licence keys for MS products circa 1998 - 2006</p>
<hr />
**Connect with us**
[![Zulip chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://umskt.zulipchat.com)
[![libera.chat - #mspid](https://img.shields.io/badge/libera.chat-%23mspid-brightgreen)](https://web.libera.chat/gamja/?nick=Guest?#mspid)
[![Discord](https://img.shields.io/discord/1154155510887620729?label=discord&color=%235865F2)](https://discord.gg/PpBSpuphWM)
[![libera.chat - #mspid](https://img.shields.io/badge/libera.chat-%23mspid-brightgreen)](https://web.libera.chat/gamja/?nick=Guest?#mspid)
[![Zulip chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://umskt.zulipchat.com)
**Build status**
----
[![C/C++ CI (Windows x86+64)](https://github.com/UMSKT/UMSKT/actions/workflows/windows-x86-x64.yml/badge.svg)](../../actions/workflows/windows-x86-x64.yml)
[![C/C++ CI (Windows ARM)](https://github.com/UMSKT/UMSKT/actions/workflows/windows-arm.yml/badge.svg)](../../actions/workflows/windows-arm.yml)
[![C/C++ CI (macOS)](https://github.com/UMSKT/UMSKT/actions/workflows/macos.yml/badge.svg)](../../actions/workflows/macos.yml)
[![C/C++ CI (Linux)](https://github.com/UMSKT/UMSKT/actions/workflows/linux.yml/badge.svg)](../../actions/workflows/linux.yml)
[![C/C++ CI (FreeBSD)](https://github.com/UMSKT/UMSKT/actions/workflows/freebsd.yml/badge.svg)](../../actions/workflows/freebsd.yml)
[![C/C++ CI (DOS DJGPP)](https://github.com/UMSKT/UMSKT/actions/workflows/dos-djgpp.yml/badge.svg)](../../actions/workflows/dos-djgpp.yml)
| CI Build status |
| ------------ |
| [![Windows x86+64](https://github.com/UMSKT/UMSKT/actions/workflows/windows-x86-x64.yml/badge.svg)](../../actions/workflows/windows-x86-x64.yml) |
| [![Windows ARM](https://github.com/UMSKT/UMSKT/actions/workflows/windows-arm.yml/badge.svg)](../../actions/workflows/windows-arm.yml) |
| [![macOS](https://github.com/UMSKT/UMSKT/actions/workflows/macos.yml/badge.svg)](../../actions/workflows/macos.yml) |
| [![Linux](https://github.com/UMSKT/UMSKT/actions/workflows/linux.yml/badge.svg)](../../actions/workflows/linux.yml) |
| [![FreeBSD](https://github.com/UMSKT/UMSKT/actions/workflows/freebsd.yml/badge.svg)](../../actions/workflows/freebsd.yml) |
| [![DOS DJGPP](https://github.com/UMSKT/UMSKT/actions/workflows/dos-djgpp.yml/badge.svg)](../../actions/workflows/dos-djgpp.yml) |
------

View File

@@ -61,7 +61,7 @@ void CLI::showHelp(char *argv[]) {
fmt::print("\t-v --verbose\tenable verbose output\n");
fmt::print("\t-n --number\tnumber of keys to generate (defaults to 1)\n");
fmt::print("\t-f --file\tspecify which keys file to load\n");
fmt::print("\t-i --instid\tinstallation ID used to generate confirmation ID\n");
fmt::print("\t-i --instid\tinstallation ID used to generate confirmation ID (reads from stdin if no argument provided)\n");
fmt::print("\t-m --mode\tproduct family to activate.\n\t\t\tvalid options are \"WINDOWS\", \"OFFICEXP\", \"OFFICE2K3\", \"OFFICE2K7\" or \"PLUSDME\"\n\t\t\t(defaults to \"WINDOWS\")\n");
fmt::print("\t-p --productid\tthe product ID of the Program to activate. only required for Office 2K3 and Office 2K7 programs\n");
fmt::print("\t-b --binkid\tspecify which BINK identifier to load (defaults to 2E)\n");
@@ -168,14 +168,14 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) {
options->keysFilename = argv[i+1];
i++;
} else if (arg == "-i" || arg == "--instid") {
if (i == argc - 1) {
options->error = true;
break;
}
options->instid = argv[i+1];
options->applicationMode = MODE_CONFIRMATION_ID;
i++;
if (i == argc - 1 || argv[i+1][0] == '-') {
// No argument provided, will read from stdin later
options->instid = "";
} else {
options->instid = argv[i+1];
i++;
}
} else if (arg == "-m" || arg == "--mode") {
std::string mode = argv[i+1];
char *p = &mode[0];
@@ -369,6 +369,12 @@ bool CLI::stripKey(const char *in_key, char out_key[PK_LENGTH]) {
return (i == PK_LENGTH);
}
std::string CLI::readFromStdin() {
std::string input;
std::getline(std::cin, input);
return input;
}
CLI::CLI(Options options, json keys) {
this->options = options;
this->keys = keys;
@@ -572,7 +578,14 @@ int CLI::BINK2002Validate() {
int CLI::ConfirmationID() {
char confirmation_id[49];
int err = ConfirmationID::Generate(this->options.instid.c_str(), confirmation_id, options.activationMode, options.productid, options.overrideVersion);
std::string instid = this->options.instid;
// If instid is empty, read from stdin
if (instid.empty()) {
instid = readFromStdin();
}
int err = ConfirmationID::Generate(instid.c_str(), confirmation_id, options.activationMode, options.productid, options.overrideVersion);
switch (err) {
case ERR_TOO_SHORT:

View File

@@ -96,6 +96,7 @@ public:
static void printID(DWORD *pid);
void printKey(char *pk);
static bool stripKey(const char *in_key, char out_key[PK_LENGTH]);
static std::string readFromStdin();
int BINK1998Generate();
int BINK2002Generate();