Once you have issued a command and have asked the system to provide you with an XML report (for example) using the following short-form code, a JSON object will be returned:
my %hashItems; $hashItems{'primary'} = 'vulnerabilities'; $hashItems{'secondary'} = "report"; $hashItems{'action'} = 'getreport'; $hashItems{'format'} = "xml"; $hashItems{'network'} = "$Network"; $hashItems{'apikey'} = $APIKey;
In the object, the "compresseddata" this field needs to be decoded with Base64 and then uncompressed (this field uses Zlib compression).
Again, in pseudo code without a lot of testing, the flow would look something like:
my $compresseddata = "";
if (defined $result{'compresseddata'}) {
$compresseddata = $result{'compresseddata'};
}
if (length($compresseddata) != $result{'compressedlength'}) {
print STDERR "Invalid compressed data has been received\n";
next;
}
use Compress::Zlib qw(uncompress);
use MIME::Base64 qw(decode_base64);
my $uncompresseddata = uncompress(decode_base64($compresseddata));
if (length($uncompresseddata) != $result{'uncompressedlength'}) {
print STDERR "Invalid uncompressed data has been received (".length($uncompresseddata)." != ".$result{'uncompressedlength'}.")\n";
next;
}
if(open(FILE, "> $Filename")) {
print FILE $uncompresseddata;
close(FILE);
}