Простой сканер портов с использованием сокетов в Python

Опубликовано: 12 Апреля, 2022

Предпосылки: Программирование сокетов в Python

Прежде чем перейти к программированию, поговорим о портах. В этой статье мы проверим виртуальные порты сервера или веб-сайтов или localhost. У каждого порта есть уникальный номер. На хосте доступно 65 535 портов, начиная с 0. Мы можем назначить порты для любых сервисов.

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")

Выход:

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

Примечание: вы можете изменить диапазон в цикле for для изменения количества портов, которые нужно сканировать. Для сканирования веб-сайта или хоста может потребоваться определенное время, так что наберитесь терпения.

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

Python3

# importing the scokets 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")

Выход:

 Что вы хотите просканировать ?: localhost
Запуск сканирования на хосте: 127.0.0.1
Введите номер порта для сканирования: 135
Порт 135 открыт

Примечание: здесь мы сканируем localhost. Вы можете сканировать любой хост или веб-сайт. Если вы получаете какую-либо ошибку, значит, сокеты не могут подключиться к цели или, возможно, вы допустили ошибку в своем коде.

Предупреждения : Без разрешения администрации сканирование портов сервера или веб-сайта может рассматриваться как преступление. Есть много бесплатных сайтов, доступных для тестирования, вы можете ими пользоваться.

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.