Este é um exemplo em perl. O código executa nmap
com o formato de saída XML e, em seguida, analisa a saída usando a biblioteca Nmap :: Parser. Você precisa fornecer máscara de rede como um argumento. Então, se você salvar este skript no arquivo explore.pl
, você pode executá-lo como
explore.pl 192.168.1.0/24
Você precisa executar esse script como root se quiser exibir endereços MAC .
#!/usr/bin/env perl
use utf8;
use strict;
use warnings;
use Nmap::Parser;
sub safeGet($){
defined $_[0] ? $_[0] : "unknown";
}
my $nmOutput='/usr/bin/nmap -oX - -A @ARGV';
my $np = new Nmap::Parser;
$np->parse($nmOutput);
my $cnt=0;
for my $host ($np->all_hosts()){
$cnt++;
my $hostName = 'unknown';
if(@{$host->{hostnames}} > 0){ # $host->hostname returns "0" when no hostname was found.
$hostName = $host->hostname;
}
print "Host $cnt: $hostName|"
. safeGet($host->addr) ."|"
. safeGet($host->mac_addr)."|"
. safeGet($host->os_sig->name)."\n";
}