The project is organized into several functional modules:
memory/: Defines PhysicalMemory and VirtualMemory traits.paging/: Handles address translation, page table walking, and pagefile resolution.windows/: Manages EPROCESS discovery and Windows version offset tables.lsass/: The core orchestrator for LSASS extraction, including crypto providers (MSV1_0, WDigest, Kerberos, etc.) and BitLocker FVEK extraction.sam/: Handles registry hive parsing, bootkey extraction, SAM/LSA/DCC2 decryption, and NTFS reading.disk/: Contains handlers for various virtual disk formats (VMDK, VDI, QCOW2, VHD, VHDX, RAW, VMFS).ntds/: Provides the ESE (JET Blue) database parser for NTDS.dit extraction.qemu/, vmware/, vbox/, hyperv/: Hypervisor-specific memory layer implementations.
src/
├── main.rs CLI dispatch, format detection, output formatting
├── lib.rs Crate root — feature-gated module declarations
├── error.rs VmkatzError type
├── utils.ts Endian helpers, hex, UTF-16LE decode, mmap helpers
├── memory/
│ └── reader.rs PhysicalMemory and VirtualMemory traits
├── pe/ PE header parser (exports, sections, data directories)
├── minidump.rs MDMP parser — VirtualMemory trait over minidump regions
├── discover.rs Directory/recursive auto-discovery of VM files
├── paging/
│ ├── mod.rs 4-level x64 page table walker (CR3 → PTE)
│ ├── translate.ts Address translation core
│ ├── entry.rs Page table entry decoding
│ ├── ept.rs Extended Page Table scanner (VBS/nested Hyper-V)
│ ├── filebacked.rs DLL section mapping from disk
│ └── pagefile.rs Pagefile.sys fault resolution from disk
├── windows/
│ ├── process.rs EPROCESS discovery (System process, process enumeration)
│ └── offsets.rs EPROCESS offset tables (WinXP SP3 → Win11 24H2, x64 + x86 PAE)
├── lsass/
│ ├── finder.rs Main extraction orchestrator (PhysicalMemory + minidump paths)
│ ├── crypto.rs LSASS decryption (AES-CBC, 3DES-CBC, DES-X-CBC, RC4)
│ ├── patterns.rs Signature patterns for crypto key discovery in DLL sections
│ ├── types.rs Credential, LogonSession, DpapiCredential structs
│ ├── msv.rs MSV1_0 provider (NT/LM/SHA1 hashes)
│ ├── wdigest.rs WDigest provider (plaintext passwords)
│ ├── kerberos.rs Kerberos provider (tickets, passwords, ticket carving)
│ ├── tspkg.rs TsPkg provider (RDP plaintext)
│ ├── dpapi.rs DPAPI provider (master key cache)
│ ├── ssp.rs SSP provider (plaintext credentials)
│ ├── livessp.rs LiveSSP provider (plaintext, rare post-Win8)
│ ├── credman.rs Credential Manager (stored credentials)
│ ├── cloudap.rs CloudAP provider (Azure AD tokens)
│ ├── bitlocker.rs BitLocker FVEK extraction from memory (pool tag scan)
│ └── carve.rs [feature: carve] Degraded extraction for partial memory
├── dump.rs [feature: dump] Process memory → minidump writer
├── vmware/ [feature: vmware] VMware .vmsn/.vmem/.vmss layer
├── vbox/ [feature: vbox] VirtualBox .sav layer
├── qemu/ [feature: qemu] QEMU ELF core dump + Proxmox savevm layer
├── hyperv/ [feature: hyperv] Hyper-V .vmrs/.bin/.raw layer (native VMRS parser)
├── sam/
│ ├── mod.rs Orchestration, disk extraction entry point
│ ├── hive.rs Windows registry hive parser (regf format)
│ ├── bootkey.rs Bootkey extraction from SYSTEM hive
│ ├── hashes.rs SAM hash decryption (AES-CBC, RC4, MD5, DES)
│ ├── lsa.rs LSA secrets decryption (DPAPI system keys, service passwords)
│ ├── cache.rs Cached domain credentials (DCC2)
│ ├── dpapi_masterkey.rs DPAPI master key file parser (hashcat 15300/15900)
│ ├── aes_xts.rs AES-XTS sector decryption (for BitLocker)
│ ├── bitlocker_decrypt.rs BitLocker transparent decrypting Read+Seek wrapper
│ ├── partition.rs MBR/GPT partition table parser
│ ├── ntfs_reader.rs NTFS file reader (SAM/SYSTEM/SECURITY discovery)
│ ├── ntfs_fallback.rs NTFS fallback parser (no external crate)
│ └── disk_fallbacks.rs Fallback hive search for non-standard layouts
│ └── vmdk_scan.rs Sparse VMDK descriptor + extent parser
├── disk/
│ ├── vmdk.rs VMware sparse/flat VMDK
│ ├── vdi.rs VirtualBox VDI (+ differencing chain)
│ ├── qcow2.rs QEMU QCOW2 (+ backing files)
│ ├── vhd.rs Hyper-V VHD (legacy)
│ ├── vhdx.rs Hyper-V VHDX
│ ├── raw.rs Raw/block device passthrough
│ └── vmfs.rs [feature: vmfs] VMFS-5/6 raw parser (LVM → SFD → FDC → FD → data)
└── ntds/
└── [feature: ntds.dit] NTDS.dit ESE database parser