
Suelta cualquier artefacto DPAPI de Windows y este identifica el formato y la clave maestra exacta que necesita, luego descifra una vez que proporcionas la clave. Sin conexión, CLI + interfaz web.
Un toolkit offline para evidencia DPAPI de Windows. Recopilas los archivos, apuntas la herramienta a un artefacto, y esta reconoce el formato y te dice exactamente qué clave maestra necesita; tú proporcionas el material de clave y esta descifra.
La mayoría de las herramientas DPAPI son un script por formato, o una funcionalidad enterrada dentro de un framework ofensivo más grande. Esta es una sola herramienta para todo el rango — claves maestras, blobs DPAPI, Credential Manager, Vault, CREDHIST, Wi-Fi, RDP/RDCMan, claves y certificados CAPI/CNG, SecureStrings de PowerShell, KeePass, SCCM, claves os_crypt de Chromium, y (con un plugin opcional) DPAPI-NG — impulsada únicamente por archivos recopilados, con una interfaz de línea de comandos y una interfaz web local de arrastrar y soltar sobre el mismo núcleo.
Está diseñada para red team y pruebas de penetración, DFIR e investigación de seguridad. No se utiliza ningún host en vivo, controlador de dominio, red, BKRP ni acceso a LSASS, y no fuerza bruta contraseñas ni PINs: tú proporcionas explícitamente los artefactos recopilados y el material de clave.
Utiliza esto únicamente contra sistemas y evidencia que poseas o que estés explícitamente autorizado a examinar.

Has recopilado la carpeta Protect de un usuario y un archivo de Credential Manager offline y conoces la contraseña de la cuenta. Inspecciona primero la credencial — no se necesita clave:
python3 dpapi_toolkit.py CREDENTIAL_FILE
Imprime el blob DPAPI incrustado y el GUID de la clave maestra que requiere. Apúntala al directorio Protect y deja que coincida y desbloquee esa clave maestra, luego descifra:
python3 dpapi_toolkit.py CREDENTIAL_FILE --type credential \
--masterkey-dir Protect-S-1-5-21-... \
--sid S-1-5-21-... \
--password 'password'
El resultado es JSON con el objetivo, el nombre de usuario y la credencial recuperada. El mismo flujo de inspeccionar-luego-descifrar se aplica a todos los formatos soportados.
Python 3.10 o superior. La única dependencia obligatoria es
cryptography:
python3 -m pip install cryptography
Las dependencias opcionales habilitan funcionalidades específicas:
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
No se requiere ningún host Windows en vivo, controlador de dominio, conexión de red ni acceso a LSASS. Los secretos del registro y las claves maestras ya deben haber sido recopilados.
ConvertFrom-SecureString / Export-Clixml..vpol/.vcrd), y el historial de contraseñas CREDHIST..rdp de Remote Desktop y .rdg/.settings de RDCMan.ProtectedUserKey.bin, secretos de directiva SCCM, Outlook IMAP, claves Windows Hello / NGC respaldadas por software, y claves os_crypt de Chromium.$DPAPImk$ (Hashcat 15300/15310/15900/15910), $MSONLINEACCOUNT$ CacheData (modo 33700), y hashes NT de SAM local. Ver docs/hashes.md.El método de desbloqueo depende de lo que ya tengas. Esto lo asigna a la opción de CLI; las mismas opciones aparecen en la interfaz web bajo 2. Unlock key.
| Lo que tienes | Tamaño / forma | Opción |
|---|---|---|
| Clave maestra de Windows cifrada | archivo con nombre GUID bajo Protect | --masterkey FILE más un método de desbloqueo |
| Clave maestra descifrada | 64 bytes | --real-masterkey FILE_OR_HEX_OR_BASE64 |
| Mapeo SHA1 de una clave maestra descifrada | 20 bytes | --real-masterkey FILE_OR_HEX_OR_BASE64 |
| Secreto DPAPI_SYSTEM | MachineKey || UserKey de 40 bytes, una clave de 20 bytes, o 44 bytes con versión | --dpapi-system FILE_OR_HEX_OR_TEXT |
| Prekey de usuario final ligada al SID | 20 bytes | --prekey FILE_OR_HEX |
| Hash NT | 16 bytes | --nt-hash FILE_OR_HEX --sid SID |
| Hash SHA1 de contraseña local | SHA1(password as UTF-16LE) de 20 bytes | --sha1-hash FILE_OR_HEX --sid SID |
| Credential key no ligada | 16–128 bytes | --credkey FILE_OR_HEX --sid SID |
| Material de respaldo DPAPI de AD | PEM, DER, PVK, CAPI PRIVATEKEYBLOB, o clave ServerWrap de 256 bytes | --domain-backup-key VALUE o --pvk VALUE |
El valor DPAPI_SYSTEM de 40/44 bytes no es una clave maestra descifrada. Úsalo para descifrar una clave maestra SYSTEM con nombre GUID, luego usa la clave maestra resultante de 64 bytes para descifrar el artefacto.
La interfaz web es un front end ligero sobre el mismo núcleo offline, por lo que sus resultados coinciden exactamente con la línea de comandos:
python3 dpapi_web.py # http://127.0.0.1:8765/
Se enlaza solo a 127.0.0.1, no tiene opción de enlace LAN/público, mantiene los resultados descifrados en memoria acotada para una única descarga de un solo uso, y nunca escribe salida descifrada persistente. Ver docs/web-ui.md para el flujo de trabajo completo, los flujos por formato y la postura de seguridad.
| Guía | Contenido |
|---|---|
| docs/cli-reference.md | Inspección, desbloqueo de claves maestras, opciones de salida, entropía, exportación a Hashcat, modo batch, ubicaciones de recopilación predeterminadas, solución de problemas. |
| docs/artifacts.md | Ejemplos de comandos por formato para cada artefacto soportado. |
| docs/web-ui.md | La interfaz web local: flujo de trabajo completo, flujos de artefactos principales, recuperación encadenada y su modelo de seguridad. |
| docs/plugins.md | Plugins offline removibles (Certificate/PFX, CacheData, Windows hives, DPAPI-NG) y el tutorial de DPAPI-NG. |
| docs/hashes.md | Obtención de hashes crackeables para recuperación de contraseñas offline — $DPAPImk$, $MSONLINEACCOUNT$, y hashes NT de SAM, con los comandos de Hashcat. |
La ayuda rápida también está integrada: python3 dpapi_toolkit.py -h para ayuda breve, -hh para ayuda detallada sobre claves/artefactos/ubicaciones/limitaciones, y añadir --structure a cualquier artefacto imprime sus campos analizados sin descifrar.