mirror of
https://github.com/Leseratte10/acsm-calibre-plugin.git
synced 2024-12-23 01:34:36 +06:00
Read regkey username before using GetUserName fallback
If the user has changed their username after the authorization key has been created, then GetUserName will return the new username which can't decrypt the key. The username at the time of authorization should be stored at `HKEY_CURRENT_USER\Software\\Adobe\\Adept\\Device`, which we first attempt to read before falling back if it doesn't exist.
This commit is contained in:
parent
0cb13b9d38
commit
2894faac2a
@ -50,10 +50,16 @@ int main() {
|
|||||||
TCHAR user[USERBUFSIZE];
|
TCHAR user[USERBUFSIZE];
|
||||||
memset(&user, 0, sizeof(user)); // GetUserName only sets bytes as needed for length of username, but we need null bytes to fill the rest
|
memset(&user, 0, sizeof(user)); // GetUserName only sets bytes as needed for length of username, but we need null bytes to fill the rest
|
||||||
DWORD bufsize = USERBUFSIZE ;
|
DWORD bufsize = USERBUFSIZE ;
|
||||||
if (GetUserName(user, &bufsize) == 0) {
|
LSTATUS user_retval = RegGetValue(HKEY_CURRENT_USER, "Software\\Adobe\\Adept\\Device", "username", RRF_RT_REG_SZ, NULL, &user, &bufsize);
|
||||||
DWORD err = GetLastError();
|
if (user_retval != ERROR_SUCCESS) {
|
||||||
fprintf(stderr, "Error with GetUserName: %ld\n", err);
|
fprintf(stderr, "Error with RegGetValue: %ld\n", user_retval);
|
||||||
return err;
|
fprintf(stderr, "bufsize: %ld\n", bufsize);
|
||||||
|
fprintf(stderr, "Falling back to GetUserName");
|
||||||
|
if (GetUserName(user, &bufsize) == 0) {
|
||||||
|
DWORD err = GetLastError();
|
||||||
|
fprintf(stderr, "Error with GetUserName: %ld\n", err);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fprintf(stderr, "Username: %s\n", user);
|
fprintf(stderr, "Username: %s\n", user);
|
||||||
|
|
||||||
@ -62,11 +68,11 @@ int main() {
|
|||||||
#define KEYBUFSIZE 180 // As measured
|
#define KEYBUFSIZE 180 // As measured
|
||||||
BYTE key[KEYBUFSIZE];
|
BYTE key[KEYBUFSIZE];
|
||||||
DWORD regkeysize = KEYBUFSIZE;
|
DWORD regkeysize = KEYBUFSIZE;
|
||||||
LSTATUS retval = RegGetValue(HKEY_CURRENT_USER, "Software\\Adobe\\Adept\\Device", "key", RRF_RT_REG_BINARY, NULL, &key, ®keysize);
|
LSTATUS key_retval = RegGetValue(HKEY_CURRENT_USER, "Software\\Adobe\\Adept\\Device", "key", RRF_RT_REG_BINARY, NULL, &key, ®keysize);
|
||||||
if (retval != ERROR_SUCCESS) {
|
if (key_retval != ERROR_SUCCESS) {
|
||||||
fprintf(stderr, "Error with RegGetValue: %ld\n", retval);
|
fprintf(stderr, "Error with RegGetValue: %ld\n", key_retval);
|
||||||
fprintf(stderr, "regkeysize: %ld\n", regkeysize);
|
fprintf(stderr, "regkeysize: %ld\n", regkeysize);
|
||||||
return retval;
|
return key_retval;
|
||||||
}
|
}
|
||||||
fprintf(stderr, "Encrypted key (hex): ");
|
fprintf(stderr, "Encrypted key (hex): ");
|
||||||
for (size_t i = 0; i < KEYBUFSIZE; i++ )
|
for (size_t i = 0; i < KEYBUFSIZE; i++ )
|
||||||
|
Loading…
Reference in New Issue
Block a user