1#!/usr/bin/perl 2use strict; 3use Nmap::Parser; 4use File::Spec; 5use Cwd; 6use Test::More 'no_plan'; 7use constant HOST1 => '127.0.0.1'; 8my @UP_HOSTS = (HOST1); 9use constant TOTAL_HOSTS => 1; 10 11use constant TEST_FILE =>'test1.xml'; 12use vars qw($host $np $session $svc $os $FH); 13 14$FH = File::Spec->catfile(cwd(),'t',TEST_FILE); 15$FH = File::Spec->catfile(cwd(), TEST_FILE) unless(-e $FH); 16 17my $np = new Nmap::Parser; 18 19parser_test(); 20session_test(); 21host_1(); 22 23sub parser_test { 24 ok($np->parsefile($FH),"Parsing nmap data: $FH"); 25 26 #TESTING GET_IPS() 27 is_deeply([$np->get_ips()],[HOST1], 'Testing get_ips for correct number of hosts'); 28 is_deeply([$np->get_ips('up')],[HOST1], 'Testing get_ips for correct hosts with status = up'); 29 #is_deeply([$np->get_ips('down')],[HOST2], 'Testing get_ips for correct hosts for with status = down'); 30} 31 32 33 34sub session_test { 35 36 isa_ok($session = $np->get_session(), 'Nmap::Parser::Session'); 37 print $session->nmap_version() . "\n";; 38 is($session->numservices(),1670,'Session: total number of services'); 39 is($session->numservices('syn'),1670,'Session: numservices type = connect'); 40 is($session->numservices('udp'),undef,'Session: numservices type = udp'); 41 is($session->start_time(),1144909629,'Session: start_time'); 42 is($session->start_str(),'Thu Apr 13 02:27:09 2006','Session: start_str'); 43 is($session->finish_time(),1144909633,'Session: finish_time'); 44 is($session->time_str(),'Thu Apr 13 02:27:13 2006','Session: time_str'); 45 is($session->nmap_version(),'3.95','Session: nmap_version'); 46 is($session->xml_version(),'1.01','Session: xml_version'); 47 is($session->scan_args(),'nmap -A -vv -O -oX test1 127.0.0.1','Session: scan_args'); 48 is($session->scan_type_proto(),undef,'Session: scan_type_proto()'); 49 is($session->scan_type_proto('syn'),'tcp','Session: scan_type_proto(syn)'); 50 51 } 52 53 54sub host_1 { 55 56 isa_ok($host = $np->get_host(HOST1), 'Nmap::Parser::Host','GET '.HOST1); 57 is($host->status,'up','Host1: status'); 58 is($host->addr,HOST1,'Host1: addr'); 59 is($host->addrtype,'ipv4','Host1: addrtype'); 60 is($host->ipv4_addr,HOST1,'Host1: ipv4_addr'); 61 is($host->hostname,'localhost.localdomain','Host1: hostname()'); 62 is($host->hostname(0),$host->hostname, 'Host1: hostname(0)'); 63 is($host->hostname(1),'localhost.localdomain', 'Host1: hostname(1)'); 64 is($host->extraports_state(),'closed','Host1: extraports_state'); 65 is($host->extraports_count(),1670,'Host1: extraports_count'); 66 67 68 is($host->tcp_port_count(),0,'Host1: tcp_port_count'); 69 is($host->udp_port_count(),0,'Host1: udp_port_count'); 70 71 is_deeply([$host->tcp_ports()],[qw()],'Host1: tcp_ports()'); 72 is_deeply([$host->tcp_ports('open')],[qw()],'Host1: tcp_ports(open)'); 73 is_deeply([$host->tcp_ports('closed')], [qw()],'Host1: tcp_ports(closed)'); 74 is_deeply([$host->tcp_ports('filtered')],[qw()],'Host1: tcp_ports(filtered)'); 75 is_deeply([$host->tcp_ports('open|filtered')],[qw()],'Host1: tcp_ports(open|filtered)'); 76 is_deeply([$host->udp_ports()], [qw()],'Host1: udp_ports()'); 77 is_deeply([$host->udp_ports('open')],[qw()],'Host1: udp_ports(open)'); 78 is_deeply([$host->udp_ports('filtered')], [qw()],'Host1: udp_ports(filtered)'); 79 is_deeply([$host->udp_ports('closed')], [qw()],'Host1: udp_ports(closed)'); 80 81 is($host->tcp_ports('open'), $host->tcp_open_ports(), 'Host1: tcp_open_ports'); 82 is($host->tcp_ports('filtered'),$host->tcp_filtered_ports(),'Host1: tcp_filtered_ports'); 83 is($host->tcp_ports('closed'), $host->tcp_closed_ports(), 'Host1: tcp_closed_ports'); 84 85 is($host->udp_ports('open'), $host->udp_open_ports(), 'Host1: udp_open_ports'); 86 is($host->udp_ports('filtered'),$host->udp_filtered_ports(),'Host1: udp_filtered_ports'); 87 is($host->udp_ports('closed'), $host->udp_closed_ports(), 'Host1: udp_closed_ports'); 88 89 isa_ok($np->del_host(HOST1), 'Nmap::Parser::Host','DEL '.HOST1); 90 is($np->get_host(HOST1),undef, 'Testing deletion of '.HOST1); 91 92 93 #TESTING OS OBJECT FOR HOST 1 94 my $os; 95 isa_ok($os = $host->os_sig(),'Nmap::Parser::Host::OS','os_sig()'); 96 97 } 98