Как дешифровать пароли/куки с chrome?

ChatGPT говорит, что bcrypt не годится для AESGCM (поэтому от него я не добился знаний), я пробовал как раз с bcrypt, но что-то видимо написал не правильно и работать это не хочет

std::string AESDecrypter(std::string encryptedDataStr, const std::vector<BYTE>& key){
    std::vector<BYTE> encryptedData(encryptedDataStr.begin(), encryptedDataStr.end());
    std::vector<BYTE> decryptedData;
    BCRYPT_ALG_HANDLE hAlgorithm = NULL;
    BCRYPT_KEY_HANDLE hKey = NULL;
    BCryptOpenAlgorithmProvider(&hAlgorithm, BCRYPT_AES_ALGORITHM, NULL, 0);
    BCryptSetProperty(hAlgorithm, BCRYPT_CHAINING_MODE, (UCHAR*)BCRYPT_CHAIN_MODE_GCM, sizeof(BCRYPT_CHAIN_MODE_GCM), 0);
    // Создание ключа
    BCryptGenerateSymmetricKey(hAlgorithm, &hKey, NULL, 0, const_cast<PUCHAR>(key.data()), key.size(), 0);

    // Дешифрование данных
    DWORD decryptedDataSize = static_cast<DWORD>(encryptedData.size());
    decryptedData.resize(decryptedDataSize);
    ULONG bytesDecrypted = 0;

    BCryptDecrypt(hKey, const_cast<PUCHAR>(encryptedData.data()), decryptedDataSize, NULL, NULL, 0, decryptedData.data(), decryptedData.size(), &bytesDecrypted, 0);
    decryptedData.resize(bytesDecrypted);
    BCryptDestroyKey(hKey);
    BCryptCloseAlgorithmProvider(hAlgorithm, 0);

    return std::string(decryptedData.begin(), decryptedData.end());
}

Я так и не понял как устроен вектор инициализации и тонкости bcrypt decrypt aesgcm, прошу помочь в объяснении этих моментов и объяснении ошибок кода


Ответы (1 шт):

Автор решения: eri

В хранилище паролей пользователя ( в виндовс через панель управления) лежит ключ шифрования. Если хранилище не доступно, то там константа. Не помню какая(посмотри в исходнихах хромиума).

https://github.com/ohyicong/decrypt-chrome-passwords

→ Ссылка