Understanding Tenable Report Formats

Nessus, SecurityCenter,, and other Tenable applications produce data in several formats. While most of these formats are meant to be consumable by the user directly (such as PDF, CSV, and HTML reports), some of these formats are meant to be used for machine to machine transfers. The most notable example of this is the Nessus version 2 file format.

The Nessus version 2 format is a XML-based format that allows for a wide range of flexibility in providing different and varied sets of data within a singular report. While not very data dense (reports can get quite large in size), it’s easily compressable and well understood.

class NessusReportv2(fobj)[source]

The NessusReportv2 generator will return vulnerability items from any Nessus version 2 formatted Nessus report file. The returned data will be a python dictionary representation of the ReportItem with the relevent host properties attached. The ReportItem’s structure itself will determine the resulting dictionary, what attributes are returned, and what is not.

Please note that in order to use this generator, you must install the python lxml package.

Parameters:fobj (File object or string path) – Either a File-like object or a string path pointing to the file to be parsed.


For example, if we wanted to load a Nessus report from disk and iterate through the contents, it would simply be a matter of:

>>> with open('example.nessus') as nessus_file:
...     report = NessusReportv2(nessus_file)
...     for item in report:
...         print(item)