Nmap::Parser
スキャンの XML 出力をnmap
CSV ファイルに変換するために使用したいのですが、最初から問題が発生しています。
小さな 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;