Написал свой Сканер портов на Python. Так как учить только сухую теорию мне было неинтересно, поэтому одной из первых программ, которые я написал на Python был сканер портов. С помощью него можно посмотреть, какие порты открыты на определённом IP адресе или доменном имени. Это может быть полезно для анализа безопасности, чтобы выявить открытые порты, и при необходимости, закрыть их. С помощью похожих сканеров, хакеры сканируют порты компьютеров, которые хотят взломать.
Сперва приведу код программы, а ниже объясню каждую строчку. Хочу кое что уточнить. Данный код был сделан в версии 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
Теперь рассмотрим каждый кусочек этой программы. Вначале идёт подключение модулей — 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]
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. Его можно бесконечно улучшать, например создать для него графический интерфейс на PyQT, сделать сканирование в несколько потоков, автоматическую смену UserAgent, чтобы избежать блокировки от сканируемого сервера.