YetAnotherPentestParser
A unified pentesting tool parser framework. Parse Nessus, Nmap, and more (soon) into structured JSON with advanced consolidation and insights.
Install / Use
/learn @FlyingPhish/YetAnotherPentestParserREADME
YAPP - Yet Another Pentest Parser
One parser to rule them all
A powerful Python library and CLI tool for parsing and processing multiple pentesting tool outputs.
YAPP is a comprehensive solution for parsing pentesting tool outputs (Nessus, Nmap, and Burp-soon) into structured JSON, with advanced consolidation capabilities, excel outputting, and both programmatic and command-line interfaces. Built as an extensible framework with modularity, efficiency, and ease of use in mind.
🎯 Why YAPP Exists
The pentesting industry has a multi-faceted tooling problem (CAPDEV). Most businesses treat capabilities development as an afterthought - they'd rather hire more people to combat performance and resource issues, rather than fix their piss-poor workflows and capabiltiies.
- Why? 💰C.R.E.A.M.💰
- Unbilled consultant = cost to business
- This is a bad mindset as business teaches us that you need to spend money to make money.
- Unbilled consultant = cost to business
- Result?
- Consultants working unpaid overtime because basic data processing eats half their day
- Delays, lots of them. These delays then cause a snowball effect where the next engagement is impacted.
- Cutting corners to meet deadlines.
- Burnout & general negative vibes.
✨ Features
🔧 Multi-Tool Support
- Nessus XML: Full vulnerability parsing with consolidation and API formatting
- Nmap XML: Service discovery with port filtering, flat JSON output, and a comparison spreadsheet between two scans
- Extensible Framework: Easy to add new parsers following established patterns
- Auto-Detection: Automatically identifies file types
🖥️ Dual Interface Design
- CLI Tool: Beautiful command-line interface with colored output and tool-specific options
- Python Library: Clean programmatic API for integration into your projects
- In-Memory Processing: Parse raw XML strings directly — no filesystem required (ideal for DB/API integration via
process_data()) - One External Dependency: It used to be 0 deps but
openpyxlis needed for xlsx
📊 Advanced Nessus Processing
- Parse Nessus XML files into structured JSON/Python dictionaries
- Advanced consolidation engine with smart vulnerability grouping
- Plugin output pattern matching and filtering
- Rule-based vulnerability categorization
- API-ready output formatting with entity limiting
- Inline Excel report generation (
-xflag) — no more two-step workflow - Combined single-file output (
-sfflag) — all selected outputs in one JSON
🗺️ Comprehensive Nmap Support
- Parse Nmap XML into structured format with service details
- Port status filtering (open, closed, filtered)
- Flat JSON output for legacy tool compatibility
- Service enumeration and script output capture
- Compare two Nmap XML files and output differences into spreadsheet
🎯 Intelligence & Analytics
- Track vulnerabilities globally and per host (Nessus)
- Comprehensive statistics and metrics for both tools
- Multiple FQDN support per host
- Detailed vulnerability information (CVE, CVSS, affected systems)
- Human-readable output with plugin/service names
- Consolidation rule logging -- easily debug consolidation rules by seeing what hasn't matched and why
⚡ Performance
Benchmark Results (Nessus):
- File Size: 118 MB Nessus XML (1005 hosts, 214 findings, 17 remediations)
- Processing Time: 9.18 seconds total (5.76s processing + 0.45s I/O)
- Throughput: ~13 MB/second (total) / ~20 MB/second (processing only)
- Memory Efficient: Low memory footprint with streaming parser
- Includes: Full parsing + consolidation engine + API formatting + JSON output (3 files)
Tested on: WSL2 (Debian) on Windows host
🚀 Installation
For CLI Usage Only
# Install globally with pipx (recommended for CLI-only usage)
git clone https://github.com/FlyingPhish/YetAnotherPentestParser && cd YetAnotherPentestParser
pipx install .
OR
pipx install git+https://github.com/FlyingPhish/YetAnotherPentestParser.git
# pipx install git+https://github.com/FlyingPhish/YetAnotherPentestParser.git@branch
For Programmatic Usage
# In your virtual environment
pip install git+https://github.com/FlyingPhish/YetAnotherPentestParser.git
# pip install git+https://github.com/FlyingPhish/YetAnotherPentestParser.git@branch
Upgrading
# When installed using pipx
pipx upgrade yapp
# When installed using pip
pip install git+https://github.com/FlyingPhish/YetAnotherPentestParser.git --force-reinstall
💡 Usage
🖥️ Command Line Interface
usage: yapp [-h] [--version] {parse,excel,compare} ...
YAPP - Swiss Army Knife for Pentester File Processing
positional arguments:
{parse,excel,compare} Available commands
parse Parse and process pentesting files (Nessus/Nmap/JSON)
excel Generate Excel report from YAPP JSON output
compare Compare two Nmap XML scans
options:
-h, --help show this help message and exit
--version show program's version number and exit
🖥️ Command Line Interface - Parse
yapp parse -h
options:
-h, --help show this help message and exit
-i, --input-file INPUT_FILE
Path to input file (Nessus .nessus, Nmap .xml, Consolidated JSON)
-t, --file-type {auto,nessus,nmap,consolidated_json}
Input file type (default: auto-detect)
-of, --output-folder OUTPUT_FOLDER
Output folder path (default: ./output)
-on, --output-name OUTPUT_NAME
Output base name (default: timestamp_<original-name>)
--no-output Skip writing files, only display results
Output options:
-sf, --single-file Write all selected outputs into one combined JSON file
instead of separate files
Nessus options:
-c, --consolidate Generate consolidated findings file
-a, --api-output Generate API-ready JSON (requires --consolidate)
-r, --rules-file RULES_FILE
Custom consolidation rules file
-el, --entity-limit ENTITY_LIMIT
Max entities per API finding
--log-exclusions Enable detailed exclusion logging
Nmap options:
-s, --port-status {all,open,closed,filtered}
Filter by port status (default: all)
-fj, --flat-json Generate flat JSON format
Excel options:
-x, --excel Also generate Excel report (Nessus: requires -c;
or consolidated JSON input)
🖥️ Command Line Interface - Excel
yapp excel -h
options:
-h, --help show this help message and exit
-i, --input-file INPUT_FILE
Path to YAPP JSON file (consolidated, combined, or parsed)
-of, --output-folder OUTPUT_FOLDER
Output folder path (default: ./output)
-on, --output-name OUTPUT_NAME
Custom output filename (without extension)
🖥️ Command Line Interface - Compare
yapp compare -h
options:
-h, --help show this help message and exit
-ff, --first-file FIRST_FILE
Path to first Nmap XML file
-lf, --last-file LAST_FILE
Path to second Nmap XML file
-of, --output-folder OUTPUT_FOLDER
Output folder path (default: ./output)
-on, --output-name OUTPUT_NAME
Custom output filename (without extension)
🔬 Nessus Consolidation Engine
The consolidation engine intelligently groups related vulnerabilities, reducing noise and improving vulnerability management efficiency.
Features:
- Smart Pattern Matching: Regex patterns for vulnerability names and plugin output
- Plugin Output Filtering: Search actual Nessus plugin output content
- Flexible Grouping: Group by IP, port, service, or custom criteria
- Rule-Based Configuration: JSON rules for different vulnerability types
- Advanced Logic: AND/OR pattern matching, exclusion rules
- Entity Limiting: Control API output size with configurable entity limits
Common Consolidation Rules:
- Outdated Software: Group software with version update patterns
- Certificate Issues: Consolidate SSL/TLS certificate problems
- Weak Encryption: Group protocol and cipher vulnerabilities
- JavaScript Libraries: Separate web application library issues
- Operating System: Group OS-specific updates and patches
📊 Excel Report Generation
Transform consolidated vulnerability data into structured Excel workbooks for easy analysis and validation.
<img width="689" height="555" alt="Excel Output CLI" src="https://github.com/user-attachments/assets/4c5b380d-4e0d-4c0a-b3e7-ce957fcc14de" />Features:
- Matrix Layout: One worksheet per vulnerability with Yes/No plugin indicators
- Service-Level Detail: Each row shows FQDN, IP, Port, and which plugins affected it
- Consolidation Validation: Quickly verify which plugins were grouped together
- Analyst-Friendly Format: Familiar spreadsheet format for review and sign-off
- Consistent Naming: Output filename follows the unified
{base}_Report.xlsxconvention
Workflow:
Option A — Inline (single command):
yapp parse -i scan.nessus -c -x # Parse, consolidate, and generate Excel in one shot
yapp parse -i scan.nessus -c -a -x # Full pipeline with API output + Excel
yapp parse -i scan.nessus -c -a -x -sf # Everything above, combined into one JSON + Excel
**Option B — Standalone (from existing JSON)
Related Skills
node-connect
352.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
111.1kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
352.0kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
