Open In App

Simple Port Scanner using Sockets in Python

Last Updated : 12 Jul, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

Prerequisites: Socket Programming in Python

Before going to the programming, let us discuss about ports. In this article, we will check the virtual ports of a server or websites, or localhost. Every port has a unique number. There are 65,535 ports available in a host starting from 0. We can assign the ports for any services.

Example 1: In this program, you can scan a number of ports in a certain range.

Python3




# Here we import two modules, socket and time
 
import socket
import time
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
# here we asking for the target website
# or host
target = input('What you want to scan?: ')
 
# next line gives us the ip address
# of the target
target_ip = socket.gethostbyname(target)
print('Starting scan on host:', target_ip)
 
# function for scanning ports
 
 
def port_scan(port):
    try:
        s.connect((target_ip, port))
        return True
    except:
        return False
 
 
start = time.time()
 
# here we are scanning port 0 to 4
for port in range(5):
    if port_scan(port):
        print(f'port {port} is open')
    else:
        print(f'port {port} is closed')
 
end = time.time()
print(f'Time taken {end-start:.2f} seconds')


 

 

Output: 
 

 

What you want to scan?: localhost
Starting scan on host: 127.0.0.1
port 0 is closed
port 1 is closed
port 2 is closed
port 3 is closed
port 4 is closed
Time taken 8.12 seconds

 

Note: you can change the range in the for loop for change the number of ports to be scanned. For scanning a website or a host it can take a certain time so be patient.

 

Example 2: If you want to scan a particular port then go for this solution.

 

Python3




# importing the sockets module
import socket
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
target = input('What you want to scan?: ')
 
# getting the ip address using gethostbyname
# function
t_IP = socket.gethostbyname(target)
print("Starting scan on host: ", t_IP)
 
 
def port_scan(port):
    try:
        s.connect((t_IP, port))
        return True
    except:
        return False
 
 
port = int(input("Enter the port number to be scanned: "))
 
if port_scan(port):
    print('Port', port, 'is open')
else:
    print("port", port, "is closed")


Output:

What you want to scan?: localhost
Starting scan on host:  127.0.0.1
Enter the port number to be scanned: 135
Port 135 is open

Note: Here we are scanning the localhost. You can scan any host or website. If you are getting any error then sockets is unable to connect the target or perhaps you did some mistake in your code.

Warnings: Without taking permission from the administration scanning ports of a server or a website can be considered as a crime. There are many free websites available for testing, you can use them.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads