Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
140 / 96 / 47
Регистрация: 03.08.2013
Сообщений: 765

Не работает CryptUnprotectData

19.12.2015, 01:06. Показов 2166. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Хочу расшифровать пароли их базы данных хрома. Но ничего не работает. Помогите пожалуйтса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
            //SendDlgItemMessage(hDlg, 1002, LVM_INSERTCOLUMN, NULL, lvc);
            wchar_t buf[10240];
 
            DATA_BLOB DataIn;
            DATA_BLOB DataOut;
            LPWSTR str = NULL;
 
            sqlite3 *db; // Init SQLite
            sqlite3_stmt *statement;
 
            char *errorMsg = 0;
            int rc;
            char *sql;
 
            rc = sqlite3_open(/*getenv("APPDATA") + */ "C:\\Users\\illya05 Studio\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Login Data Copy", &db);
            
            if(rc){ // Error handler
                SendDlgItemMessage(hDlg, 1002, LB_ADDSTRING, NULL, (LPARAM)L"Connection Error!");
            }else{
                SendDlgItemMessage(hDlg, 1002, LB_ADDSTRING, NULL, (LPARAM) L"Success connect!");
 
                sql = "SELECT action_url, username_value, password_value FROM logins";
                if(sqlite3_prepare(db, sql, -1, &statement, 0) == SQLITE_OK){
                    int ctotal = sqlite3_column_count(statement);
                    int res = 0;
 
                    while(1){
                        res = sqlite3_step(statement);
 
                        if(res == SQLITE_ROW){
                            for(int i = 0; i < ctotal; i++){
                                string s = (char*) sqlite3_column_text(statement, i);
                                MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, s.c_str(), strlen(s.c_str()) + 1, buf, 10240);
 
                                BYTE *pbDataInput = (BYTE*)sqlite3_column_blob(statement, res);
                                DWORD cbDataInput = sqlite3_column_bytes(statement, res);
 
                                DataIn.pbData = pbDataInput;
                                DataIn.cbData = cbDataInput;
 
                                memset(&DataIn, 0, sizeof(DataIn));
                                memset(&DataOut, 0, sizeof(DataOut));
 
                                if(CryptUnprotectData(&DataIn, &str, NULL, NULL, /*&PromptStruct*/ NULL, 0, &DataOut)){
                                    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (char *)DataOut.pbData, strlen((char *)DataOut.pbData) + 1, buf, 10240);
                                    SendDlgItemMessage(hDDlg, 1002, LB_ADDSTRING, NULL, (LPARAM)L"The decryption phase worked");
                                    SendDlgItemMessage(hDDlg, 1002, LB_ADDSTRING, NULL, (LPARAM)buf);
                                }else{
                                    SendDlgItemMessage(hDlg, 1002, LB_ADDSTRING, NULL, (LPARAM)L"=(!");
                                }
 
                                // print or format the output as you want
                                MessageBox(NULL, buf, NULL, MB_OK);
                                SendDlgItemMessage(hDlg, 1002, LB_ADDSTRING, NULL, (LPARAM)L"Success read!");
                            }
 
                            if(res == SQLITE_DONE || res == SQLITE_ERROR){
                                SendDlgItemMessage(hDlg, 1002, LB_ADDSTRING, NULL, (LPARAM)L"Done reading!");
                            }
                        }
                    }
                }
            }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2015, 01:06
Ответы с готовыми решениями:

Функция CryptUnprotectData падает с ошибкой 13
Здравствуйте, форумчане! Столкнулась с такой проблемой: фунция падает с ошибкой с кодом 13. Как решить эту проблему??? int iRet=0; ...

CryptUnprotectData и CryptProtectData, как быть ?
Есть острая нужда разобраться с тем, как пользоваться библиотеками DLL, как их лучше всего подлючать к проекту, как узнать какие функции...

Приложение работает в Debug, странно работает в Release и не работает при билде
Действия выполняются на эмуляторе Pixel 2. Android 9.0. Если я запускаю приложение с конфигурацией Debug, то всё в порядке. При запуске же...

3
 Аватар для SmilingDog
3 / 3 / 2
Регистрация: 13.02.2015
Сообщений: 43
19.12.2015, 05:18
Ничего не работает - это мегаинформативно .
По твоему куску кода . Я во-первых не совсем понимаю где ты выходишь из бесконечного цикла
C++
1
2
3
 while(1){
                        res = sqlite3_step(statement);
...
во-вторых вот тут ты
C++
1
2
3
4
5
6
7
if(res == SQLITE_ROW){
                            for(int i = 0; i < ctotal; i++){
                                string s = (char*) sqlite3_column_text(statement, i);
                                MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, s.c_str(), strlen(s.c_str()) + 1, buf, 10240);
 
                                BYTE *pbDataInput = (BYTE*)sqlite3_column_blob(statement, res);
                                DWORD cbDataInput = sqlite3_column_bytes(statement, res);
пытаешься взять пароль с помощью sqlite3_column_blob из column index который равен res . res в этот момент равен SQLITE_ROW , который в sqlite3.h инициализирован 100 . Такого column в строке нет , поэтому в pbDataInput ты получаешь null .

ну и далее
C++
1
2
3
4
5
6
7
8
                      BYTE *pbDataInput = (BYTE*)sqlite3_column_blob(statement, res);
                                DWORD cbDataInput = sqlite3_column_bytes(statement, res);
 
                                DataIn.pbData = pbDataInput;
                                DataIn.cbData = cbDataInput;
 
                                memset(&DataIn, 0, sizeof(DataIn));
                                memset(&DataOut, 0, sizeof(DataOut));
ты сохраняешь зашифрованный пароль в структуре DataIn вместе с размером . После чего обнуляешь ее через memset . И пытаешься полученную строку нулей расшифровать .
0
140 / 96 / 47
Регистрация: 03.08.2013
Сообщений: 765
19.12.2015, 18:59  [ТС]
SmilingDog, Ого... А как это исправить?
0
 Аватар для SmilingDog
3 / 3 / 2
Регистрация: 13.02.2015
Сообщений: 43
19.12.2015, 23:34
Ой я не знаю . Это оч сложно . Вообще лучше глаза не ломать , а с пацанами в футбол и потом по пивандрию .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.12.2015, 23:34
Помогаю со студенческими работами здесь

Мышь работает через раз, то есть запустил ОС - мышь не работает, перезагрузил - мышь работает
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно работало. Но с недавних пор мышь стала работать через раз....

Подключение библиотеки DLL C++: работает на примере консоли и не работает в WinForms App
Здравствуйте! Помогите начинающему бедному студенту!! Осваиваю С++. В книге Прохоренко(программирование в visual studio 2010 express)...

Через sublime text 3 и компилятор g++ работает, посоветовали скачать VS, не работает. Миниатюры
через sublime text 3 и компилятор g++ работает, посоветовали скачать VS, не работает.

не работает в ворде веб компонент,и скачав обновление ow 11 не работает все равно
проблема с веб элементами и обновлениями на них))

SelText в textBox'e отчёта не работает или работает не так как в форме?
Пробовал всяко-разно выудить выделенный текст - не выходит. Пишет: &quot;Введенное выражение содержит недопустимую ссылку на свойство...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru