mirror of
https://github.com/robindhole/fundamentals.git
synced 2025-09-13 21:42:15 +00:00
Adds socket code for multithreaded.
This commit is contained in:
40
networks/code/port-scanner.py
Normal file
40
networks/code/port-scanner.py
Normal file
@@ -0,0 +1,40 @@
|
||||
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}')
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user