NMAP 服务信息

NMAP Service Information

通过这段代码,我可以获得主机名、使用的协议、端口和端口状态。我怎样才能获得服务信息?

for host in nm.all_hosts():
    print('----------------------------------------------------')
    print('Host : %s (%s)' % (host, nm[host].hostname()))
    print('State : %s' % nm[host].state())

    for proto in nm[host].all_protocols():
        print('----------')
        print('Protocol : %s' % proto)

        lport = list(nm[host][proto].keys())
        lport.sort()
        for port in lport:
            print('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))
            print('----------')

您可以使用 socket 模块中的 getservbyport 函数通过端口获取服务名称,尝试做类似的事情:

>>> import socket
>>> socket.getservbyport(80)
'http'

在 python 中没有明确的方法来获取有关特定服务的信息(或定义),因此请尝试搜索有关网站(并提供 API 以将其用于 python).

好的伙计们,我现在知道怎么做了! 由于我们使用 NMAP,nmap 可以告诉我们什么服务 运行 在什么端口上。 您可以使用类似的方式提取信息,例如:

print('port : %s\tservice : %s' % (port, nm[host][proto][port]['name']))