z0mbi3 icon

nmap2csv.pl the good version

z0mbi3 | PRO | 03/22/21 07:52:36 AM UTC | 0 ⭐ | 9452 👁️ | Never ⏰ | []
Perl |

3.97 KB

|

None

|

0 👍

/

0 👎

#!/usr/bin/perl
 
use Getopt::Std;
use Nmap::Parser;
use Date::Manip;
 
getopt("hi:o:");
 
$usage = "$0 -i input.xml -o output.csv";
 
if ($opt_h) {
        print "$usage\n";
};
 
if (!$opt_i || !$opt_o) { 
        print "$usage\n"; 
} else {
        my $np = new Nmap::Parser;
        $np->parsefile("$opt_i");
 
        # Start writing to results to the outputfile
        open (OUT,'>>'.$opt_o) || die "Could not open output file: $opt_o\n!";
 
        $si = $np->get_session();
 
        print   OUT "############\nNmap Version: ".$si->nmap_version()."\n",
                'Command Line: '.$si->scan_args()."\n";
        print OUT "Scan Date: ". $si->start_str()."\n";
        print OUT 'Total Time: '.($si->finish_time() - $si->start_time())." seconds\n##########\n";
        
        print OUT "addr;hostname;status;tcp open;udp open;extraports;extraportsstate;osmatch\n"; 
        for my $host ($np->all_hosts()) {
            my $tcp_ports = 0;
            my $udp_ports = 0;
            for my $port ($host->tcp_ports()) { $tcp_ports++ }
            for my $port ($host->udp_ports()) { $udp_ports++ }
            print OUT $host->addr().';'.
                $host->hostname().';'.
                $host->status().';'.
                $tcp_ports.';'.
                $udp_ports.';'.
                $host->extraports_count().';'.
                $host->extraports_state().';'.
                $host->os_sig->name."\n";
        }
        print OUT "##########\n";
        
        print OUT "addr;hostname;portnum;state;proto;name;product;version;extrainfo;extraports (count);osmatch\n"; 
        for my $host ($np->all_hosts()) {
                for my $port ($host->tcp_ports()) {
                        $sv = $host->tcp_service($port);
 
                        my $product = '';
                        my $version = '';               
                        my $extra = '';
                        my $osmatch = '';
                        my $extraports = '';
        
                        $product = $sv->product(); $product =~ s/\;/\,/g;
                        $version = $sv->version(); $version =~ s/\;/\,/g;
                $extra = $sv->extrainfo(); $extra =~ s/\;/\,/g;
                $osmatch = $host->os_sig->name; $osmatch =~ s/\;/\,/g;
                        $extraports = $host->extraports_state . " (" . $host->extraports_count() . ')';
 
                        print OUT $host->ipv4_addr().';';
                        print OUT $host->hostname().';';
                        print OUT $port.';'.
                        $host->tcp_port_state($port).';'.
                        'tcp;'.
                        $sv->name().';'.
                        $product.';'.
                        $version.';'.
                        $extra.';'.
                                $extraports.';'.
                        $osmatch."\n";
                }
                for my $port ($host->udp_ports()) {
                        $sv = $host->udp_service($port);
 
                        my $product = '';
                        my $version = '';               
                        my $extra = '';
                        my $osmatch = '';
                        my $extraports = '';
 
        
                        $product = $sv->product(); $product =~ s/\;/\,/g;
                        $version = $sv->version(); $version =~ s/\;/\,/g;
                $extra = $sv->extrainfo(); $extra =~ s/\;/\,/g;
                $osmatch = $host->os_sig->name; $osmatch =~ s/\;/\,/g;
                        $extraports = $host->extraports_state . " (" . $host->extraports_count() . ')';
 
                print OUT $host->ipv4_addr().';';
                        print OUT $host->hostname().';';
                        print OUT $port.';'.
                        $host->udp_port_state($port).';'.
                        'udp;'.
                        $sv->name().';'.
                        $product.';'.
                        $version.';'.
                        $extra.';'.
                                $extraports.';'.
                        $osmatch."\n";
                }
        }
 
}
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎