0

一部のホストで 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

コマンドを手動で入力すると表示されるように、ポートと一緒にサービスを取得できれば本当にありがたいです。

4

1 に答える 1

1

service()オブジェクトのメソッドを使用して、Nmap::Scanner::Portオブジェクトを取得できNmap::Scanner::Serviceます。そのオブジェクトのアクセサは、 Nmap APIport.versionで説明されているテーブルのフィールドにほぼ対応しています。

于 2013-10-31T13:46:49.363 に答える