18 Commits

Author SHA1 Message Date
27344f6d4b begone strikethrough 2024-07-25 23:32:38 -05:00
01b216dbc4 let it end 2024-06-22 00:01:28 -05:00
Neo
c29db1d30a Update keys.json 2024-04-15 08:02:38 -07:00
1c1e26012f add "2007 Microsoft Office system" bink (#91) 2024-04-15 07:38:26 -07:00
75f22215b1 Merge pull request #92 from thepwrtank18/version-check-bypass
Override version check for confirmation ID's
2024-04-13 16:02:18 -04:00
be99f6b8e9 Update cli.cpp 2024-04-13 19:12:57 +00:00
e830f97e7e Update cli.cpp 2024-04-13 19:01:34 +00:00
0251546d0d Update libumskt.cpp 2024-04-13 18:59:34 +00:00
a12afcd601 Update confid.h 2024-04-13 18:46:31 +00:00
c7a555abe4 Update cli.cpp 2024-04-13 18:44:41 +00:00
74ff4bf144 Update cli.h 2024-04-13 18:43:59 +00:00
2b408913c4 Update cli.cpp 2024-04-13 18:43:50 +00:00
c965b88113 Update confid.cpp 2024-04-13 18:43:32 +00:00
2bc3503fd8 Update cli.h 2024-04-13 18:40:03 +00:00
3fbd1cffea Update cli.cpp 2024-04-13 18:39:58 +00:00
4bf3800281 Comment out ERR_UNKNOWN_VERSION checks
Temporary fix for Office 2007 not generating confid's.
2024-04-13 18:00:07 +00:00
8ec60bf396 Update windows.yml 2024-04-13 14:45:46 +00:00
5fbbd5e6eb changing the openssl links every update isn't sustainable 2024-04-13 14:34:13 +00:00
8 changed files with 47 additions and 34 deletions

View File

@ -52,11 +52,11 @@ jobs:
exit 1
}
- name: Download And Install 32-bit OpenSSL 3.1.4
- name: Download And Install 32-bit OpenSSL
run: |
$installDir = "$Env:ProgramFiles\OpenSSL"
$installerURL = "https://slproweb.com/download/Win32OpenSSL-3_1_4.exe"
$installerName = "Win32OpenSSL-3_1_4.exe"
$installerURL = "https://slproweb.com/download/Win32OpenSSL-3_1_6.exe"
$installerName = "Win32OpenSSL-3_1_5.exe"
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath)
@ -112,11 +112,11 @@ jobs:
exit 1
}
- name: Download And Install 64-bit OpenSSL 3.1.4
- name: Download And Install 64-bit OpenSSL
run: |
$installDir = "$Env:ProgramFiles\OpenSSL"
$installerURL = "https://slproweb.com/download/Win64OpenSSL-3_1_4.exe"
$installerName = "Win64OpenSSL-3_1_4.exe"
$installerURL = "https://slproweb.com/download/Win64OpenSSL-3_1_6.exe"
$installerName = "Win64OpenSSL-3_1_6.exe"
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath)

View File

@ -51,13 +51,12 @@ In light of the recent exponential interest in this project I've decided to put
* Download the latest experimental version using the Actions tab ([Windows](../../actions/workflows/windows.yml?query=branch%3Amaster+is%3Asuccess), [Linux](../../actions/workflows/linux.yml?query=branch%3Amaster+is%3Asuccess), [macOS](../../actions/workflows/macos.yml?query=branch%3Amaster+is%3Asuccess), [FreeBSD](../../actions/workflows/freebsd.yml?query=branch%3Amaster+is%3Asuccess), [DOS DJGPP](../../actions/workflows/dos-djgpp.yml?query=branch%3Amaster+is%3Asuccess))
* ~~*(GitHub account \*not\* required)*~~
* ~~Download the latest release for your operating system and architecture from [the releases page](../../releases)~~
* No official releases right now, use the other method to get the latest version.
* *(GitHub account \*not\* required)*
* Download the latest release for your operating system and architecture from [the releases page](../../releases)
* **Note:** Before continuing, please ensure you have the `umskt` executable extracted and on UNIX-like systems, have execution permissions (`chmod +x umskt`).
#### 2. Install OpenSSL 3.1.2.
#### 2. Install OpenSSL.
For Windows, click [here](https://slproweb.com/products/Win32OpenSSL.html) and choose the right version. For other operating systems, consult your package manager.
*Note: This only applies if the build you download has OpenSSL embedded (static library) or not. You can usually tell if the download size is measured in KB or MB. If it's MB, you don't need this.*

View File

@ -147,6 +147,9 @@
"Office 2007 Standard / Professional / Ultimate / Enterprise": {
"BINK": ["82", "83"]
},
"Office 2007 OEM (2007 MS Office system)": {
"BINK": ["84"]
},
"Office 2007 Home & Student": {
"BINK": ["88", "89"]
}

View File

@ -71,6 +71,7 @@ void CLI::showHelp(char *argv[]) {
fmt::print("\t-u --upgrade\tspecifies the Product Key will be an \"Upgrade\" version\n");
fmt::print("\t-V --validate\tproduct key to validate signature\n");
fmt::print("\t-N --nonewlines\tdisables newlines (for easier embedding in other apps)\n");
fmt::print("\t-o --override\tDisables version check for confirmation ID's, if you need this send an issue on GitHub");
fmt::print("\n");
}
@ -92,6 +93,7 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) {
false,
false,
false,
false,
MODE_BINK1998_GENERATE,
WINDOWS
};
@ -210,6 +212,8 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) {
} else if (arg == "-N" || arg == "--nonewlines") {
options->nonewlines = true;
} else if (arg == "-o" || arg == "--override") {
options->overrideVersion = true;
} else {
options->error = true;
}
@ -559,7 +563,7 @@ 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);
int err = ConfirmationID::Generate(this->options.instid.c_str(), confirmation_id, options.activationMode, options.productid, options.overrideVersion);
switch (err) {
case ERR_TOO_SHORT:

View File

@ -68,6 +68,7 @@ struct Options {
bool error;
bool list;
bool nonewlines;
bool overrideVersion;
MODE applicationMode;
ACTIVATION_ALGORITHM activationMode;

View File

@ -773,7 +773,7 @@ void ConfirmationID::Unmix(unsigned char* buffer, size_t bufSize, const unsigned
}
}
int ConfirmationID::Generate(const char* installation_id_str, char confirmation_id[49], int mode, std::string productid)
int ConfirmationID::Generate(const char* installation_id_str, char confirmation_id[49], int mode, std::string productid, bool overrideVersion)
{
int version;
unsigned char hardwareID[8];
@ -870,7 +870,7 @@ int ConfirmationID::Generate(const char* installation_id_str, char confirmation_
iid_key[3] = 0xF3;
}
Unmix(installation_id, totalCount == 41 ? 17 : 19, iid_key, 4);
if (installation_id[18] >= 0x10)
if (installation_id[18] >= 0x10 && overrideVersion == false)
return ERR_UNKNOWN_VERSION;
#pragma pack(push, 1)
@ -891,31 +891,37 @@ int ConfirmationID::Generate(const char* installation_id_str, char confirmation_
productID[2] = (parsed.ProductIDLow >> 27) & ((1 << 24) - 1);
version = (parsed.ProductIDLow >> 51) & 15;
productID[3] = (parsed.ProductIDLow >> 55) | (parsed.ProductIDHigh << 9);
switch (activationMode) {
case 0:
if (version != (totalCount == 41 ? 9 : 10))
return ERR_UNKNOWN_VERSION;
break;
case 1:
if (version != 1)
return ERR_UNKNOWN_VERSION;
break;
case 3:
if (version != 4)
return ERR_UNKNOWN_VERSION;
if (overrideVersion == false) {
switch (activationMode) {
case 0:
if (version != (totalCount == 41 ? 9 : 10))
return ERR_UNKNOWN_VERSION;
break;
case 1:
if (version != 1)
return ERR_UNKNOWN_VERSION;
break;
case 3:
if (version != 4)
return ERR_UNKNOWN_VERSION;
}
}
break;
case 2:
case 3:
decode_iid_new_version(installation_id, hardwareID, &version);
switch (activationMode) {
case 2:
if (version != 3)
return ERR_UNKNOWN_VERSION;
break;
case 3:
if (overrideVersion == false) {
switch (activationMode) {
case 2:
if (version != 3)
return ERR_UNKNOWN_VERSION;
break;
case 3:
if (version != 4)
return ERR_UNKNOWN_VERSION;
break;
}
}
memcpy(&parsed, hardwareID, 8);
productID[0] = stoi(productid.substr(0,5));

View File

@ -66,7 +66,7 @@ EXPORT class ConfirmationID {
static void Unmix(unsigned char* buffer, size_t bufSize, const unsigned char* key, size_t keySize);
public:
static int Generate(const char* installation_id_str, char confirmation_id[49], int mode, std::string productid);
static int Generate(const char* installation_id_str, char confirmation_id[49], int mode, std::string productid, bool overrideVersion);
//EXPORT static int CLIRun();
};

View File

@ -27,8 +27,8 @@
#include "pidgen3/BINK2002.h"
#include "pidgen2/PIDGEN2.h"
FNEXPORT int ConfirmationID_Generate(const char* installation_id_str, char confirmation_id[49], int mode, std::string productid) {
return ConfirmationID::Generate(installation_id_str, confirmation_id, mode, productid);
FNEXPORT int ConfirmationID_Generate(const char* installation_id_str, char confirmation_id[49], int mode, std::string productid, bool bypassVersion) {
return ConfirmationID::Generate(installation_id_str, confirmation_id, mode, productid, bypassVersion);
}
FNEXPORT EC_GROUP* PIDGEN3_initializeEllipticCurve(char* pSel, char* aSel, char* bSel, char* generatorXSel, char* generatorYSel, char* publicKeyXSel, char* publicKeyYSel, EC_POINT *&genPoint, EC_POINT *&pubPoint) {