| @ -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) | |||||