0

さて、特定のポート (この場合はポート 80) が開いているコンピューターの IP 範囲を Nmap でスキャンし、見つかったすべての IP をテキスト ファイルに出力して、次の形式で保存します。

192.168.0.1
192.168.0.185
192.168.0.192
192.168.0.195

ファイルを出力するために、次のコマンドを使用してみました。

nmap -sT -p 80 -ttl 40 192.168.0.0-255 -oG - | grep "80/open" > output.txt

「output.txt」は、結果を含む出力ファイルです。したがって、output.txt の行は次のようになります。

Host: 192.168.0.1 ()    Ports: 80/open/tcp//http///

したがって、基本的には、ポート 80 を開いた状態で IP アドレスのみを出力し、それ以外は何も出力しないようにしたいと考えています。「Host:」または「()」と「Ports: 80/open/tcp//http///」の行を出力しないようにします。とにかく、Nmapにその内容を出力ファイルに入れさせないようにすることはできますか? それとも、IP アドレスのみを出力するようにしますか? 地図のページを見てみましたが、ほとんど役に立ちませんでした。そして、私はインターネット全体を見ましたが、それもあまり役に立ちませんでした。それで、私がこれを行う方法を知っている人はいますか?ありがとう

4

3 に答える 3

1

Awkはあなたの友達です!

$ nmap -sT -p 80 192.168.0.0/24 -oG - | awk '/ 80\/open/{print $2}' > output.txt

これにより、ポート80が開いている行が検出され(複数のポートをスキャンする場合は、80より前のスペースに注意してください!)、フィールド2を空白で分割して印刷します。それを行う別の方法は次のとおりです。

$ nmap -sT -p 80 --open 192.168.0.0/24 -oG - | awk '$4=="Ports:"{print $2}' > output.txt

これは、--openNmapの引数を使用して、開いているポートを持つホストの出力のみを生成します。awkコマンドは、IPアドレスを出力する前に、これが「ステータス」行ではなく「ポート」行であることを確認します(これは、を使用している場合にのみ表示される可能性があります-vが、私は肯定的ではありません)。

いくつかの異なる情報を抽出することにした場合にスキャンを繰り返す必要がないように、スキャン結果をファイルに保存することが通常は最善の利益であることに注意してください。これを行う場合は、XML出力(-oX)を使用することをお勧めします。これは、パーサーが既に構築されている分析ツールが多数あるためです。

于 2012-02-23T22:28:02.210 に答える
0

Having nmap produce exactly what you want would indeed be nice. But as a more general solution:

$ nmap ... | grep ... | tr '/' ' ' | awk '{ print $2,$5; }
192.168.0.1 80

Or maybe:

nmap ... | grep ... | tr '/' ' ' | cut -d' ' -f2,8
于 2011-08-11T22:14:09.340 に答える