
Загрузите любой артефакт Windows DPAPI — инструмент определит формат и точный мастер-ключ, который требуется, а затем расшифрует данные, как только вы предоставите ключ. Работает офлайн, CLI + веб-интерфейс.
Автономный инструментарий для работы с артефактами Windows DPAPI. Вы собираете файлы, указываете инструменту артефакт, и он распознаёт формат и сообщает, какой именно мастер-ключ ему нужен; вы предоставляете ключевой материал, и он расшифровывает.
Большинство инструментов для DPAPI — это один скрипт на формат или функция, погребённая внутри крупного наступательного фреймворка. Это один инструмент для всего диапазона — мастер-ключи, DPAPI-блобы, Credential Manager, Vault, CREDHIST, Wi-Fi, RDP/RDCMan, ключи и сертификаты CAPI/CNG, PowerShell SecureStrings, KeePass, SCCM, ключи Chromium os_crypt и (с опциональным плагином) DPAPI-NG — работающий исключительно с собранными файлами, с интерфейсом командной строки и локальным веб-интерфейсом с перетаскиванием поверх того же ядра.
Он создан для red team и пентеста, DFIR и исследований в области безопасности. Не используется доступ к живым хостам, контроллерам домена, сети, BKRP или LSASS, и он не выполняет перебор паролей или PIN-кодов: вы предоставляете собранные артефакты и ключевой материал явно.
Используйте это только против систем и доказательств, которыми вы владеете или которые вам явно разрешено исследовать.

Вы собрали папку Protect пользователя и файл Credential Manager в автономном режиме, и вам известен пароль учётной записи. Сначала изучите учётные данные — ключ не нужен:
python3 dpapi_toolkit.py CREDENTIAL_FILE
Он выводит встроенный DPAPI-блоб и GUID мастер-ключа, который ему требуется. Укажите ему каталог Protect, позвольте сопоставить и разблокировать этот мастер-ключ, затем расшифруйте:
python3 dpapi_toolkit.py CREDENTIAL_FILE --type credential \
--masterkey-dir Protect-S-1-5-21-... \
--sid S-1-5-21-... \
--password 'password'
Результат — JSON с целью, именем пользователя и восстановленными учётными данными. Тот же поток «сначала изучить, затем расшифровать» применяется к каждому поддерживаемому формату.
Python 3.10 или новее. Единственная обязательная зависимость —
cryptography:
python3 -m pip install cryptography
Опциональные зависимости включают определённые функции:
python3 -m pip install python-registry # read Outlook data from NTUSER.DAT
python3 -m pip install dpapi-ng # offline DPAPI-NG plugin
python3 -m pip install impacket # offline SYSTEM/SECURITY/SAM hive plugin
Живой хост Windows, контроллер домена, сетевое подключение или доступ к LSASS не требуются. Секреты реестра и мастер-ключи должны быть собраны заранее.
ConvertFrom-SecureString / Export-Clixml SecureStrings..vpol/.vcrd) и историю паролей CREDHIST..rdp и RDCMan .rdg/.settings.ProtectedUserKey.bin, секреты политик SCCM, Outlook IMAP, программно-защищённые ключи Windows Hello / NGC и ключи Chromium os_crypt.$DPAPImk$ (Hashcat 15300/15310/15900/15910), $MSONLINEACCOUNT$ CacheData (режим 33700) и локальные NT-хеши SAM. См. docs/hashes.md.Метод разблокировки зависит от того, что у вас уже есть. Здесь показано его соответствие опции CLI; те же варианты отображаются в веб-интерфейсе в разделе 2. Unlock key.
| Что у вас есть | Размер / форма | Опция |
|---|---|---|
| Зашифрованный мастер-ключ Windows | файл с именем-GUID в Protect | --masterkey FILE плюс метод разблокировки |
| Расшифрованный мастер-ключ | 64 байта | --real-masterkey FILE_OR_HEX_OR_BASE64 |
| SHA1-отображение расшифрованного мастер-ключа | 20 байт | --real-masterkey FILE_OR_HEX_OR_BASE64 |
| Секрет DPAPI_SYSTEM | 40-байтовый MachineKey || UserKey, один 20-байтовый ключ или 44 байта с версией | --dpapi-system FILE_OR_HEX_OR_TEXT |
| Итоговый привязанный к SID пользовательский prekey | 20 байт | --prekey FILE_OR_HEX |
| NT-хеш | 16 байт | --nt-hash FILE_OR_HEX --sid SID |
| Локальный SHA1-хеш пароля | 20-байтовый SHA1(password as UTF-16LE) | --sha1-hash FILE_OR_HEX --sid SID |
| Непривязанный credential key | 16–128 байт | --credkey FILE_OR_HEX --sid SID |
| Материал резервного копирования AD DPAPI | PEM, DER, PVK, CAPI PRIVATEKEYBLOB или 256-байтовый ключ ServerWrap | --domain-backup-key VALUE или --pvk VALUE |
40/44-байтовое значение DPAPI_SYSTEM не является расшифрованным мастер-ключом. Используйте его для расшифровки SYSTEM-мастер-ключа с именем-GUID, затем используйте полученный 64-байтовый мастер-ключ для расшифровки артефакта.
Веб-интерфейс — это тонкий фронтенд поверх того же автономного ядра, поэтому его результаты в точности совпадают с командной строкой:
python3 dpapi_web.py # http://127.0.0.1:8765/
Он привязывается только к 127.0.0.1, не имеет опции привязки к LAN/публичному адресу, хранит расшифрованные результаты в ограниченной памяти для однократного скачивания и никогда не записывает постоянный расшифрованный вывод. См. docs/web-ui.md для полного рабочего процесса, потоков по каждому формату и модели безопасности.
| Руководство | Содержание |
|---|---|
| docs/cli-reference.md | Изучение, разблокировка мастер-ключей, опции вывода, энтропия, экспорт Hashcat, пакетный режим, расположения сбора по умолчанию, устранение неполадок. |
| docs/artifacts.md | Примеры команд по каждому формату для каждого поддерживаемого артефакта. |
| docs/web-ui.md | Локальный веб-интерфейс: полный рабочий процесс, основные потоки артефактов, цепочки восстановления и его модель безопасности. |
| docs/plugins.md | Съёмные автономные плагины (Certificate/PFX, CacheData, Windows hives, DPAPI-NG) и пошаговое руководство по DPAPI-NG. |
| docs/hashes.md | Получение хешей для взлома для автономного восстановления паролей — $DPAPImk$, $MSONLINEACCOUNT$ и NT-хеши SAM, с командами Hashcat. |
Также встроена краткая справка: python3 dpapi_toolkit.py -h для короткой справки, -hh для подробной справки по ключам/артефактам/расположениям/ограничениям, а добавление --structure к любому артефакту выводит его разобранные поля без расшифровки.