Skip to main content

OpenVAS XML Parser

A Python library for converting OpenVAS XML scan reports to structured JSON format. This parser filters results to only include entries with CVE identifiers, making it easier to process and analyze vulnerability data.

Features

  • XML to JSON Conversion: Convert OpenVAS XML reports to structured JSON
  • CVE Filtering: Only include results with CVE identifiers
  • Structured Output: Clean, consistent JSON format
  • CLI Interface: Command-line tool for batch processing
  • Minimal Dependencies: Only requires lxml library

Installation

pip install openvas-xml-parser

Usage

As a Python Library

from openvas_parser import convert_openvas_xml_to_json

# Convert OpenVAS XML to JSON
convert_openvas_xml_to_json("scan_report.xml", "output.json")

As a Command Line Tool

# Convert a single file
openvas-parser scan_report.xml output.json

# Convert multiple files
for file in *.xml; do
    openvas-parser "$file" "${file%.xml}.json"
done

Output Format

The parser extracts the following information for each vulnerability:

{
  "report": {
    "results": {
      "result": [
        {
          "result_id": "result-id",
          "result_name": "Vulnerability Name",
          "host": {"ip": "192.168.1.1"},
          "port": "80",
          "threat": "High",
          "severity": "8.5",
          "cve": "CVE-2021-44228",
          "additional_cves": ["CVE-2021-45046"],
          "description": "Vulnerability description",
          "nvt": {
            "name": "NVT Name",
            "description": "Detailed description",
            "solution": {"text": "Remediation steps"},
            "refs": {"ref": [{"type": "cve", "id": "CVE-2021-44228"}]}
          }
        }
      ]
    }
  }
}

API Reference

convert_openvas_xml_to_json(xml_path, json_path)

Convert an OpenVAS XML report to JSON format.

Parameters:

  • xml_path (str): Path to the OpenVAS XML file
  • json_path (str): Path where the JSON output will be saved

Returns:

  • str: Path to the generated JSON file

Raises:

  • FileNotFoundError: If the XML file doesn't exist
  • ET.ParseError: If the XML file is malformed

Examples

Basic Usage

from openvas_parser import convert_openvas_xml_to_json

try:
    result = convert_openvas_xml_to_json("scan.xml", "output.json")
    print(f"Conversion successful: {result}")
except Exception as e:
    print(f"Conversion failed: {e}")

Batch Processing

import os
from openvas_parser import convert_openvas_xml_to_json

xml_files = [f for f in os.listdir(".") if f.endswith(".xml")]

for xml_file in xml_files:
    json_file = xml_file.replace(".xml", ".json")
    try:
        convert_openvas_xml_to_json(xml_file, json_file)
        print(f"Converted {xml_file} to {json_file}")
    except Exception as e:
        print(f"Failed to convert {xml_file}: {e}")

Development

Setup Development Environment

git clone https://github.com/yourusername/openvas-xml-parser.git
cd openvas-xml-parser
pip install -e .

Running Tests

python -m pytest tests/

Building Distribution

python setup.py sdist bdist_wheel

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • OpenVAS project for the XML format specification
  • Advanced Vulnerability Management System for the original implementation

Changelog

1.0.0

  • Initial release
  • XML to JSON conversion
  • CVE filtering
  • CLI interface

Metadata

Release files for openvas-xml-parser 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openvas-xml-parser 1.0.0
File Size Uploaded
openvas_xml_parser-1.0.0.tar.gz 6.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openvas-xml-parser 1.0.0
File Interpreter ABI Platform
openvas_xml_parser-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.3 kB

Release files / openvas_xml_parser-1.0.0.tar.gz

Download URL openvas_xml_parser-1.0.0.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c6661b03b6217c7880fdb1ed2dfa64e8f2f811f45be7f7d4c7a7344bb70d48f7
BLAKE2b-256 checksum
How to use checksums
bbeb5495ad2d3f875f3cb322bcd13ccccfd1752194b4a8e7bff72853a86170d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / openvas_xml_parser-1.0.0-py3-none-any.whl

Download URL openvas_xml_parser-1.0.0-py3-none-any.whl
Size 6.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
88aaa5c7f4b6879f6245407ca9f359e861adeba425d7fc59e2d989c966e9ecb7
BLAKE2b-256 checksum
How to use checksums
e11459bfcb256c38e43abd60319a9963e098c5dd4df80b23e56b7f2ddab2c650
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page