evtx 2026.10.0
dotnet add package evtx --version 2026.10.0
NuGet\Install-Package evtx -Version 2026.10.0
<PackageReference Include="evtx" Version="2026.10.0" />
<PackageVersion Include="evtx" Version="2026.10.0" />
<PackageReference Include="evtx" />
paket add evtx --version 2026.10.0
#r "nuget: evtx, 2026.10.0"
#:package evtx@2026.10.0
#addin nuget:?package=evtx&version=2026.10.0
#tool nuget:?package=evtx&version=2026.10.0
EvtxECmd
This repo that contains all the Maps used by Eric Zimmerman's EvtxECmd.
Ongoing Projects
- EvtxECmd Maps Ideas - Development roadmap for EvtxECmd Maps. Please feel free to contribute by adding ideas or by finishing tasks in the
To Docolumn. Any help is appreciated!
Command Line Interface
Description:
EvtxECmd version 2026.10.0
Author: Eric Zimmerman (saericzimmerman@gmail.com)
https://github.com/EricZimmerman/evtx
Usage:
EvtxECmd [options]
Options:
-f <f> File to process. Either this or -d is required
-d <d> Directory to recursively process. Either this or -f is required
--csv <csv> Directory to save CSV formatted results to. Be sure to include the full path in double quotes
--csvf <csvf> File name to save CSV formatted results to. When present, overrides default name
--json <json> Directory to save JSON formatted results to. Be sure to include the full path in double quotes
--jsonf <jsonf> File name to save JSON formatted results to. When present, overrides default name
--xml <xml> Directory to save XML formatted results to
--xmlf <xmlf> File name to save XML formatted results to. When present, overrides default name
--dt <dt> The custom date/time format to use when displaying time stamps. See https://goo.gl/CNVq0k for options [default: yyyy-MM-dd HH:mm:ss.fffffff]
--inc <inc> List of Event IDs to process. All others are ignored. Overrides --exc Format is 4624,4625,5410,5500-5600
--exc <exc> List of Event IDs to IGNORE. All others are included. Format is 4624,4625,5410,5500-5600
--sd <sd> Start date for including events (UTC). Anything OLDER than this is dropped. Format should match --dt
--ed <ed> End date for including events (UTC). Anything NEWER than this is dropped. Format should match --dt
--fj When true, export all available data when using --json
--tdt <tdt> The number of seconds to use for time discrepancy detection. Default is 1 [default: 1]
--met When true, show metrics about processed event log. Default is true
--maps <maps> The path where event maps are located. Defaults to 'Maps' folder where program was executed
--vss Process all Volume Shadow Copies that exist on drive specified by -f or -d
--dedupe Deduplicate -f or -d & VSCs based on SHA-1. First file found wins
--sync If true, the latest maps from https://github.com/EricZimmerman/evtx/tree/master/evtx/Maps are downloaded and local maps updated
--debug Show debug information during processing
--trace Show trace information during processing
-?, -h, --help Show help and usage information
--version Show version information
Examples: EvtxECmd.exe -f "C:\Temp\Application.evtx" --csv "c:\temp\out" --csvf MyOutputFile.csv
EvtxECmd.exe -f "C:\Temp\Application.evtx" --csv "c:\temp\out"
EvtxECmd.exe -f "C:\Temp\Application.evtx" --json "c:\temp\jsonout"
Short options (single letter) are prefixed with a single dash. Long commands are prefixed with two dashes
EvtxECmd exits with 0 when everything was processed, and 1 for bad arguments, a file that could not be processed, or output that could not be written.
Library
The evtx NuGet package parses event logs (MS-EVEN6 BinXml, including logs collected with Windows Event Forwarding, whose records have no templates):
using var fs = File.OpenRead(@"C:\Temp\Security.evtx");
var log = new evtx.EventLog(fs);
foreach (var record in log.GetEventRecords())
{
Console.WriteLine($"{record.RecordNumber} {record.TimeCreated} {record.EventId} {record.Provider}");
var xml = record.ConvertPayloadToXml(); //the event as XML
var json = record.PayloadAsJson(); //EventData/UserData as JSON
}
foreach (var error in log.ErrorRecords) //records that could not be read, by record number
{
Console.WriteLine($"{error.Key}: {error.Value}");
}
- Call
EventLog.LoadMaps(path)first to fillPayloadData1-6,UserName,RemoteHost,ExecutableInfoandMapDescriptionfrom the maps. - A file that is not an event log throws
EventLogParseException. A damaged chunk or record is logged and skipped, and the rest of the log is still read. - Records hidden in another record's slack (DanderSpritz's eventlogedit) are returned with
HiddenRecordset. RenderingInfoholds theRenderingInfoelement of forwarded events (the message text and level/task/opcode names from the source computer) as JSON.
Documentation
This project contains both the core parsing engine as well as a command line front end that uses it.
For documentation on creating maps, check out the README in the Maps directory.
Use the Guide to learn how to make maps from the Template provided.
Enhancing Event Log Analysis with EvtxEcmd using KAPE
Download Eric Zimmerman's Tools
All of Eric Zimmerman's tools can be downloaded here.
Special Thanks
Open Source Development funding and support provided by the following contributors:
- SANS Institute and SANS DFIR.
- Tines
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Crc32.NET (>= 1.2.0)
- FluentValidation (>= 11.12.0)
- Serilog (>= 4.4.0)
- ServiceStack.Text (>= 10.4.0)
- System.Text.Encoding.CodePages (>= 10.0.13)
- YamlDotNet (>= 17.1.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on evtx:
| Package | Downloads |
|---|---|
|
EventViewerX.Evtx
Cross-platform EVTX file reader adapter for EventViewerX. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on evtx:
| Repository | Stars |
|---|---|
|
carina-studio/ULogViewer
Cross-Platform, Agent-Native Universal Log Viewer.
|