
Analizza qualsiasi artefatto DPAPI di Windows e ne identifica il formato e la chiave master esatta necessaria, quindi decifra una volta fornita la chiave. Offline, CLI + interfaccia web.
Un toolkit offline per l'analisi delle evidenze DPAPI di Windows. Si raccolgono i file, si punta lo strumento su un artefatto, e questo riconosce il formato e indica esattamente quale master key serve; si fornisce il materiale della chiave e questo decifra.
La maggior parte degli strumenti DPAPI è composta da uno script per formato, oppure da una funzionalità sepolta all'interno di un framework offensivo più ampio. Questo è un unico strumento per l'intera gamma — master key, blob DPAPI, Credential Manager, Vault, CREDHIST, Wi-Fi, RDP/RDCMan, chiavi e certificati CAPI/CNG, SecureString di PowerShell, KeePass, SCCM, chiavi os_crypt di Chromium, e (con un plugin opzionale) DPAPI-NG — guidato dai soli file raccolti, con un'interfaccia a riga di comando e una UI web locale drag-and-drop sullo stesso core.
È pensato per red team e penetration testing, DFIR e ricerca sulla sicurezza. Non viene utilizzato alcun accesso a host live, domain controller, rete, BKRP o LSASS, e non esegue brute-force di password o PIN: si forniscono esplicitamente gli artefatti raccolti e il materiale delle chiavi.
Usare questo strumento solo contro sistemi ed evidenze di cui si è proprietari o che si è esplicitamente autorizzati a esaminare.

Hai raccolto offline la cartella Protect di un utente e un file di Credential Manager e conosci la password dell'account. Ispeziona prima la credenziale — non serve alcuna chiave:
python3 dpapi_toolkit.py CREDENTIAL_FILE
Stampa il blob DPAPI incorporato e il GUID della master key richiesta. Puntalo sulla directory Protect e lascia che trovi e sblocchi quella master key, poi decifra:
python3 dpapi_toolkit.py CREDENTIAL_FILE --type credential \
--masterkey-dir Protect-S-1-5-21-... \
--sid S-1-5-21-... \
--password 'password'
Il risultato è JSON con il target, lo username e la credenziale recuperata. Lo stesso flusso ispeziona-poi-decifra si applica a ogni formato supportato.
Python 3.10 o superiore. L'unica dipendenza obbligatoria è
cryptography:
python3 -m pip install cryptography
Le dipendenze opzionali abilitano funzionalità specifiche:
python3 -m pip install python-registry # legge i dati di Outlook da NTUSER.DAT
python3 -m pip install dpapi-ng # plugin DPAPI-NG offline
python3 -m pip install impacket # plugin offline per hive SYSTEM/SECURITY/SAM
Non è richiesto alcun host Windows live, domain controller, connessione di rete o accesso a LSASS. I segreti del registro e le master key devono essere già stati raccolti.
ConvertFrom-SecureString / Export-Clixml..vpol/.vcrd) e cronologia password CREDHIST..rdp di Remote Desktop e .rdg/.settings di RDCMan.ProtectedUserKey.bin, segreti di policy SCCM, Outlook IMAP, chiavi Windows Hello / NGC con supporto software, e chiavi os_crypt di Chromium.$DPAPImk$ (Hashcat 15300/15310/15900/15910), $MSONLINEACCOUNT$ CacheData (mode 33700) e hash NT SAM locali. Vedi docs/hashes.md.Il metodo di sblocco dipende da ciò che si possiede già. Questa tabella lo mappa all'opzione CLI; le stesse scelte appaiono nella UI web sotto 2. Unlock key.
| Cosa possiedi | Dimensione / forma | Opzione |
|---|---|---|
| Master key Windows cifrata | file con nome GUID sotto Protect | --masterkey FILE più un metodo di sblocco |
| Master key decifrata | 64 byte | --real-masterkey FILE_OR_HEX_OR_BASE64 |
| Mapping SHA1 di una master key decifrata | 20 byte | --real-masterkey FILE_OR_HEX_OR_BASE64 |
| Segreto DPAPI_SYSTEM | MachineKey || UserKey di 40 byte, una chiave da 20 byte, o 44 byte con versione | --dpapi-system FILE_OR_HEX_OR_TEXT |
| Prekey utente finale legata al SID | 20 byte | --prekey FILE_OR_HEX |
| NT hash | 16 byte | --nt-hash FILE_OR_HEX --sid SID |
| Hash SHA1 della password locale | SHA1(password as UTF-16LE) di 20 byte | --sha1-hash FILE_OR_HEX --sid SID |
| Credential key non legata | 16–128 byte | --credkey FILE_OR_HEX --sid SID |
| Materiale di backup AD DPAPI | PEM, DER, PVK, CAPI PRIVATEKEYBLOB, o chiave ServerWrap da 256 byte | --domain-backup-key VALUE o --pvk VALUE |
Il valore DPAPI_SYSTEM da 40/44 byte non è una master key decifrata. Usalo per decifrare una master key SYSTEM con nome GUID, poi usa la master key risultante da 64 byte per decifrare l'artefatto.
La UI web è un front end sottile sullo stesso core offline, quindi i suoi risultati corrispondono esattamente alla riga di comando:
python3 dpapi_web.py # http://127.0.0.1:8765/
Si lega solo a 127.0.0.1, non ha opzione di bind su LAN/pubblico, mantiene i risultati decifrati in memoria limitata per un singolo download monouso, e non scrive mai output decifrato persistente. Vedi docs/web-ui.md per il flusso completo, i flussi per formato e il modello di sicurezza.
| Guida | Contenuti |
|---|---|
| docs/cli-reference.md | Ispezione, sblocco delle master key, opzioni di output, entropia, esportazione Hashcat, modalità batch, posizioni di raccolta predefinite, risoluzione dei problemi. |
| docs/artifacts.md | Esempi di comandi per formato per ogni artefatto supportato. |
| docs/web-ui.md | La UI web locale: flusso completo, flussi degli artefatti principali, recupero a catena e il suo modello di sicurezza. |
| docs/plugins.md | Plugin offline rimovibili (Certificate/PFX, CacheData, hive Windows, DPAPI-NG) e la guida passo-passo a DPAPI-NG. |
| docs/hashes.md | Ottenere hash crackabili per il recupero offline delle password — $DPAPImk$, $MSONLINEACCOUNT$ e hash NT SAM, con i comandi Hashcat. |
È inoltre integrata una guida rapida: python3 dpapi_toolkit.py -h per l'aiuto breve, -hh per l'aiuto dettagliato su chiavi/artefatti/posizioni/limitazioni, e aggiungendo --structure a qualsiasi artefatto vengono stampati i suoi campi analizzati senza decifrare.