2012-07-23 27 views
17

Me gustaría usar Nmap::Parser para convertir la salida XML de un nmap escanear en un archivo CSV y ya estoy teniendo problemas desde el principio.Nmap :: Analizador, Error de segmentación en archivos grandes

El análisis pequeño de TCP/UDP funciona bien, pero cuando intento convertir un archivo más grande (por ejemplo, 20 MB), especialmente uno con todos los 65535 puertos UDP abiertos | filtrados, aparece un error de segmentación.

El problema parece ser el método "parsefile".

Probé diferentes versiones de Perl 5.10/5.14 en Linux y Mac OS X con los mismos resultados. Por favor, vea el fragmento de código a continuación.

#!/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

¿podrías probar con perl 5.16? Parece un error en Perl, que se describe aquí: http://www.perlmonks.org/?node_id=955478 – mirod

+4

Hola, mirod, muchas gracias por tu ayuda. La actualización de Perl hizo el truco. Acabo de instalar Perl 5.16 y todo está funcionando ahora. Convirtió exitosamente un archivo XML de 70MB. :-) – rhe24

+0

Proporcione esto como una respuesta y acéptelo. –

Respuesta

3

El problema surge debido a un error conocido en las versiones de Perl < 5.16 como se mencionó en: http://www.perlmonks.org/?node_id=955478

Actualización del Perl a 5,16 o superior va a resolver este problema.

+1

Esta pregunta tiene una respuesta, y está fuera de la lista no respondida. Estaba a punto de hacer lo que tú hiciste. Gracias por hacerlo –

+0

tenemos que mantener tan útil. :) – askmish

Cuestiones relacionadas