python3實現指定IP多線程端口掃描

一、socket實現端口掃描

 1 #!/usr/bin/python3
 2 #-*- coding:utf-8 -*-
 3 
 4 #編寫環境 windows 7 x64 + Python3.7.0
 5 #socket實現端口掃描
 6 
 7 import socket  8 import time  9 
10 def scan(ip, port): 11     server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 12     try: 13  server.connect((ip,port)) 14         print('{0} port {1} is open'.format(ip, port)) 15     except Exception as e: 16         print('{0} port {1} is off'.format(ip,port)) 17     finally: 18  server.close() 19 
20 def scanport(): 21     
22     ip = '10.10.10.3'
23     print('{0}'.format(ip)) 24     portlist = [22,443,80,21,23,3306,1433,1521,3389,5432,6379,7001] 25     #portlist = [80,443]
26     starttime = time.time() 27     
28     for port in portlist: 29  scan(ip, port) 30         
31     endtime = time.time() 32     print('一共運行了{0}秒'.format((endtime-starttime))) 33 
34 if __name__ == '__main__': 35     scanport()

二、telnetlib實現端口掃描

 1 #!/usr/bin/python3
 2 #-*- coding:utf-8 -*-
 3 
 4 #編寫環境 windows 7 x64 + Python3.7.0
 5 #telnetlib實現端口掃描
 6 
 7 import telnetlib  8 import time  9 
10 def scan(ip, port): 11     server = telnetlib.Telnet()      # 建立一個Telnet對象
12     try: 13         server.open(ip,port)         # 利用Telnet對象的open方法來建立TCP鏈接測試端口是否開放
14         print('{0} port {1} is open'.format(ip, port)) 15     except Exception as e: 16         print('{0} port {1} is off'.format(ip,port)) 17     finally: 18  server.close() 19 
20 def scanport(): 21     
22     ip = '10.10.10.3'
23     print('{0}'.format(ip)) 24     portlist = [22,443,80,21,23,3306,1433,1521,3389,5432,6379,7001] 25     #portlist = [80,443]
26     starttime = time.time() 27     
28     for port in portlist: 29  scan(ip, port) 30         
31     endtime = time.time() 32     print('一共運行了{0}秒'.format((endtime-starttime))) 33 
34 if __name__ == '__main__': 35     scanport()

三、多線程實現端口掃描

 1 #!/usr/bin/python3
 2 #-*- coding:utf-8 -*-
 3 
 4 #編寫環境 windows 7 x64 + Python3.7.0
 5 #telnetlib實現端口掃描
 6 
 7 import telnetlib  8 import threading  9 import time 10 
11 def scan(ip, port): 12     server = telnetlib.Telnet()      # 建立一個Telnet對象
13     try: 14         server.open(ip,port)         # 利用Telnet對象的open方法來建立TCP鏈接測試端口是否開放
15         print('{0} port {1} is open'.format(ip, port)) 16     except Exception as e: 17         print('{0} port {1} is off'.format(ip,port)) 18     finally: 19  server.close() 20 
21 def scanport(): 22     
23     ip = '10.10.10.3'
24     print('{0}'.format(ip)) 25     portlist = [22,443,80,21,23,3306,1433,1521,3389,5432,6379,7001] 26     #portlist = [80,443]
27     starttime = time.time() 28     
29     threads = [] 30     for port in portlist: 31         t = threading.Thread(target=scan,args=(ip,port)) 32  t.start() 33  threads.append(t) 34     
35     for t in threads: 36  t.join() 37     endtime = time.time() 38     print('一共運行了{0}秒'.format((endtime-starttime))) 39 
40 if __name__ == '__main__': 41     scanport()

四、參考

python實現指定ip端口掃描python

https://blog.csdn.net/qq_38228830/article/details/81432715windows

相關文章
相關標籤/搜索