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 有两种稳定的输出格式用于机器可读的解析。较旧的输出-oG
是Grepable 输出 ( ),它适用于使用 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 地址。