Сканер портов на Python

Написал свой Сканер портов на Python. Так как учить только сухую теорию мне было неинтересно, поэтому одной из первых программ, которые я написал на Python был сканер портов. С помощью него можно посмотреть, какие порты открыты на определённом IP адресе или доменном имени. Это может быть полезно для анализа безопасности, чтобы выявить открытые порты, и при необходимости, закрыть их. С помощью похожих сканеров, хакеры сканируют порты компьютеров, которые хотят взломать.

Сканер портов на Python.

Сперва приведу код программы, а ниже объясню каждую строчку.  Хочу кое что уточнить. Данный код был сделан в версии 3 Python. Так что если на Python 2.7 не запуститься просьба отредактировать.     

import socket import 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] print (Простейший сканер портов на питоне) print ( ) host = input(Введите имя сайта или IP адрес: ) print () print (Ожидайте идёт сканирование портов!) print () for port in mas:     s = socket.socket()     s.settimeout(1)     try:         s.connect((host, port))     except socket.error:         pass     else:         s.close         print (host + : + str(port) + порт активен) print () print (Процесс завершен)

 Сканер портов на Python

Python-powered_hello-world_svg

Теперь рассмотрим каждый кусочек этой программы. Вначале идёт подключение модулей socket отвечает за взаимодействие с сетью через сокеты, sys системный модуль общего назначения.

import socket import 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]

  Пишем пояснительные надписи, и ожидаем ввода Ip адреса или имени домена в переменную host.   

print (Простейший сканер портов на питоне) print ( ) host = input(Введите имя сайта или IP адрес: ) print () print (Ожидайте идёт сканирование портов!) print ()

  Основная часть кода представляет собой цикл, в котором мы по очереди пытаемся приконнектиться к портам из списка mas. Если это не удаётся выполняется команда pass которая служит заглушкой она ничего не делает. Если же какой то порт открыт мы печатаем об этом сообщение.  

for port in mas: s = socket.socket() s.settimeout(1) try: s.connect((host, port)) except socket.error: pass else: s.close print (host + : + str(port) + порт активен)

  В самом конце, после проверки всех портов данного домена или IP адреса, нужно уведомить о завершении работы сканера.  

print () print (Процесс завершен)

 

У нас получился очень простой сканер портов на Python. Его можно бесконечно улучшать, например создать для него графический интерфейс на PyQT, сделать сканирование в несколько потоков, автоматическую смену UserAgent, чтобы избежать блокировки от сканируемого сервера.

Оцените статью
Установка и настройка популярных программ на Windows, Linux и другие операционные системы