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