一部のホストで nmap を実行するために、perl で nmap スキャナー モジュールを使用しました。開いているポートを引き出すことができますが、tcp/22 SSH などのサービスもポートに追加できるようにしたいと考えています。を使用してLinuxマシンでnmapを実行すると
nmap -sS -p 1-1024 -sV -O --max-rtt-timeout 200ms host.ip
サービスで開いているすべてのポートを取得しますが、perl コードを変更してサービスを出力することもできません。私の現在のコード:
my $scanner = new Nmap::Scanner;
$scanner->register_scan_started_event(\&scan_started);
$scanner->register_port_found_event(\&port_found);
$scanner->scan('-sS -p 1-1024 -sV -O --max-rtt-timeout 200ms host.ip');
sub scan_started {
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\n";
}
sub port_found {
my $self = shift;
my $host = shift;
my $port = shift;
my $name = $host->hostname();
my $addresses = join(',', map {$_->addr()} $host->addresses());
print "On host $name ($addresses), found ",
$port->state()," port ",
join('/',$port->protocol(),$port->portid()),"\n";
}
私が得ている出力は
(host.ip) is up
On host (host.ip), found open port tcp/22
On host (host.ip), found open port tcp/111
コマンドを手動で入力すると表示されるように、ポートと一緒にサービスを取得できれば本当にありがたいです。