Подтвердить что ты не робот

Nmap:: Parser, ошибка сегментации больших файлов

Я хотел бы использовать Nmap::Parser для преобразования XML-вывода сканирования nmap в файл CSV, и у меня уже есть проблемы в самом начале.

Разбор небольших сканирования TCP/UDP работает нормально, но когда я пытаюсь преобразовать более крупный файл (например, 20 МБ), особенно один со всеми 65535 UDP-портами, открытыми | фильтром, я получаю ошибку сегментации.

Проблема заключается в методе "parsefile".

Я пробовал разные версии Perl 5.10/5.14 на Linux и Mac OS X с теми же результатами. Ниже приведен фрагмент кода.

#!/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;
4b9b3361

Ответ 1

Проблема возникает из-за известной ошибки в perl-версиях < 5.16, как указано в: http://www.perlmonks.org/?node_id=955478

Модернизация perl до 5.16 или выше решит эту проблему.