Python扫描器-python-nmap的安装与常用方法说明
python-nmap把nmap指令参数封装起来,然后调用nmap,格式化nmap输出的结果。 模块常用方法说明这里我们主要接受python-nmap模块的两个常用类,一个是PortScanner()类,实现一个nmap工具的端口扫描功能封装;另一个为PortScannerHostDict()类,实现存储与访问主机扫描结果 1、PortScanner()类常用方法 1-1、scan()方法 scan(self,hosts='127.0.0.1',ports=None,arguments='-sV') 方法,实现指定主机、端口、namp命令行参数的扫描。参数hosts为字符串类型,表示扫描的主机地址,格式可以用"scanme.nmap.org"、"192.116.0-255.1-127"、"216.163.128.20/20"表示; 参数ports为字符串类型,表示扫描的端口,可以用"22,53,110,143-4564"表示;参数namp命令行参数,格式为"-sU -sX -sC",例如: nm = nmap.PortScanner() nm.scan('192.168.209.121-122','22,80') 1-2、command_line()方法 >>> nm.command_line() u'nmap -oX - -p 22,80 -sV 192.168.209.121-122' 1-3、scaninfo()方法 >>>nm.scanninfo() {'tcp':{'services':'22,80','method':'syn'}} 1-4、all_hosts()方法 ['192.168.209.121','192.168.209.122'] 2、PortScannerHostDict()类常用方法 >>> nm['192.168.209.121'].hostname() 'liuyazhuang' 2-2、state()方法 >>> nm['192.168.209.121'].state() 'up' 2-3、all_protocols()方法 >>> nm['192.168.209.121'].all_protocols() ['tcp'] 2-4、all_tcp()方法 >>> nm['192.168.209.121'].all_tcp() [22,80] 2-5、tcp()方法 >>> nm['192.168.209.121'].tcp(22) {'state':'open','reason':'syn-ack','name':'ssh'} python操作nmap1.简单的小案例 创建PortScanner实例,然后扫描159.239.210.26这个IP的20-443端口。 import nmap nm = nmap.PortScanner() ret = nm.scan('115.239.210.26','20') print ret 返回格式如下: {'nmap': {'scanstats': {'uphosts': '1','timestr': 'Tue Oct 25 11:30:47 2016','downhosts': '0','totalhosts': '1','elapsed': '1.11'},'scaninfo': {'tcp': {'services': '20','method': 'connect'}},'command_line': 'nmap -oX - -p 20 -sV 115.239.210.26'},'scan': {'115.239.210.26': {'status': {'state': 'up','reason': 'syn-ack'},'hostnames': [{'type': '','name': ''}],'vendor': {},'addresses': {'ipv4': '115.239.210.26'},'tcp': {20: {'product': '','state': 'filtered','version': '','name': 'ftp-data','conf': '3','extrainfo': '','reason': 'no-response','cpe': ''} } } } } 2.内置方法: 还可以打印出简单的信息 import nmap nm = nmap.PortScanner() print nm.scaninfo() # {u'tcp': {'services': u'20-443','method': u'syn'}} print nm.command_line() # u'nmap -oX - -p 20-443 -sV 115.239.210.26' 查看有多少个host print nm.all_hosts() # [u'115.239.210.26'] 查看该host的详细信息 nm['115.239.210.26'] 查看该host包含的所有协议 nm['115.239.210.26'].all_protocols() 查看该host的哪些端口提供了tcp协议 nm['115.239.210.26']['tcp'] nm['115.239.210.26']['tcp'].keys() 查看该端口是否提供了tcp协议 nm['115.239.210.26'].has_tcp(21) 还可以像这样设置nmap执行的参数 nm.scan(hosts='192.168.1.0/24',arguments='-n -sP -PE -PA21,23,80,3389') 更多操作请进官网http://xael.org/pages/python-nmap-en.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |