Timeline Ghostwriter Parser
Trigger on Ghostwriter CSV oplog exports for timeline ingestion.
Input Contract
- Directory
input/gw_oplog/with.csvfiles exported from Ghostwriter operation logs.
Output
- Write
output/gw_entries.jsonwith entries (timestamp, source, operator, action, details, command, output, source_ip, dest_ip, tool, user_context, raw_entry). - Include metadata with
source_type = "ghostwriter", processing stats, and errors.
Workflow
- Discover CSV files and use
csv.Snifferto detect delimiters. - Validate required columns (
timestamp,operator,description) before parsing. - Normalize Ghostwriter timestamps (support ISO 8601, US/EU formats) to
YYYY/MM/DD HH:MM:SS UTC. - Map CSV columns to the standard schema, dedupe entries by
oplog_id, and record the versionedsource_file. - Capture context such as tool, command, source/dest IPs, and comments.
- Write
metadataincluding counts, files processed, and any CSV parsing issues.
Notes
- Skip empty rows and rows missing both timestamp and description.
- Provide example timestamp formats and CSV validation warnings.