摘要:利用模块进行端口扫描简单的实现方式实现了三种输入方式单个端口扫描例如多个端口扫描例如连续端口扫描例如多层字典嵌套取值如果是连续的端口其他的情况上面的代码有点复杂改良之后的代码如下优化结构
利用 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-8 import nmap import optparse import sys class INFO: HEADER = " 33[95m" OKBLUE = " 33[94m" OKGREEN = " 33[92m" WARNING = " 33[93m" ARNING = " 33[93m" FAIL = " 33[91m" ENDC = " 33[0m" BOLD = " 33[1m" UNDERLINE = " 33[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.ENDC else: print INFO.WARNING+"[*] "+host+ " tcp/"+port+" "+state+INFO.ENDC except Exception,e: raise e if __name__ == "__main__": parser = optparse.OptionParser("usage %prog -H-p or -p - ") 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.usage sys.exit() host = options.Host ports = options.Port print 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)
上面的代码有点复杂,改良之后的代码如下:
优化结构
import nmap,argparse, sys class INFO: HEADER = " 33[95m" OKBLUE = " 33[94m" OKGREEN = " 33[92m" WARNING = " 33[93m" ARNING = " 33[93m" FAIL = " 33[91m" ENDC = " 33[0m" BOLD = " 33[1m" UNDERLINE = " 33[4m" def scan_port(host, port): nm = nmap.PortScanner() try: result= nm.scan(host,port) print result state = result["scan"][host]["tcp"][int(port)]["state"] if state == "open": print INFO.OKBLUE+"[*] "+host+ " tcp/"+port+" "+state+INFO.ENDC else: print INFO.WARNING + "[*] " + host + " tcp/" + port + " " + state + INFO.ENDC except Exception,e: raise e def get_args(): parger = argparse.ArgumentParser(description="port scan script") parger.add_argument("-H", "--host", help="specify target host") parger.add_argument("-P", "--port", help="specify target port") args = parger.parse_args() print args if args.host == None: parger.error("host is required") sys.exit() if args.port == None: parger.error("host is required") sys.exit() else: return args def main(): args = get_args() if "-" in args.port: ports_list = args.port.split("-") for p in range(int(ports_list[0]),int(ports_list[1])+1): scan_port(args.host, str(p)) else: ports_list = args.port.split(",") for p in ports_list: scan_port(args.host, p) if __name__ == "__main__": main()
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44375.html
摘要:常用工具后面的三个工具无法安装,原因目前不知,后面用来时再寻找解决方法是一个非常强大的加密解密对于信息的加密和破解是需要经常用到的在下,安装报错后,需要安装一个的软件即可,详细看安装的报错信息在下,发现找不到此发现只在系统下才自带有此模 0:常用工具 #后面的三个工具无法安装,原因目前不知,后面用来时再寻找解决方法 pip install python-nmap python-blue...
摘要:干货盘点安全扫描与报破远程桌面可以发现这个设备被扫描出来,它就是我们的我们还可以尝试扫描它的操作系统。使用干货盘点安全扫描与报破远程桌面可以看到它运行的是或者或者,尽管不能完全一致,但是大致上为我们提供了准确的内容。 1、扫描技术扫描技术就是批量判断局域网中有哪些设备在线、这些设备的哪些服务开放。我们可以使用ping工具测...
阅读 2770·2023-04-25 18:58
阅读 947·2021-11-25 09:43
阅读 1171·2021-10-25 09:46
阅读 3464·2021-09-09 11:40
阅读 1539·2021-08-05 09:59
阅读 816·2019-08-29 15:07
阅读 915·2019-08-29 12:48
阅读 637·2019-08-29 11:19