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://www.cnblogs.com/cong12586/p/14135468.html