在看python安全攻防这本书中看到了python调用nmap进行扫描,于是进行了如下的总结:
1、实例化nmap扫描器
nm=nmap.PortScanner()
实例化以后,会把信息存储到“nm”里面,“nm”可以像从json里面取数据一样超级方便。
2、使用scan方法
result=nm.scan(hosts=targetIP,arguments='-sn -PE'
hosts为目标IP地址,arguments为Nmap的扫描参数
-sn:使用ping进行扫描
-PE:使用ICMP的echo请求包,
result的结果示例:
{
'nmap': {
'scanstats': {
'uphosts': '1',
'timestr': 'Sat Dec 17 16:24:11 2016',
'downhosts': '0',
'totalhosts': '1',
'elapsed': '0.11'
},
'scaninfo': {
'tcp': {
'services': '20-443',
'method': 'syn'
}
},
'command_line': 'nmap -oX - -p 20-443 192.168.199.211'
},
'scan': {
'192.168.199.211': {
'status': {
'state': 'up',
'reason': 'localhost-response'
},
'hostnames': [{
'type': 'PTR',
'name': 'salt'
}],
'vendor': {},
'addresses': {
'ipv4': '192.168.199.211'
},
'tcp': {
80: {
'product': '',
'state': 'open',
'version': '',
'name': 'http',
'conf': '3',
'extrainfo': '',
'reason': 'syn-ack',
'cpe': ''
},
443: {
'product': '',
'state': 'open',
'version': '',
'name': 'https',
'conf': '3',
'extrainfo': '',
'reason': 'syn-ack',
'cpe': ''
},
22: {
'product': '',
'state': 'open',
'version': '',
'name': 'ssh',
'conf': '3',
'extrainfo': '',
'reason': 'syn-ack',
'cpe': ''
}
}
}
}
}
3、对结果进行操作,获取想要的内容
state=result['scan'][192.168.199.211]['status']['state']
需安装python_nmap包
python_nmap包提供了python调用nmap的一系列接口
1.创建nmap扫描器 class PortScanner()
2.扫描器方法
scan(self, hosts=‘127.0.0.1’, ports=None, arguments=’-sV’, sudo=False)