私は、ネットワークを監査するNmapの:: ParserのかをNmap ::スキャナを使用する必要がありますか?
-
19-09-2019 - |
質問
私は、可能な最速の方法で私の大規模なネットワークの機器を監査したいと思います。 //search.cpan:私は Nmap::Parser
のか<のhref = "HTTPを使用する必要があります.ORG / perldocの/ Nmapの::スキャナ」のrel = "nofollowをnoreferrer"> Nmap::Scanner
の?
私はpingを実行だけでなく、関連するOSのフットプリントと識別を返すIPアドレスのリストを作成したい。
の例の
ping 192.168.*.*私は成功したのpingを取得するときに
次に、OSが何であるかの推測と一緒にハッシュにIPアドレスを保存
解決
あなたがNmap::Parser
やNmap::Scanner
を使用するかどうか、あなたは、Nmapのと同じスキャンを実行する必要があるので、2つの間には速度差がありません。
ここでは、ハッシュに結果を格納し、ホストの状態を報告し、彼らが起動している場合は、OSの指紋それらをしようと、あなたが望むものを約ないNmap::Scanner
を使用した例です。必要に応じて、それを拡張することができる必要があります。
#!/usr/bin/perl
use strict;
use warnings;
use Nmap::Scanner;
my %network_status;
my $scanner = new Nmap::Scanner;
$scanner->register_scan_complete_event(\&scan_completed);
$scanner->guess_os();
$scanner->scan('-O 192.168.*.*');
foreach my $host ( keys %network_status ) {
print "$host => $network_status{$host}\n";
}
sub scan_completed {
my $self = shift;
my $host = shift;
my $hostname = $host->hostname();
my $addresses = join(',', map {$_->addr()} $host->addresses());
my $status = $host->status();
print "$hostname ($addresses) is $status ";
my $os_name = 'unknown OS';
if ( $status eq 'up' ) {
if ( $host->os() && $host->os()->osmatches() ) {
my ($os_type) = $host->os()->osmatches();
$os_name = $os_type->name();
}
print "($os_name)";
}
print "\n";
$network_status{$addresses} = $os_name;
}
他のヒント
さて、それらの一つは、あなたが既に持っているデータのためのパーサであり、それらの一つは、データを作成するスキャナです。あなたが必要とする仕事をしていずれかを使用します。タスクのどの部分が問題を引き起こしている?
所属していません StackOverflow