Table of Contents
Introduction
In today’s digital landscape, cybersecurity plays a vital role in safeguarding systems and networks. A fundamental aspect of cybersecurity is the ability to scan network ports to identify potential vulnerabilities. In this tutorial, we will explore how to build a basic port scanner using Python. By the end of this tutorial, you will have a solid understanding of how port scanning works and a working port scanning tool that you can use for basic security assessments.
Prerequisites
To follow along with this tutorial, you should have a basic understanding of Python programming. Familiarity with network protocols, such as TCP/IP, will also be helpful but is not mandatory. Additionally, you will need to have Python installed on your machine.
Setup
Before diving into the code, we need to install the necessary libraries. In this tutorial, we will be using the socket
library, which provides low-level network communication capabilities. To install it, open your terminal or command prompt and run the following command:
python
pip install socket
With the socket
library installed, we can now proceed to build our port scanner.
Building the Port Scanner
-
Start by creating a new Python file called
port_scanner.py
. -
Open the file in your favorite text editor and import the
socket
library:import socket
-
Next, define a function called
scan_port
that will accept the target IP address and a port number as parameters:def scan_port(target_ip, port): # Code to be added
-
Inside the
scan_port
function, create a new socket object:def scan_port(target_ip, port): # Create a new socket object s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
The
socket.AF_INET
parameter specifies the address family, andsocket.SOCK_STREAM
specifies the socket type for TCP connections. -
Before attempting to scan the port, we need to handle potential exceptions. Add a
try-except
block:def scan_port(target_ip, port): try: # Create a new socket object s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Code to be added except socket.error as e: print(f"Error: {e}")
This will catch any socket-related errors that may occur during the port scanning process.
-
Within the
try
block, use theconnect
method to attempt a connection to the target IP address and port:def scan_port(target_ip, port): try: # Create a new socket object s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Attempt a connection to the target IP address and port result = s.connect_ex((target_ip, port)) except socket.error as e: print(f"Error: {e}")
The
connect_ex
method returns an error code. If the connection is successful, the error code will be 0. -
Add a conditional statement to check the result of the connection attempt:
def scan_port(target_ip, port): try: # Create a new socket object s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Attempt a connection to the target IP address and port result = s.connect_ex((target_ip, port)) # Check the result of the connection attempt if result == 0: print(f"Port {port} is open") else: print(f"Port {port} is closed") except socket.error as e: print(f"Error: {e}")
If the error code is 0, we print a message indicating that the port is open. Otherwise, we print a message indicating that the port is closed.
-
Save the file. Our basic port scanner is now complete!
Executing the Port Scanner
To execute the port scanner and scan a target IP address for open ports, follow these steps:
-
Open a terminal or command prompt.
-
Navigate to the directory where you saved the
port_scanner.py
file. -
Run the following command, replacing
target_ip
with the IP address you want to scan andport
with the port number:python port_scanner.py target_ip port
For example, to scan port 80 on the IP address
192.168.0.1
, you would run the following command:python port_scanner.py 192.168.0.1 80
-
The port scanner will attempt a connection to the specified IP address and port. The output will indicate whether the port is open or closed.
Conclusion
In this tutorial, we have learned how to build a basic port scanner using Python. We started by setting up the necessary libraries and then proceeded to write the code for the port scanner. Finally, we executed the port scanner and scanned a target IP address for open ports. Port scanning is an essential technique in the field of cybersecurity, allowing us to identify potential entry points into a system or network. However, it is crucial to use port scanning tools responsibly and with proper authorization.
You now have a solid foundation for building upon this basic port scanner. Consider adding additional features, such as the ability to scan multiple ports or an entire range of IP addresses. Happy coding!