Nmap匹配三个端口

时间:2018-01-24 10:05:36

标签: lua network-programming nmap

我正在尝试为nmap创建一个脚本,如果三个端口都打开,它只会执行它的操作。

最终结果是如果端口515,631和9100对tcp流量开放,脚本应该打印一条消息(首先,它应该进行os检测)。

到目前为止我的脚本:

function portrule(host,port)
    return port.state == 'open' and 
    port.protocol == 'tcp' and 
    515 <= port.number and 
    631 <= port.number and
    9100 <= port.number

end

action = function(host, port)
    return "hello"
end

但是这会在9100被击中后对所有端口执行。

任何帮助都是适当的!

1 个答案:

答案 0 :(得分:0)

NSE脚本基于a rule function匹配,有四种不同的类型。您正在使用portrule,用于测试主机上的每个端口。由于您要在主机上测试多个端口,因此您应该使用hostrule

在知道所有端口的状态后测试hostrule。您可以使用像nmap.get_ports这样的nfs-ls函数来检查所有这些端口的状态,或者您可以使用nmap.get_port_state函数检查各个端口,例如nbstat脚本。实际上,nbstat看起来就是你想要做的一个很好的例子。