Compare commits

...

14 Commits

Author SHA1 Message Date
TheTank20
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
TheTank20
be99f6b8e9
Update cli.cpp 2024-04-13 19:12:57 +00:00
TheTank20
e830f97e7e
Update cli.cpp 2024-04-13 19:01:34 +00:00
TheTank20
0251546d0d
Update libumskt.cpp 2024-04-13 18:59:34 +00:00
TheTank20
a12afcd601
Update confid.h 2024-04-13 18:46:31 +00:00
TheTank20
c7a555abe4
Update cli.cpp 2024-04-13 18:44:41 +00:00
TheTank20
74ff4bf144
Update cli.h 2024-04-13 18:43:59 +00:00
TheTank20
2b408913c4
Update cli.cpp 2024-04-13 18:43:50 +00:00
TheTank20
c965b88113
Update confid.cpp 2024-04-13 18:43:32 +00:00
TheTank20
2bc3503fd8
Update cli.h 2024-04-13 18:40:03 +00:00
TheTank20
3fbd1cffea
Update cli.cpp 2024-04-13 18:39:58 +00:00
TheTank20
4bf3800281
Comment out ERR_UNKNOWN_VERSION checks
Temporary fix for Office 2007 not generating confid's.
2024-04-13 18:00:07 +00:00
TheTank20
8ec60bf396
Update windows.yml 2024-04-13 14:45:46 +00:00
TheTank20
5fbbd5e6eb
changing the openssl links every update isn't sustainable 2024-04-13 14:34:13 +00:00
6 changed files with 41 additions and 30 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 3.1.5
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_5.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 3.1.5
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_5.exe"
$installerName = "Win64OpenSSL-3_1_5.exe"
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath)

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) {