| 
						
						
						
					 | 
				
				 | 
				
					@ -0,0 +1,63 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#!/usr/bin/env python3 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					''' PortScan v3 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ----------- | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    This application scans for open ports on the designated system. It uses | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    multiprocessing to speed up this process. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					''' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import socket | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import subprocess | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import sys | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from datetime import datetime | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from multiprocessing import Pool | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					def scan(port): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    try: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        result = sock.connect_ex((target_ip, port)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if result == 0: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            print("Port {}:\tOpen".format(port)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        sock.close() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    except socket.gaierror: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        print('Hostname could not be resolved.') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        sys.exit(0) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    except socket.error: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        print("Couldn't connect to server.") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        sys.exit(0) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    except: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					if __name__ == '__main__': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ports = list(range(1,4096)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    target = '' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    try: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        target = sys.argv[1] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    except: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        print("\nUsage:\t{} [target]\n\n\tScan for open ports on target machine.\n".format(sys.argv[0])) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        sys.exit(0) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    # Clear the screen | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    subprocess.call('clear', shell=True) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    target_ip  = socket.gethostbyname(target) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    # Print a nice banner with information on which host we are about to scan | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    print("-" * 60) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    print("Please wait, scanning remote host", target_ip) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    print("-" * 60) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    # Check what time the scan started | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    t1 = datetime.now() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    with Pool(processes = 8) as p: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        p.map(scan, ports) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    # Checking the time again | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    t2 = datetime.now() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    # Calculates the difference of time, to see how long it took to run the script | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    total =  t2 - t1 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    # Printing the information to screen | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    print('Scanning Completed in: ', total) |