diff --git a/other/PortScan.py b/other/PortScan.py new file mode 100644 index 0000000..bb5cae6 --- /dev/null +++ b/other/PortScan.py @@ -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)