0

好的,我想让 Nmap 扫描打开某个端口(在本例中为端口 80)的计算机的 IP 范围,并将它找到的所有 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 地址,而不是别的。我希望它不输出“主机:”或“()”和“端口: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

生产nmap出你想要的东西确实很好。但作为更通用的解决方案:

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

或者可能:

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

我发现一个名为 scanreport.sh 的脚本非常有用。虽然没有必要,但您可以按照建议使用 awk,但认为它可能很有趣。

它可以通过服务或端口(突出显示)很好地输出 nmap 结果。在快速整理后,它使用来自 nmap (-oG) 的 grep-able 输出grep -v ^# nmapoutput.txt > report.txt

例子

nmap -sS 192.168.1.22 -oG /directory/of/choice/results.txt

grep -v ^# results.txt > report.txt

./scanreport.sh -f report.txt

Host: 192.168.1.22 ()
22 open tcp  ssh  OpenSSH 5.3p1 Debian 3ubuntu4 (protocol 2.0)
80 open tcp  http  Apache httpd 2.2.14 ((Ubuntu))

./scanreport.sh -f report.txt -p 80

Host: 192.168.1.22 ()
80 open tcp  http  Apache httpd 2.2.14 ((Ubuntu))  

./scanreport.sh -f report.txt -s ssh

Host: 192.168.1.22 ()
22 open tcp  ssh  OpenSSH 5.3p1 Debian 3ubuntu4 (protocol 2.0)

谷歌上有很多关于它的东西,但这里有一个参考的链接。

./scanreport.sh

于 2014-03-11T15:25:21.330 回答