fundamentals/networks/code/port-scanner.py
2022-08-19 15:02:06 +01:00

41 lines
1.1 KiB
Python

import argparse
import socket
from colorama import init, Fore
def is_port_open(host: str, port: int) -> bool:
"""
Checks if a port is open on a host.
"""
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.connect((host, port))
sock.settimeout(0.5)
except:
return False
else:
return True
if __name__ == '__main__':
init() # initialize colorama
# Declare arguments
parser = argparse.ArgumentParser(description='Port Scanner')
parser.add_argument('-H', '--host', help='Host to scan', required=True, type=str)
parser.add_argument('-s', '--start', help='Starting port', default=1, type=int)
parser.add_argument('-e', '--end', help='Ending port', default=1024, type=int)
# Parse arguments
args = parser.parse_args()
host, start, end = args.host, args.start, args.end
for port in range(start, end):
if not is_port_open(host, port):
print(f'{Fore.RED}Port {port} is closed{Fore.RESET}')
continue
print(f'{Fore.GREEN}Port {port} is open{Fore.RESET}')