Nmap扫描范围输出文件问题

时间:2011-08-11 22:09:49

标签: nmap

好的,我想让Nmap扫描具有某个端口打开的计算机的IP范围(在这种情况下为端口80),并将它找到的所有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地址?我试着看地图页面,它没什么帮助。我看了整个互联网,这也不是很有用。那么有谁知道我怎么做到这一点?感谢

3 个答案:

答案 0 :(得分: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

这个使用Nmap的--open参数仅为具有开放端口的主机生成输出。在打印IP地址之前,awk命令检查这是“端口”行,而不是“状态”行(在使用-v时可能只显示,但我不是肯定的。)

请注意,将扫描结果保存到文件通常符合您的最佳利益,以避免在决定提取某些不同信息时需要重复扫描。如果您选择这样做,我建议使用XML输出(-oX),因为有很多分析工具已经为它构建了解析器。

答案 1 :(得分:0)

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

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

或者也许:

nmap ... | grep ... | tr '/' ' ' | cut -d' ' -f2,8

答案 2 :(得分:0)

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

它提供了通过服务或端口很好地输出nmap结果的能力(带突出显示)。它从grep -v ^# nmapoutput.txt > report.txt

快速整理后使用nmap(-oG)的grep-able输出

示例

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