Я хотел бы использовать 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;