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 exit 1
} }
- name: Download And Install 32-bit OpenSSL 3.1.4 - name: Download And Install 32-bit OpenSSL 3.1.5
run: | run: |
$installDir = "$Env:ProgramFiles\OpenSSL" $installDir = "$Env:ProgramFiles\OpenSSL"
$installerURL = "https://slproweb.com/download/Win32OpenSSL-3_1_4.exe" $installerURL = "https://slproweb.com/download/Win32OpenSSL-3_1_5.exe"
$installerName = "Win32OpenSSL-3_1_4.exe" $installerName = "Win32OpenSSL-3_1_5.exe"
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName" $installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath) (New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath)
@ -112,11 +112,11 @@ jobs:
exit 1 exit 1
} }
- name: Download And Install 64-bit OpenSSL 3.1.4 - name: Download And Install 64-bit OpenSSL 3.1.5
run: | run: |
$installDir = "$Env:ProgramFiles\OpenSSL" $installDir = "$Env:ProgramFiles\OpenSSL"
$installerURL = "https://slproweb.com/download/Win64OpenSSL-3_1_4.exe" $installerURL = "https://slproweb.com/download/Win64OpenSSL-3_1_5.exe"
$installerName = "Win64OpenSSL-3_1_4.exe" $installerName = "Win64OpenSSL-3_1_5.exe"
$installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName" $installerPath = Join-Path -Path "${env:Temp}" -ChildPath "$installerName"
(New-Object System.Net.WebClient).DownloadFile($installerURL, $installerPath) (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-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-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-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"); fmt::print("\n");
} }
@ -92,6 +93,7 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) {
false, false,
false, false,
false, false,
false,
MODE_BINK1998_GENERATE, MODE_BINK1998_GENERATE,
WINDOWS WINDOWS
}; };
@ -210,6 +212,8 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) {
} else if (arg == "-N" || arg == "--nonewlines") { } else if (arg == "-N" || arg == "--nonewlines") {
options->nonewlines = true; options->nonewlines = true;
} else if (arg == "-o" || arg == "--override") {
options->overrideVersion = true;
} else { } else {
options->error = true; options->error = true;
} }
@ -559,7 +563,7 @@ int CLI::BINK2002Validate() {
int CLI::ConfirmationID() { int CLI::ConfirmationID() {
char confirmation_id[49]; 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) { switch (err) {
case ERR_TOO_SHORT: case ERR_TOO_SHORT:

View File

@ -68,6 +68,7 @@ struct Options {
bool error; bool error;
bool list; bool list;
bool nonewlines; bool nonewlines;
bool overrideVersion;
MODE applicationMode; MODE applicationMode;
ACTIVATION_ALGORITHM activationMode; 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; int version;
unsigned char hardwareID[8]; unsigned char hardwareID[8];
@ -870,7 +870,7 @@ int ConfirmationID::Generate(const char* installation_id_str, char confirmation_
iid_key[3] = 0xF3; iid_key[3] = 0xF3;
} }
Unmix(installation_id, totalCount == 41 ? 17 : 19, iid_key, 4); 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; return ERR_UNKNOWN_VERSION;
#pragma pack(push, 1) #pragma pack(push, 1)
@ -891,6 +891,7 @@ int ConfirmationID::Generate(const char* installation_id_str, char confirmation_
productID[2] = (parsed.ProductIDLow >> 27) & ((1 << 24) - 1); productID[2] = (parsed.ProductIDLow >> 27) & ((1 << 24) - 1);
version = (parsed.ProductIDLow >> 51) & 15; version = (parsed.ProductIDLow >> 51) & 15;
productID[3] = (parsed.ProductIDLow >> 55) | (parsed.ProductIDHigh << 9); productID[3] = (parsed.ProductIDLow >> 55) | (parsed.ProductIDHigh << 9);
if (overrideVersion == false) {
switch (activationMode) { switch (activationMode) {
case 0: case 0:
if (version != (totalCount == 41 ? 9 : 10)) if (version != (totalCount == 41 ? 9 : 10))
@ -904,10 +905,13 @@ int ConfirmationID::Generate(const char* installation_id_str, char confirmation_
if (version != 4) if (version != 4)
return ERR_UNKNOWN_VERSION; return ERR_UNKNOWN_VERSION;
} }
}
break; break;
case 2: case 2:
case 3: case 3:
decode_iid_new_version(installation_id, hardwareID, &version); decode_iid_new_version(installation_id, hardwareID, &version);
if (overrideVersion == false) {
switch (activationMode) { switch (activationMode) {
case 2: case 2:
if (version != 3) if (version != 3)
@ -916,6 +920,8 @@ int ConfirmationID::Generate(const char* installation_id_str, char confirmation_
case 3: case 3:
if (version != 4) if (version != 4)
return ERR_UNKNOWN_VERSION; return ERR_UNKNOWN_VERSION;
break;
}
} }
memcpy(&parsed, hardwareID, 8); memcpy(&parsed, hardwareID, 8);
productID[0] = stoi(productid.substr(0,5)); 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); static void Unmix(unsigned char* buffer, size_t bufSize, const unsigned char* key, size_t keySize);
public: 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(); //EXPORT static int CLIRun();
}; };

View File

@ -27,8 +27,8 @@
#include "pidgen3/BINK2002.h" #include "pidgen3/BINK2002.h"
#include "pidgen2/PIDGEN2.h" #include "pidgen2/PIDGEN2.h"
FNEXPORT int ConfirmationID_Generate(const char* installation_id_str, char confirmation_id[49], int mode, std::string 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); 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) { 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) {