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