Nmap::Parser
を使用してnmap
スキャンのXML出力をCSVファイルに変換したいと思います。Nmap :: Parser、大きなファイルのセグメンテーションフォールト
小さなTCP/UDPスキャンを解析すると問題はありませんが、大きなファイル(たとえば20 MB)、特に65535個のUDPポートをすべてオープンしようとすると、フィルタをかけるとセグメント化エラーが発生します。
問題は "parsefile"メソッドのようです。
LinuxとMac OS Xで異なるバージョンのPerl 5.10/5.14を同じ結果で試しました。下記のコードスニペットをご覧ください。
#!/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;
perl 5.16で試してみることはできますか?これは、Perlのバグのように見えます。http://www.perlmonks.org/?node_id=955478 – mirod
こんにちはmirod、ありがとうございました。 Perlをアップグレードすることはやりました。私はちょうどperl 5.16をインストールしました。 70MBのXMLファイルを正常に変換しました。 :-) – rhe24
これを回答として提供し、それを受け入れてください。 –