+1 (315) 557-6473 

Create a program to create port scanner in python assignment solution.


Instructions

Objective
Write a program to create port scanner in python language.

Requirements and Specifications

program to create port scanner in python

Source Code

import socket

import time

import sys

from datetime import date

if __name__ == '__main__':

    # ask for domain

    ip = input("Enter ip address or domain name to scan: ")

    # Validate that input is numeric for starting port end ending port

    try:

        port_a = int(input("Enter starting port number (1 - 65535): "))

        port_b = int(input("Enter ending port number (1 - 65535 greater than start port num): "))

    except:

        print("The input for starting port and ending port must be numeric.")

        sys.exit(1)

    # Check that starting port and ending port are between 1-65535

    if port_a not in range(1, 65535+1) or port_b not in range(1,65535+1):

        print("Starting port and ending prot must be between 1-65535.")

        sys.exit(1)

    if port_b <= port_a:

        print("Ending port number must be greater than starting port number.")

        sys.exit()

    # print info

    print('*'*30)

    print(f"List of open ports. Host:{ip} Start Port#:{port_a} End Port#:{port_b}")

    print(f"Start: {date.today()}")

    print('*'*30)

    # Save starting time

    start_time = time.time()

    for port in range(port_a, port_b+1): # iterate through ports

        print(f"Scanning port {port}", end="\r")

        try:

            a_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

            a_socket.settimeout(1)

            result = a_socket.connect_ex((ip, port))

            if result == 0: # port open

                print(f"{ip}:Port:{port}")

        except socket.error as e:

            #print("time out.")

            print(e)

        finally:

            a_socket.close()

    # Save ending time

    end_time = time.time()

    # Print time taken

    print("Time taken {:.2f} seconds".format(end_time-start_time))