2012-07-23 4 views
17

Desidero utilizzare Nmap::Parser per convertire l'output XML di una scansione nmap in un file CSV e ho già riscontrato problemi all'inizio.Nmap :: Parser, errore di segmentazione su file di grandi dimensioni

L'analisi di piccole scansioni TCP/UDP funziona correttamente, ma quando provo a convertire un file più grande (ad es. 20 MB), in particolare uno con tutte le porte UDP 65535 aperte, viene visualizzato un errore di segmentazione.

Il problema sembra essere il metodo "parsefile".

Ho provato diverse versioni di Perl 5.10/5.14 su Linux e Mac OS X con gli stessi risultati. Si prega di vedere lo snippet di codice qui sotto.

#!/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; 
+13

potresti provare con perl 5.16? Sembra un bug in Perl, descritto qui: http://www.perlmonks.org/?node_id=955478 – mirod

+4

Ciao mirod, grazie mille per il tuo aiuto. L'aggiornamento di Perl ha fatto il trucco. Ho appena installato perl 5.16 e tutto funziona ora. Convertito con successo un file XML da 70 MB. :-) – rhe24

+0

Si prega di fornire questo come una risposta e accettarlo. –

risposta

3

Il problema sorge a causa di un errore noto in versioni Perl < 5.16 come accennato: http://www.perlmonks.org/?node_id=955478

Aggiornamento del Perl di 5,16 o superiore risolverà questo problema.

+1

Questa domanda ha una risposta ed è fuori dalla lista senza risposta. Stavo per fare quello che hai fatto. Grazie per averlo fatto. –

+0

dobbiamo tenerlo COSÌ utile. :) – askmish