2012-07-23 27 views
17

Tôi muốn sử dụng Nmap::Parser để chuyển đổi đầu ra XML của một lần quét nmap thành tệp CSV và tôi đã gặp sự cố ngay từ đầu.Nmap :: Trình phân tích cú pháp, lỗi phân đoạn trên các tệp lớn

Phân tích cú pháp quét TCP/UDP nhỏ hoạt động tốt, nhưng khi tôi cố gắng chuyển đổi tệp lớn hơn (ví dụ: 20 MB), đặc biệt là với tất cả 65535 cổng UDP mở | được lọc, tôi nhận được lỗi phân đoạn.

Sự cố có vẻ là phương pháp "phân tích cú pháp".

Tôi đã thử các phiên bản khác nhau của Perl 5.10/5.14 trên Linux và Mac OS X với cùng kết quả. Vui lòng xem đoạn mã bên dưới.

#!/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; 
+13

bạn có thể thử với perl 5.16 không? Nó trông giống như một lỗi trong Perl, được mô tả ở đây: http://www.perlmonks.org/?node_id=955478 – mirod

+4

Xin chào mirod, cảm ơn bạn rất nhiều vì đã giúp đỡ bạn. Nâng cấp Perl đã làm các trick. Tôi vừa cài đặt perl 5.16 và mọi thứ hiện đang hoạt động. Đã chuyển đổi thành công tệp XML 70MB. :-) – rhe24

+0

Vui lòng cung cấp câu trả lời này làm câu trả lời và chấp nhận. –

Trả lời

3

Vấn đề phát sinh do một lỗi được biết đến trong các phiên bản perl < 5,16 như đã đề cập tại địa chỉ: http://www.perlmonks.org/?node_id=955478

Nâng cấp perl để 5,16 hoặc cao hơn sẽ giải quyết vấn đề này.

+1

Câu hỏi này có câu trả lời và nằm ngoài danh sách chưa được trả lời. Tôi chuẩn bị làm những gì bạn đã làm. Cảm ơn vì đã làm điều đó. –

+0

chúng tôi phải giữ SO hữu ích. :) – askmish

Các vấn đề liên quan