Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
1
.NET 2.x

Расшифровка DPapi из Google Chrome

20.01.2017, 19:43. Показов 4199. Ответов 3
Метки нет (Все метки)

Вот код для получения 2 строк из cookie файла хрома,
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
using System;
using System.Collections.Generic;
using System.Data.SQLite;
 
namespace CookieExec
{
    class mass
    {
        public string name;
        public string host;
    }
 
    class Program
    {
        #region params
        public static string con = @"C:\Users" + Environment.UserName + @"\AppData\Local\Google\Chrome\User Data\Default\Cookies";
        public static List<string> host1 = new List<string>();
        public static List<string> name1 = new List<string>();
        #endregion
        static void Main(string[] args)
        {
              List<mass> TABLE = gTable();
              string cont = "";
              foreach(mass a in TABLE)
              {
                  cont += a.host + "      " + a.name + Environment.NewLine;
              }
              Console.WriteLine(cont);
            Console.ReadKey();
        }
 
        public static List<mass> gTable()
        {
            List<mass> table = new List<mass>();
            SQLiteConnection connection = new SQLiteConnection(string.Format("Data Source={0};", con));
            connection.Open();
            SQLiteCommand command = new SQLiteCommand("SELECT name FROM 'cookies';", connection);
            SQLiteDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                name1.Add(reader[0].ToString());
            }
            command = new SQLiteCommand("SELECT encrypted_value FROM 'cookies';", connection);
            reader = command.ExecuteReader();
            while (reader.Read())
            {
                host1.Add(reader[0].ToString());
            }
            int ad = 0;
            foreach (string s in name1)
            {
                table.Add(new mass {name = name1[ad], host = host1[ad], value = "NoInfo" });
                ad++;
            }
            return table;
        }
    }
}
Но что сделать чтобы расшифровать этот масив данных?
есть еще и DPapi класс
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System;
using System.Runtime.InteropServices;
using System.ComponentModel;
 
namespace DpApi
{
    public class control
    {
        [DllImport("crypt32.dll", SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        private static extern bool CryptProtectData(ref DATA_BLOB pPlainText, string szDescription, ref DATA_BLOB pEntropy, IntPtr pReserved, ref CRYPTPROTECT_PROMPTSTRUCT pPrompt, int dwFlags, ref DATA_BLOB pCipherText);
        [DllImport("crypt32.dll", SetLastError = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        private static extern
        bool CryptUnprotectData(ref DATA_BLOB pCipherText, ref string pszDescription, ref DATA_BLOB pEntropy, IntPtr pReserved, ref CRYPTPROTECT_PROMPTSTRUCT pPrompt, int dwFlags, ref DATA_BLOB pPlainText);
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        internal struct DATA_BLOB
        {
            public int cbData;
            public IntPtr pbData;
        }
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        internal struct CRYPTPROTECT_PROMPTSTRUCT
        {
            public int cbSize;
            public int dwPromptFlags;
            public IntPtr hwndApp;
            public string szPrompt;
        }
        public static byte[] Decrypt(byte[] cipherTextBytes, byte[] entropyBytes, out string description)
        {
            DATA_BLOB plainTextBlob = new DATA_BLOB();
            DATA_BLOB cipherTextBlob = new DATA_BLOB();
            DATA_BLOB entropyBlob = new DATA_BLOB();
            CRYPTPROTECT_PROMPTSTRUCT prompt = new CRYPTPROTECT_PROMPTSTRUCT();
            prompt.cbSize = Marshal.SizeOf(typeof(CRYPTPROTECT_PROMPTSTRUCT));
            prompt.dwPromptFlags = 0;
            prompt.hwndApp = IntPtr.Zero;
            prompt.szPrompt = null;
            description = String.Empty;
            try
            {
                try
                {
                    if (cipherTextBytes == null)
                        cipherTextBytes = new byte[0];
                    cipherTextBlob.pbData = Marshal.AllocHGlobal(cipherTextBytes.Length);
                    if (cipherTextBlob.pbData == IntPtr.Zero) throw new Exception(String.Empty);
                    cipherTextBlob.cbData = cipherTextBytes.Length;
                    Marshal.Copy(cipherTextBytes, 0, cipherTextBlob.pbData, cipherTextBytes.Length);
                }
                catch (Exception ex)
                {
                    throw new Exception(String.Empty, ex);
                }
                try
                {
                    if (entropyBytes == null)
                        entropyBytes = new byte[0];
                    entropyBlob.pbData = Marshal.AllocHGlobal(entropyBytes.Length);
                    if (entropyBlob.pbData == IntPtr.Zero) throw new Exception(String.Empty);
                    entropyBlob.cbData = entropyBytes.Length;
                    Marshal.Copy(entropyBytes, 0, entropyBlob.pbData, entropyBytes.Length);
                }
                catch (Exception ex)
                {
                    throw new Exception(String.Empty, ex);
                }
                int flags = 0x1;
                bool success = CryptUnprotectData(ref cipherTextBlob, ref description, ref entropyBlob, IntPtr.Zero, ref prompt, flags, ref plainTextBlob);
                if (!success)
                {
                    int errCode = Marshal.GetLastWin32Error();
                    throw new Exception(String.Empty, new Win32Exception(errCode));
                }
                byte[] plainTextBytes = new byte[plainTextBlob.cbData];
                Marshal.Copy(plainTextBlob.pbData, plainTextBytes, 0, plainTextBlob.cbData);
                return plainTextBytes;
            }
            catch (Exception ex)
            {
                throw new Exception(string.Empty, ex);
            }
            finally
            {
                if (plainTextBlob.pbData != IntPtr.Zero)
                    Marshal.FreeHGlobal(plainTextBlob.pbData);
                if (cipherTextBlob.pbData != IntPtr.Zero)
                    Marshal.FreeHGlobal(cipherTextBlob.pbData);
                if (entropyBlob.pbData != IntPtr.Zero)
                    Marshal.FreeHGlobal(entropyBlob.pbData);
            }
        }
    }
}
ВНИМАНИЕ: Данная тема не нарушает правил форума, вся представленная информация только в познавательных целях!!!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2017, 19:43
Ответы с готовыми решениями:

Расшифровка кукисов Opera, Google Chrome
Третий день я обыскиваю ввесь интернет в поисках реального метода расшифровки кукисов Opera, Google...

Баг в Google Chrome при ajax-запросе, Скрипт работает во всех браузерах кроме Google Chrome
данный скрипт срабатывает везде (опера, ИЕ, ФФ, Сафари), кроме Google Chrome: // запись в кэш...

Запуская Google Chrome открывается Google Chrome, но со значком IE
Здравствуйте! Абсолютно идентичная ситуация, как в теме...

Запуская Google Chrome открывается Google Chrome, но со значком IE
Открываю браузер Google Chrome, а вместо его традиционного значка у меня отображается значок от...

3
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,213
16.03.2017, 20:36 2
FastMailSend, У меня есть реализация вытаскивания паролей из гугл хром, только в лс.
Если Администрация позволит выставить данную информацию, то напишу сюда!
0
0 / 0 / 0
Регистрация: 01.09.2017
Сообщений: 2
06.09.2017, 09:27 3
chaleureux, Привет, не мог бы ты написать мне, о данном способе? Заранее очень благодарен тебе))
0
Администратор
Эксперт .NET
13982 / 11341 / 4594
Регистрация: 17.03.2014
Сообщений: 22,929
Записей в блоге: 1
18.09.2017, 18:39 4
Цитата Сообщение от chaleureux Посмотреть сообщение
Если Администрация позволит выставить данную информацию, то напишу сюда!
Администрация не возражает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2017, 18:39

Запуская Google Chrome открывается Google Chrome, но со значком IE
Здравствуйте, помогите пожалуйста с проблемкой) Открываю браузер Google Chrome, а вместо его...

Вирус google.ga в браузере Google Chrome и Internet Explorer (редирект на google.ga, всплывающая реклама)
Добрый день. Столкнулась с большой проблемой и буду очень благодарна за помощь. Не знаю, каким...

Много процессов chrome.exe и зависание Google Chrome
В диспетчере задач много процессов chrome.exe и последние несколько дней браузер стал часто...

Расшифровка Cookies (Chrome)
На данный момент все браузеры на базе Chromium шифруют кукис в локальном хранилище. Данные...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru