nmap跳过端口扫描但执行--script?

时间:2014-09-12 04:29:16

标签: nmap

我正在尝试使用带有正常扫描的脚本的nmap。但是当执行nmap -sn --script=...时,它只找到主机(目标)并停止。

使用脚本扫描目标但不进行端口扫描的命令是什么?

1 个答案:

答案 0 :(得分:5)

NSE(Nmap Scripting Engine)脚本旨在根据脚本中定义的四个函数(称为Rules)中至少一个的返回值运行:

  • prerule() - 此功能在整个扫描开始时运行一次。如果返回true,则调用action函数,不带参数。
  • portrule(host, port) - 此功能对每个主机上的每个开放端口运行一次。如果返回true,则为该主机和端口组合运行action(host, port)函数。
  • hostrule(host) - 对于找到的所有主机,此函数运行一次。如果返回true,则为该主机运行action(host)函数。
  • postrule() - 此功能与prerule的功能相同,但在扫描完所有主机后运行

因此,当您使用-sn(“跳过端口扫描”)进行扫描时,portrule脚本根本不会运行,因为“没有打开的端口”。执行目标脚本扫描的最佳方法是确定相关端口是什么,并使用-p指定它们。例如,如果我想在不进行完整端口扫描的情况下运行ssh-hostkey,我会这样做:nmap -p 22 --script ssh-hostkey <targets>