Уроки Python 16 // Сканируем порты



Иногда нужно узнать, какие порты открыты на удалённой машине. Это требуется для обеспечения информационной безопасности, а также может быть использовано для пинга (проверка доступности сервера). Используем для этого стандартный модуль socket который позволяет приконнектится к любому из портов, и если порт закрыт, выдает ошибку. Любую ошибку можно поймать с помощью конструкции

try:
    какие-то команды где может быть ошибка
except:
    команды которые выполнятся если произошла ошибка
else:
    команды которые выполнятся если ошибки не произошло


Давайте напишем несложную программу которая сканирует большинство из известных сетевых портов

import socket, sys
mas = [20, 21, 22, 23, 25, 42, 43, 53, 67, 69, 80, 110, 115, 123, 137, 138, 139, 143, 161, 179, 443, 445, 514, 515, 993, 995, 1080, 1194, 1433, 1702, 1723, 3128, 3268, 3306, 3389, 5432, 5060, 5900, 5938, 8080, 10000, 20000]
host = input('Введите адрес сайта или IP адрес: ')
print ("Ждите, идёт пинг портов")
for port in mas:
    s = socket.socket()
    s.settimeout(1)
    try:
        s.connect((host, port))
    except socket.error:
        pass
    else:
        s.close
        print (str(port) + ' порт активен')

Сперва в массиве mas перечисляем номера всех портов которые хотим пропинговать. Далее, в цикле for port in mas создаём сокет s = socket.socket(), устанавливаем паузу между сигналами s.settimeout(1), и пробуем подсоединиться к очередному порту s.connect((host, port)). Так как вся конструкция у нас заключена в ловушку для ошибок try-except то при наличии закрытого порта управление перейдет к блоку команд except socket.error: в котором расположена ничего не делающая команда-заглушка pass. Если же при подсоединении ошибки не произошло, значит порт открыт и выполнится блок команд else где мы закроем сокет, и напишем что данный порт активен.

Несложная программа позволяет сканировать сайты и компьютеры на наличие открытых портов.

программированиеобразованиеpythonпитонуроки
80
15.249 GOLOS
0
В избранное
Pythono
Python, PHP, Web-dev
80
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (5)
Сортировать по:
Сначала старые