File & folder access
Print spooler files (.SPL and .SHD)
Print spool cheat sheet: .SPL and .SHD files in spool\PRINTERS, EMF content recovery, PrintService event 307, printer drivers and PrintNightmare traces.
- Location
- C:\Windows\System32\spool\PRINTERS\*.SPL, *.SHD
- Proves
- A document was printed (or queued), by which user, to which printer, and what it looked like
- Timestamps
- SHD job submission time (SYSTEMTIME, generally UTC but verify), NTFS times of the spool files, event 307 record time in UTC
- Retention
- Spool files are deleted once the job completes unless KeepPrintedJobs is set; event 307 is off by default
- Access
- Admin to read spool\PRINTERS; files of an active job are held open by spoolsv.exe
- Evidence of
- File & folder accessUser activityPersistence
- Type
- File / file system
- Windows
- XPVista / 78 / 8.11011
- KAPE target
- No dedicated target
- Velociraptor
- No dedicated target
Tools
Compare all tools- EVTX ParserIn browser
- Registry ParserIn browser
- EMF Spool Viewer
- SPLViewerGUI · open source
- EvtxECmdCLI
- Registry ExplorerGUI
- bulk_extractorCLI · open source
What it is
The Print Spooler service (spoolsv.exe) queues every print job on disk before sending it to the printer. Each job produces two files: a .SPL file with the page data and a .SHD shadow file with job metadata (user, document name, printer, data type). They are normally deleted as soon as the job finishes, but they are often recoverable, and when they are, the SPL can show exactly what was printed. The spooler also loads printer drivers, which made it a persistence and privilege escalation target (PrintNightmare).
Location
| Item | Path |
|---|---|
| Spool files | C:\Windows\System32\spool\PRINTERS\<nnnnn>.SPL and .SHD (names such as 00012.SPL or FP00012.SPL) |
| Spool folder override | HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers value DefaultSpoolDirectory, per-printer SpoolDirectory |
| Installed printers | HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\<name> |
| Per-user network printers | HKCU\Printers\Connections |
| Printer drivers | C:\Windows\System32\spool\drivers\x64\3\ (plus \New, \Old) |
| Print events | Microsoft-Windows-PrintService%4Operational.evtx, ...%4Admin.evtx |
What it proves
- Proves a job was submitted: the SHD holds the submitting user, machine, document name, printer name and data type.
- Proves content when the SPL is recovered: EMF spool data can be rendered back into pages.
- Event 307 proves a job was printed with document name, user, printer, port, size and page count.
- It does not prove a paper copy was collected, or that the printer actually output it (offline printers, cancelled jobs).
- Print to PDF and XPS Document Writer jobs also pass through the spooler: a "print" may be a file export.
Key fields
| Field | Source | Meaning |
|---|---|---|
| Document name | SHD, event 307 | Title passed by the app, often the file name or browser tab title |
| User / computer | SHD, event 307 | Account that submitted the job |
| Printer name, port | SHD, event 307 | Local, network (\\server\queue), PDF or XPS writer |
| Data type | SHD | NT EMF 1.00x, RAW, XPS2GDI; decides if content is renderable |
| Pages, size | Event 307 | Page count and bytes |
| Submission time | SHD | When the job was queued |
The SHD layout differs between Windows versions and is only partly documented; parsers may misread newer variants.
Timestamps
| Timestamp | Format | Notes |
|---|---|---|
| SHD submission time | SYSTEMTIME structure | Treat time zone as unverified and cross-check with NTFS times |
| SPL/SHD $SI and $FN times | NTFS, UTC | Creation equals queue time; survives in the $MFT after deletion until the record is reused |
| Event 307 | Event record time, UTC | Written at print completion |
| USN journal | FILETIME, UTC | FILE_CREATE / FILE_DELETE pairs for .SPL names give a job history even when events are off |
Retention and clearing
- Spool files are deleted after a successful job. They remain if the printer is offline, the job errors, or Keep printed documents (
KeepPrintedJobsattribute) is enabled on the printer. - Deleted SPL/SHD content is frequently recoverable by carving unallocated space (look for the EMF header record, whose
EMFsignature sits at offset 40) and from shadow copies. PrintService/Operationalis disabled by default; enable it (and size it up) in environments where print leaks matter.
Collection
# Spool folder and drivers (admin)
robocopy C:\Windows\System32\spool\PRINTERS E:\case\spool /COPY:DAT /DCOPY:T
robocopy C:\Windows\System32\spool\drivers E:\case\spooldrivers /E /COPY:DAT /DCOPY:T
# Is the Operational channel on, and what does it hold?
wevtutil gl Microsoft-Windows-PrintService/Operational
Get-WinEvent -LogName Microsoft-Windows-PrintService/Operational | Where-Object Id -eq 307
Collect the SYSTEM and SOFTWARE hives and the NTFS metadata ($MFT, $J) alongside.
Parsing tools
- EMF Spool Viewer / SPLViewer (free Windows utilities): open EMF SPL files and render the pages.
- Manual carving: split EMF records out of an SPL or unallocated space with a hex editor or
bulk_extractor, then view as.emf. - EvtxECmd: event 307 maps cleanly into CSV for timelines.
- Registry Explorer: printers, ports, drivers and Point and Print policy.
Investigation tips
- Data leak: build a print timeline from event 307, USN
.SPLcreations and SHD remnants, then recover content from carved SPLs. Match document names to files in recent documents and jump lists. - PrintNightmare (CVE-2021-1675 / CVE-2021-34527): look for unexpected DLLs in
spool\drivers\x64\3\and itsNew/Oldfolders,spoolsv.exespawning processes, and PrintService events for driver installation or plug-in load failures (commonly cited: Admin 808, Operational 316; verify the IDs and channel on your build). CheckHKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrintforNoWarningNoElevationOnInstall = 1. - Rogue print processors and port monitors are a known persistence method: review
Control\Print\Environments\...\Print ProcessorsandControl\Print\Monitors. - A document name like a web page title often indicates printing from a browser; pivot to browser artifacts.
Related artifacts
- Windows event logs (EVTX)Windows event log cheat sheet: EVTX locations, must-know event IDs for logons, processes, services and log clearing, retention, audit policy and parsing tools.
- Windows ServicesWindows services cheat sheet: Services key values (ImagePath, Start, Type, ServiceDll), 7045 and 4697 install events, PsExec traces and pitfalls.
- Registry hivesRegistry hives cheat sheet: SYSTEM, SOFTWARE, SAM, SECURITY, NTUSER.DAT, UsrClass.dat, transaction logs, RegBack, LastWrite times and collection.
- Volume Shadow Copies (VSS)Volume Shadow Copies cheat sheet: store files in System Volume Information, copy-on-write blocks, deletion by ransomware, mounting and parsing.
- USN Journal ($UsnJrnl:$J)USN journal cheat sheet: $UsnJrnl:$J and $Max, record fields, reason flags, parent references, default size, rollover, fsutil and MFTECmd parsing.
- Master File Table ($MFT)$MFT cheat sheet: FILE records, $SI vs $FN timestamps, resident data, deleted records, sequence numbers, timestomping checks and MFTECmd parsing.
Glossary terms
- File carvingRecovering files from raw disk data using content signatures such as headers and footers, without relying on file system metadata.
- Unallocated spaceClusters a file system currently marks as free; they often still contain data from deleted files until new data overwrites them.
- Windows event IDThe number identifying an event type within a given provider; it only has meaning when paired with its provider and log channel.
- FILETIMEThe 64-bit Windows timestamp format counting 100-nanosecond intervals since 1 January 1601 UTC, used by NTFS, the registry and many artifacts.
Guides
- Windows Event Log Forensics: EVTX, Event IDs and HuntingA practitioner guide to Windows event logs: EVTX format, key channels, Security and Sysmon event IDs, audit policy, cleared-log recovery and hunting tools.
- Hunting Windows Persistence: Registry, Tasks, WMI and MoreFind attacker persistence on Windows: Run keys, services, scheduled tasks, WMI, Winlogon, IFEO, COM hijacking and BITS, mapped to MITRE ATT&CK, with tools.