如果我扫描哪个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,我怎么能纠正这个?由于
答案 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