2012-07-23 6 views
17

Ich möchte Nmap::Parser verwenden, um die XML-Ausgabe eines nmap Scan in eine CSV-Datei zu konvertieren, und ich habe bereits Probleme am Anfang.Nmap :: Parser, Segmentierungsfehler bei großen Dateien

Parsing kleine TCP/UDP-Scans funktionieren gut, aber wenn ich versuche, eine größere Datei (z. B. 20 MB) zu konvertieren, insbesondere eine mit allen 65535 UDP-Ports | gefiltert, erhalte ich einen Segmentierungsfehler.

Das Problem scheint die "Parsefile" -Methode zu sein.

Ich versuchte verschiedene Versionen von Perl 5.10/5.14 auf Linux und Mac OS X mit den gleichen Ergebnissen. Bitte beachten Sie das Codefragment unten.

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

könnten Sie versuchen, mit Perl 5,16? Es sieht aus wie ein Fehler in Perl, der hier beschrieben wird: http://www.perlmonks.org/?node_id=955478 – mirod

+4

Hallo mirod, vielen Dank für deine Hilfe. Das Aktualisieren von Perl hat den Trick gemacht. Ich habe gerade Perl 5.16 installiert und alles funktioniert jetzt. Erfolgreich eine 70 MB XML-Datei konvertiert. :-) – rhe24

+0

Bitte geben Sie dies als Antwort an und akzeptieren Sie es. –

Antwort

3

Das Problem entsteht durch einen bekannten Fehler in Perl-Versionen < 5.16 per erwähnt: http://www.perlmonks.org/?node_id=955478

Aktualisieren das Perl 5.16 oder höher wird dieses Problem lösen.

+1

Diese Frage hat eine Antwort und ist von der unbeantworteten Liste entfernt. Ich wollte tun, was du getan hast. Danke, dass du es getan hast. –

+0

wir müssen SO nützlich halten. :) – askmish