I would like to use Nmap::Parser
to convert the XML output of an nmap
scan into a CSV file and I am already having problems at the very beginning.
Parsing small TCP/UDP scans work fine, but when I try to convert a larger file (e.g., 20 MB) , especially one with all 65535 UDP ports open|filtered, I get a segmentation fault.
The problem seems to be the "parsefile" method.
I tried different versions of Perl 5.10/5.14 on Linux and Mac OS X with the same results. Please see code snippet below.
#!/usr/bin/env perl
use strict; use warnings;
use Nmap::Parser;
my $np1 = new Nmap::Parser;
my $xmlin = $ARGV[0];
sub read_file {
$np1->parsefile($xmlin);
for my $host ($np1->all_hosts()) {
for my $port ($host->udp_ports()) {
print $host->ipv4_addr()." ".$port."\n";
}
}
}
&read_file;