
Проект .NET 4.0 CLR для извлечения данных Chromium, таких как cookies, история и сохранённые логины.
SharpChromium — это проект .NET 4.0+ CLR для извлечения данных из Google Chrome, Microsoft Edge и Microsoft Edge Beta. В настоящее время он может извлекать:
Примечание: Все возвращаемые cookies имеют формат JSON. Если у вас установлено расширение Cookie Editor, вы можете просто скопировать и вставить их в раздел «Импорт» этого дополнения браузера, чтобы использовать извлечённую сессию.
Эта переработка имеет несколько преимуществ по сравнению с предыдущими реализациями, которые включают:
Usage:
.\SharpChromium.exe arg0 [arg1 arg2 ...]
Arguments:
all - Retrieve all Chromium Cookies, History and Logins.
full - The same as 'all'
logins - Retrieve all saved credentials that have non-empty passwords.
history - Retrieve user's history with a count of each time the URL was
visited, along with cookies matching those items.
cookies [domain1.com domain2.com] - Retrieve the user's cookies in JSON format.
If domains are passed, then return only
cookies matching those domains. Otherwise,
all cookies are saved into a temp file of
the format ""%TEMP%\$browser-cookies.json""
Извлечение cookies, связанных с Google Docs и Github
.\SharpChromium.exe cookies docs.google.com github.com

Извлечение элементов истории и связанных с ними cookies.
.\SharpChromium.exe history

Извлечение сохранённых логинов (Примечание: отображаются только те, у которых непустые пароли):
.\SharpChromium.exe logins

Парсер базы данных SQLite немного багнутый. Это связано с тем, что парсер правильно определяет большие двоичные данные (blob) как тип System.Byte[], но неправильно определяет столбцы типа System.Byte[]. В результате массивы байтов преобразуются в строковый литерал "System.Byte[]", что неверно. Я ещё не добрался до корня этой проблемы, но в качестве быстрого и грязного обходного пути я закодировал все значения blob в строки Base64. Таким образом, если вы хотите получить значение из столбца, обычные данные которого представляют собой массив байтов, вам нужно сначала декодировать их из Base64.
Большая благодарность @plainprogrammer за их проект C#-SQLite, который позволил выполнять нативный разбор файлов SQLite без рефлективной загрузки DLL. Без их работы этот проект не был бы таким чистым, как сейчас. Этот проект можно найти здесь: https://github.com/plainprogrammer/csharp-sqlite
Спасибо @gentlekiwi, чья работа над Mimikatz направляла переработку схемы дешифрования в v80+
Спасибо @harmj0y, который вырезал необходимый код PInvoke BCrypt, чтобы я мог удалить дополнительные зависимости из этого проекта, снова сделав его лёгким.