端口扫描工具python-nmap的使用

学习了nmap工具发现真的很强大啊,但是如果要在shell script里面想要输出自己想要的格式会很蛋疼啊,那么python-nmap就显示出了价值。

当然python-nmap没有nmap那么强大的功能,只提供了端口扫描。

现在用一个示例简单讲一下python-nmap的使用方法:

>>> import nmap
>>> nm = nmap.PortScanner()
>>> nm.scan('115.239.210.26', '20-443')
{'nmap': {'scanstats': {'uphosts': u'1', 'timestr': u'Mon Jul 29 18:52:34 2013', 'downhosts': u'0', 'totalhosts': u'1', 'elapsed': u'14.88'}, 'scaninfo': {u'tcp': {'services': u'20-443', 'method': u'syn'}}, 'command_line': u'nmap -oX - -p 20-443 -sV 115.239.210.26'}, 'scan': {u'115.239.210.26': {'status': {'state': u'up', 'reason': u'echo-reply'}, 'hostname': '', u'tcp': {80: {'state': u'open', 'reason': u'syn-ack', 'name': u'http'}}}}}
创建PortScanner实例,然后扫描159.239.210.26这个IP的20-443端口。

>>> nm.scaninfo()
{u'tcp': {'services': u'20-443', 'method': u'syn'}}
>>> nm.command_line()
u'nmap -oX - -p 20-443 -sV 115.239.210.26'
打印简单信息

>>> nm.all_hosts()
[u'115.239.210.26']
查看有多少个host

>>> nm['115.239.210.26']
{'status': {'state': u'up', 'reason': u'echo-reply'}, 'hostname': '', u'tcp': {80: {'state': u'open', 'reason': u'syn-ack', 'name': u'http'}}}
查看该host的详细信息

>>> nm['115.239.210.26'].all_protocols()
[u'tcp']
查看该host包含的所有协议

>>> nm['115.239.210.26']['tcp']         
{80: {'state': u'open', 'reason': u'syn-ack', 'name': u'http'}}
>>> nm['115.239.210.26']['tcp'].keys()
[80]
查看该host的哪些端口提供了tcp协议

>>> nm['115.239.210.26']['tcp'][80]   
{'state': u'open', 'reason': u'syn-ack', 'name': u'http'}
>>> nm['115.239.210.26']['tcp'][80]['state']
u'open'
查看80端口的详细信息

>>> nm['115.239.210.26'].has_tcp(21)        
False
>>> nm['115.239.210.26'].has_tcp(80)
True
查看该端口是否提供了tcp协议

>>> nm.scan(hosts='192.168.1.0/24', arguments='-n -sP -PE -PA21,23,80,3389')
还可以像这样设置nmap执行的参数


以上只是一些常用的比较简单的功能,如果需要更复杂的功能,请点击python-nmap官网



你可能感兴趣的:(linux,nmap,python-nmap)