python nmap模块
1、安装namp
https://nmap.org/download.html 下载链接
PS:windows安装似乎麻烦一些,需要多下载npcap,官网有链接
2、python安装
注意,注意,注意!
需要安装的包是python-namp
PS:网上说需要版本一致,但是这个模块最新版本就是0.6.1
亲测也是可以使用的
3、使用与示例
import nmap # 导入 nmap.py 模块
nm = nmap.PortScanner() # 获取 PortScanner 对象
nm.scan('127.0.0.1', '22-443') # 扫描主机 127.0.0.1 端口号 22-443
nm.command_line() # 获取用于扫描的命令行:nmap -oX - -p 22-443 127.0.0.1
nm.scaninfo() # 获取本次扫描的信息 {'tcp': {'services': '22-443', 'method': 'connect'}}
nm.all_hosts() # 获取所有扫描到的主机
nm['127.0.0.1'].hostname() # 获取 127.0.0.1 的主机名
nm['127.0.0.1'].hostnames() # 获取list格式的主机名dict 127.0.0.1 # 如 [{'name':'hostname1', 'type':'PTR'}, {'name':'hostname2', 'type':'user'}]
nm['127.0.0.1'].state() # 获取主机 127.0.0.1 的状态 (up|down|unknown|skipped)
nm['127.0.0.1']['tcp'].keys() # 获取所有tcp端口
nm['127.0.0.1'].all_tcp() # 获取所有tcp端口 (已排序)
nm['127.0.0.1'].all_udp() # 同上
nm['127.0.0.1'].all_ip() # 同上
nm['127.0.0.1'].all_sctp() # 同上
nm['127.0.0.1'].has_tcp(22) # 是否含有主机 127.0.0.1 的 22 端口的信息
nm['127.0.0.1']['tcp'][22] # 获取主机 127.0.0.1 22 端口(tcp)的所有信息
nm['127.0.0.1'].tcp(22) # 获取主机 127.0.0.1 22 端口的所有信息
nm['127.0.0.1']['tcp'][22]['state'] # 获取主机 127.0.0.1 22 端口(tcp)的状态 (open|closed|filter)
使用多线程,nmap模块进行线程扫描
实例:
import nmap import optparse import threading def nmScan(tgtHost,tgtPort): #端口扫描 nmscan = Portscanner() nmscan.scan(tgtHost,tgtPort) #状态录入 state = nmscan[tgtHost]['tcp'][tgtPort]['stat'] def main(): #添加参数解释器,-H tgtHost -p tgtPort usage = '-H tgtHosat -p tgtPort' parse = parse.optionParse(usage) parse.add_option('-H',dest='tgtHost',type='string',help='specify tgtHost') parse.add_option('-p,dest='tgtPort',type='string,help='specify tgtPort') #装载参数和配置,利用parse_args方法 (options,args) = parse.parse_args() tgtHost = options.tgtHost tgtPorts = str(options.tgtPort).splite(,) #开始进行多线程扫描 threads = [] for tgtPort in tgtPorts: t = thread.Threading(target='nmscan',args=(tgtHost,int(tgtPort)) threads.append(t) #为线程设置守护,并且使用join主线程等待子线程完成 for thread in threads: thread.setDaemon(True) thread.strat() thread.join() #阻塞主线程 print('end') if __name__ = '__main__': main()
这里在使用的时候,出现了PortScnner()模块无法使用的问题,后来通过安装python-nmap解决,注意不是安装nmap,而是python-nmap
你的版本应该是0.64,而不是1.00

浙公网安备 33010602011771号