使用 python-nmap 进行端口扫描
生活随笔
收集整理的這篇文章主要介紹了
使用 python-nmap 进行端口扫描
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
利用 python-nmap模塊進行端口掃描,簡單的實現方式
實現了三種輸入方式
1)單個端口掃描,例如 python scanport.py -H host -P port
2)多個端口掃描,例如 python scanport.py -H host -P port1,port2,.....
3)連續端口掃描,例如 python scanport.py -H host -P start_port-end_port
#coding:utf-8import nmap import optparse import sysclass INFO:HEADER = '\033[95m'OKBLUE = '\033[94m'OKGREEN = '\033[92m'WARNING = '\033[93m'ARNING = '\033[93m'FAIL = '\033[91m'ENDC = '\033[0m'BOLD = '\033[1m'UNDERLINE = '\033[4m'def scanport(host, port):nm =nmap.PortScanner()try:result = nm.scan(host,port)state = result['scan'][host]['tcp'][int(port)]['state']# 多層字典嵌套取值if state =='open':print INFO.OKBLUE+'[*] '+host+ ' tcp/'+port+" "+state+INFO.ENDCelse:print INFO.WARNING+'[*] '+host+ ' tcp/'+port+" "+state+INFO.ENDCexcept Exception,e:raise eif __name__ == '__main__':parser = optparse.OptionParser("usage %prog -H <target host> -p <target port> or -p <start_port>-<end_port>")parser.add_option('-H', dest='Host', type='string', help='specify target host')parser.add_option('-P', dest='Port', type='string', help='specify target port[s] separated by "-"'or ",")(options, args) = parser.parse_args()if options.Host ==None or options.Port==None:print parser.usagesys.exit()host = options.Hostports = options.Portprint host,ports#如果是連續的端口if '-' in ports:ports_list = ports.split('-')for p in range(int(ports_list[0]),int(ports_list[1])+1):scanport(host, str(p))#其他的情況else:ports_list = ports.split(',')for p in ports_list:scanport(host, p)
上面的代碼有點復雜,改良之后的代碼如下:
優化結構
總結
以上是生活随笔為你收集整理的使用 python-nmap 进行端口扫描的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 正则表达式(2.实例)
- 下一篇: Python中列表的copy方法