17

Nmap::Parserスキャンの XML 出力をnmapCSV ファイルに変換するために使用したいのですが、最初から問題が発生しています。

小さな 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;
4

1 に答える 1

3

この問題は、http: //www.perlmonks.org/? node_id=955478で言及されているperlバージョン<5.16の既知のバグが原因で発生します。

Perlを5.16以降にアップグレードすると、この問題は解決します。

于 2012-10-17T19:14:35.063 に答える