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

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

СКАНЕР ПОРТОВ НА PYTHON
Сканер портов на 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
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, чтобы избежать блокировки от сканируемого сервера.

Nazario

Я — Nazario, создатель и автор сайта guid.su, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем. Мои глубокие знания и обширный практический опыт в этих сферах позволяют мне создавать детальные руководства и учебные материалы, ценные для пользователей всех уровней.

Я стремлюсь делать сложные темы доступными и понятными, надеюсь что мой вклад в сообщество IT будет оценен по достоинству.

Моя работа направлена на образование и распространение знаний в области информационных технологий, помогая другим расширять свои возможности и углублять понимание современных технологий.

Guid: Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

Отправляя комментарий, вы даете согласие на обработку ваших данных в соответствии с политикой конфиденциальности и даёте согласие на их использование.