<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/php
&lt;?php
//error_reporting(0);

/***
 * Main program - Don't edit below
 */
echo "            ______   _                  \n           (_____ \ (_)                 \n ____   ___  ____) ) _  ___  ___  ____  \n|  _ \ /___)/ ____/ | |/___)/ _ \|  _ \ \n| | | |___ | (_____ | |___ | |_| | | | |\n|_| |_(___/|_______)| (___/ \___/|_| |_|\n                  (__/     \n\n";

foreach (glob("classes/*.php") as $filename)
    include $filename;

$definitions = new \Clapp\CommandLineArgumentDefinition(
    array(
        "help|h"            =&gt; "Shows help message",
        "doc|d=s"           =&gt; "/path/to/doc.nessus to use",
        "no-save|n"           =&gt; "Output only - Don't save JSON files",
        "no-info|i"           =&gt; "Don't save \"informational\" issues (recommended)",
    )
);

$filter = new \Clapp\CommandArgumentFilter($definitions, $argv);

if ($filter-&gt;getParam('h') === true || $argc &lt; 2) {
	echo "Convert ptreport reprep output file to JSON files for repgen.php\n\n";
    fwrite(STDERR, $definitions-&gt;getUsage());
    exit(0);
} 

// see if doc exists 
if ($filter-&gt;getParam("doc") == false)
	die("[-] no doc set\n");

echo "[!] doc: ".$filter-&gt;getParam("doc")."\n";
if(!file_exists($filter-&gt;getParam("doc")))
	die("[-] no such file! \n"); 


$xmlfile = file_get_contents($filter-&gt;getParam("doc"));
$nessus= simplexml_load_file($filter-&gt;getParam("doc"));

$resultsFolder = substr($filter-&gt;getParam("doc"), 0, strrpos( $filter-&gt;getParam("doc"), '/') )."/";
$vulnarray = array();

foreach ($nessus-&gt;Report[0]-&gt;ReportHost as $host) {
    foreach ($host-&gt;ReportItem as $bug) {
        //echo $bug-&gt;plugin_name ."\n";
        $output = NULL;

        //mosty solen from: https://github.com/adamziaja/php/blob/master/nessus/nessus.php
        $vulnarray[(string)$bug-&gt;plugin_name]['risk'] = (string)$bug-&gt;risk_factor;
        if($bug-&gt;cvss_base_score &lt;&gt; ""){ $vulnarray[(string)$bug-&gt;plugin_name]['cvss_score'] = (string)$bug-&gt;cvss_base_score; }
        if($bug-&gt;cvss_vector &lt;&gt; ""){ $vulnarray[(string)$bug-&gt;plugin_name]['cvss_vector'] = (string)$bug-&gt;cvss_vector; }
        if($bug-&gt;cvss3_base_score &lt;&gt; ""){ $vulnarray[(string)$bug-&gt;plugin_name]['cvss3_score'] = (string)$bug-&gt;cvss3_base_score; }
        if($bug-&gt;cvss3_vector &lt;&gt; ""){ $vulnarray[(string)$bug-&gt;plugin_name]['cvss3_vector'] = (string)$bug-&gt;cvss3_vector; }
        if($bug-&gt;synopsis &lt;&gt; ""){ $vulnarray[(string)$bug-&gt;plugin_name]['description'] = (string)$bug-&gt;synopsis; }
        if($bug-&gt;description &lt;&gt; ""){ $vulnarray[(string)$bug-&gt;plugin_name]['tech_description'] = (string)$bug-&gt;description; }
        if($bug-&gt;solution &lt;&gt; ""){ $vulnarray[(string)$bug-&gt;plugin_name]['solution'] = (string)$bug-&gt;solution; }

    }
}

foreach ($vulnarray as $key =&gt; $value) {

    $cvssS = "";
    if(isset($value['cvss_score']) &amp;&amp; $value['cvss_score'] &lt;&gt; "")
        $cvssS = $value['cvss_score'];
    if(isset($value['cvss3_score']) &amp;&amp; $value['cvss3_score'] &lt;&gt; "")
        $cvssS = $value['cvss3_score'];

    if ($value['risk'] == 'None') { $value['risk'] = "Info"; }

    $vulnFileName = preg_replace( '/[^a-z0-9]+/', '-', strtolower( @$key ) );
    $jsonFile = '{
        "title":'.json_encode(@$key).',
        "remediation":"",
        "cvss_score":'.json_encode($cvssS).',
        "risk":'.json_encode(@$value['risk']).',
        "impact":"High/Medium/Low",
        "description":'.json_encode(@$value['description']).',
        "tech_description":'.json_encode(@$value['tech_description']).',
        "solution":'.json_encode(@$value['solution']).',
        "cvss2_score":'.json_encode(@$value['cvss_score']).',
        "cvss2_vector":'.json_encode(@$value['cvss_vector']).',
        "cvss3_score":'.json_encode(@$value['cvss3_score']).',
        "cvss3_vector":'.json_encode(@$value['cvss3_vector']).',
        "owasp":"",
        "tags":"",
        "to_check":"checked"}';

        if($filter-&gt;getParam('no-save') === false){
            file_put_contents($resultsFolder.$vulnFileName.".json", $jsonFile);
            if($filter-&gt;getParam('no-info') === true &amp;&amp; $value['risk'] == 'Info')
                unlink($resultsFolder.$vulnFileName.".json");
        }

    $prefix = ($filter-&gt;getParam('no-save') === true)? "[!] Issue:" : ($filter-&gt;getParam('no-info') === true &amp;&amp; $value['risk'] == 'Info')? "[-] Issue:" : "[+] Saving:";
    echo "$prefix $key\n";
    /*if ((string) $value['risk'] != 'None') {
        echo "##########################\n";
        echo "Title: ".@$key."\n";
        echo "Impact: ".@$value['risk']."\n";
        echo "CVSS2 score: ".@$value['cvss_score']." vector: ".@$value['cvss_vector']."\n";
        echo "CVSS3 score: ".@$value['cvss3_score']." vector: ".@$value['cvss3_vector']."\n";
        echo "Desc: ".@$value['description']."\n";
        echo "Tech Desc: ".@$value['tech_description']."\n";
        echo "Solution: ".@$value['solution']."\n";
    }*/
}

?&gt;</pre></body></html>