1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | # 简单的端口扫描工具 # 作者: Charles # 公众号: Charles的皮卡丘 import time import socket import threading # 判断是否为正确的IP地址。 def isIP(ip): ip_addr = ip.split( '.' ) if len(ip_addr) ! = 4 : return False for ipnum in ip_addr: if not ( 0 < = int(ipnum) < 255 ): return False else : return True # 端口扫描工具 class scanThread(threading.Thread): def __init__( self , ip, port_min = 0 , port_max = 65535 ): # 初始化。 threading.Thread.__init__( self ) self .port_max = port_max self .port_min = port_min self .ip = ip # assert isinstance(int,self.port_min) and isinstance(int,self.port_max) # 重写run def run( self ): return self .__checker() # 检测 def __checker( self ): for port in range( self .port_min, self .port_max): self .__connect(port) # 连接 def __connect( self ,port): socket.setdefaulttimeout( 1 ) self .sock = socket.socket() try : start_time = time.time() self .sock.connect(( self .ip,port)) end_time = time.time() connect_time = int(start_time - end_time) info = 'Find --> [IP]: %s, [PORT]: %s, [Connect Time]: %d' % ( self .ip, port, connect_time) print (info) self .__save(info) self .sock.close() except : # print('出错误了') self .sock.close() def __save( self ,info): try : with open( 'results.txt' , 'a' ) as f: f.write(info + '\n' ) except : print ( '写文件出现了问题' ) time.sleep( 0.1 ) if __name__ = = '__main__' : # 输入IP地址。 ip = input( 'Input IP(example <xxx.xxx.xxx.xxx>):\n' ) print (isIP(ip)) while not isIP(ip): ip = input( '请输入正确的IP地址:\n' ) # 输入最小端口、 port_min = input( '需要扫描的最小端口为:' ) while not ( 0 < = int(port_min) < 65535 ): port_min = input( '请输入正确的需要扫描的最小端口:' ) port_max = input( '需要扫描的最大端口为(65535):' ) while not ( 0 < = int(port_min) < int(port_max) < 65535 ): port_min = input( '请输入正确的需要扫描的最大端口(65535):' ) num = 8 port_max = int(port_max) port_min = int(port_min) interval = (port_max - port_min) / / num for i in range(interval): scanThread(ip, i * num, (i + 1 ) * num).start() |
以上就是python 实现端口扫描工具的详细内容,更多关于python 端口扫描工具的资料请关注自学编程网其它相关文章!
- 本文固定链接: https://zxbcw.cn/post/202408/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)