nmap 可以只显示打开特定端口的主机吗?

Bri*_*ian 28 ip scanner tcp nmap

可以nmap列出本地网络上同时打开 SSH 和 HTTP 的所有主机吗?为此,我可以运行以下内容:

nmap 192.168.1.1-254 -p22,80 --open
Run Code Online (Sandbox Code Playgroud)

但是,这列出了打开任何列表端口的主机,而我想要打开所有端口的主机。此外,输出非常冗长:

# nmap 192.168.1.1-254 -p22,80 --open

Starting Nmap 6.47 ( http://nmap.org ) at 2015-12-31 10:14 EST
Nmap scan report for Wireless_Broadband_Router.home (192.168.1.1)
Host is up (0.0016s latency).
Not shown: 1 closed port
PORT   STATE SERVICE
80/tcp open  http

Nmap scan report for new-host-2.home (192.168.1.16)
Host is up (0.013s latency).
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 254 IP addresses (7 hosts up) scanned in 3.78 seconds
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是输出就像:

192.168.1.16
Run Code Online (Sandbox Code Playgroud)

因为上面的主机是唯一一个所有端口都打开的主机。

我当然可以对输出进行后处理,但我不想依赖 nmap 的输出格式,如果有办法,我宁愿让 nmap 来做。

bon*_*ing 15

在 Nmap 中没有办法做到这一点,但是您关于不想“依赖 nmap 的输出格式”的评论让我指出,Nmap 有两种稳定的输出格式用于机器可读的解析。较旧的输出-oGGrepable 输出 ( ),它适用于使用 perl、awk 和 grep 进行处理,但缺少一些更高级的输出(如 NSE 脚本输出、端口原因、跟踪路由等)。更完整的格式是XML 输出 ( -oX),但对于您的目的来说可能有点过头了。

您可以将这些输出保存到带有-oG-oX或 的文件中-oA(两种格式加上“普通”文本输出),或者您可以将其中之一直接发送到标准输出:nmap 192.168.1.1-254-p22,80 --open -oG - | awk '/22\/open.*80\/open/{print $2}'


小智 5

尝试以下命令:

nmap --open -p 22,80 192.168.1.1-254 -oG - | grep "/open" | awk '{ print $2 }'
Run Code Online (Sandbox Code Playgroud)

这将扫描您范围内的端口,并以 grepable 格式传输输出以查找开放端口,然后打印符合任何该标准的 IP 地址。

  • 作为记录,请注意您的解决方案是不正确的,因为您提出的解决方案将输出没有打开两个端口的 ip(例如,它将输出仅打开 80 而不是 22 的服务器)@MarshallHallenbeck (2认同)