1

特定のポートがフィルタリングまたはファイアウォールされていることをどのように検出するかを知りたいので、nmapソースコードを読んでいました。私はcでソケットを使用した経験があり、単純なポートスキャナーを作成しました。これは簡単です-接続が成功するとポートが開き、そうでない場合は閉じられます(RSTが返されるため)。ただし、ファイアウォールで保護されたポートの場合、RST パケットが返されず、ポート スキャナーは永遠に「待機」します。

誰かがこのトピックの経験がある場合は、実際のスキャンとポート状態の決定が行われる nmap コードの部分を教えてください。または、少なくともこの問題に対処する利用可能な他のコードがあるかどうか教えてください。

4

1 に答える 1

1

非同期ソケット API 呼び出しを使用し (つまり、接続が確立されるのを待たずに、代わりに次のポート/アドレスを並行して試行します)、妥当なタイムアウトを定義します (たとえば、接続が 1 分後に確立されない場合は、それを考慮することができます)。フィルタリングされます)。

于 2010-01-30T14:25:00.213 に答える