糟糕的nmap grepable输出

时间:2013-12-12 10:42:37

标签: bash terminal grep nmap port-scanning

如果我扫描哪个nmap一个目标,我使用输出grepable选项(-oG)如果有这个输出

nmap -sS -oG - 192.168.1.1
Status: Up
Host: 192.168.1.1 ()  Ports: 20/closed/tcp//ftp-data///, 21/open/tcp//ftp///, 22/closed/tcp//ssh///, 43/closed/tcp//whois///, 80/open/tcp//http///
# Nmap done at Thu Dec 12 11:32:36 2

如您所见,指示端口号的行没有换行符。使用grep并不容易...:)

我正在使用bash,我怎么能纠正这个?

由于

2 个答案:

答案 0 :(得分:1)

好吧,虽然他们称之为“grepable”输出,但更多的意思是通过awk,sed或Perl等工具进行解析。

有很多有用的信息在NMAP website

字段也用制表符分隔,所以我从例如开始。 cut -f5 file获取您想要的字段,然后您可以使用awk -F/ '{print $2}'进行精细解析。我不确定输出的哪一部分是有意义的。

Perl也可以按照网页上的说明解析输出,但可能不需要。

答案 1 :(得分:0)

该输出没有任何问题。 Grepable format旨在为每个主机设置一行,以便您可以打开特定端口打开的所有主机。

如果您想要的只是那些打开的端口的列表,您可以告诉Nmap只打印那些带有--open选项的端口:

sh$ nmap -p 80,22 localhost -oG - -n -Pn --open
# Nmap 6.41SVN scan initiated Thu Dec 12 08:40:03 2013 as: nmap -p 80,22 -oG - -n -Pn --open localhost
Host: 127.0.0.1 ()  Status: Up
Host: 127.0.0.1 ()  Ports: 22/open/tcp//ssh///  Ignored State: closed (1)
# Nmap done at Thu Dec 12 08:40:03 2013 -- 1 IP address (1 host up) scanned in 0.08 seconds