add new hdid algo (#694)

* add new hdid algo

* forgot the w for unicode

* add advapi32 to windows

* get rid of visual studio 2022 shit

* Update src/hardware_functions.cpp

Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>

* close handle when it fails

Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
This commit is contained in:
stonedDiscord 2022-03-27 15:02:08 +02:00 committed by GitHub
parent 69f49f7fee
commit 7e9ad9946b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 17 deletions

1
.gitignore vendored
View File

@ -12,6 +12,7 @@ base-full/
logs/ logs/
bass.lib bass.lib
.vs/
bin/ bin/
bins/ bins/
build/ build/

View File

@ -42,6 +42,8 @@ LIBS += -lbassmidi
macx:LIBS += -framework CoreFoundation -framework Foundation -framework CoreServices macx:LIBS += -framework CoreFoundation -framework Foundation -framework CoreServices
win32:LIBS += -ladvapi32
CONFIG += c++17 CONFIG += c++17
RESOURCES += resources.qrc RESOURCES += resources.qrc

View File

@ -3,28 +3,43 @@
#include <QDebug> #include <QDebug>
#include <QtGlobal> #include <QtGlobal>
#if QT_VERSION < QT_VERSION_CHECK(5, 11, 0)
#if (defined(_WIN32) || defined(_WIN64)) #if (defined(_WIN32) || defined(_WIN64))
#include <windows.h> #include <windows.h>
#include <sddl.h>
static DWORD dwVolSerial;
static BOOL bIsRetrieved;
QString get_hdid() QString get_hdid()
{ {
bIsRetrieved = GetVolumeInformation(TEXT("C:\\"), nullptr, 0, &dwVolSerial, HANDLE hToken;
nullptr, nullptr, nullptr, 0); HANDLE pHandle;
PTOKEN_USER pToken;
DWORD uSize = 0;
LPWSTR HDIDParam;
if (bIsRetrieved) pHandle = GetCurrentProcess();
return QString::number(dwVolSerial, 16); OpenProcessToken(pHandle, TOKEN_QUERY, &hToken);
else if (!GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS)1, NULL, 0, &uSize))
// a totally random string {
// what could possibly go wrong if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
return "gxsps32sa9fnwic92mfbs0"; CloseHandle(hToken);
return "gxsps32sa9fnwic92mfbs1";
}
} }
#elif (defined(LINUX) || defined(__linux__)) pToken = (PTOKEN_USER)GlobalAlloc(GPTR, uSize);
if (!GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS)1, pToken, uSize, &uSize))
{
CloseHandle(hToken);
return "gxsps32sa9fnwic92mfbs2";
}
ConvertSidToStringSidW(pToken->User.Sid, &HDIDParam);
QString returnHDID = QString::fromWCharArray(HDIDParam);
CloseHandle(hToken);
return returnHDID;
}
#elif QT_VERSION < QT_VERSION_CHECK(5, 11, 0)
#if (defined(LINUX) || defined(__linux__))
#include <QFile> #include <QFile>
#include <QTextStream> #include <QTextStream>
@ -33,7 +48,7 @@ QString get_hdid()
{ {
QFile fstab_file("/etc/fstab"); QFile fstab_file("/etc/fstab");
if (!fstab_file.open(QIODevice::ReadOnly)) if (!fstab_file.open(QIODevice::ReadOnly))
return "gxcps32sa9fnwic92mfbs0"; return "uxcps32sa9fnwic92mfbs0";
QTextStream in(&fstab_file); QTextStream in(&fstab_file);
@ -48,7 +63,7 @@ QString get_hdid()
} }
} }
return "gxcpz32sa9fnwic92mfbs0"; return "uxcpz32sa9fnwic92mfbs1";
} }
#elif defined __APPLE__ #elif defined __APPLE__