NMAP提供了ACK,RST,FIN或者SYN-ACK扫描。
创建一个PortScanner()类对象,用这个对象完成扫描操作。
同时创建的对象有一个scan()函数,进行基本的Nmap扫描。
#coding=utf-8
#一个Nmap的端口扫描器
import nmap
import argparse
def nampScan(tgtHost,tgtPort):
'''创建一个PortScanner()类对象,使用scan()函数完成扫描工作'''
nmScan = nmap.PortScanner()
nmScan.scan(tgtHost,tgtPort)
state = nmScan[tgtHost]['tcp'][int(tgtPort)]['state']
print tgtHost+" tcp/"+tgtPort+" "+state
def main():
'''程序的参数解析,调用函数等'''
parser = argparse.ArgumentParser()
parser.add_argument('-H',dest="tgtHost")
parser.add_argument('-p',dest="tgtPort")
args = parser.parse_args()
tgtHost = args.tgtHost
tgtPorts = args.tgtPort.split(",")
if (tgtHost==None) | (tgtPorts[0]==None):
print "you must specify a target host and post"
print tgtHost
print tgtPorts
for tgtPort in tgtPorts:
nampScan(tgtHost,tgtPort)
if __name__=="__main__":
main()```