Меню
Контакты
109147, Москва, ул.Воронцовская, 35Б, корп.2 офис.11, 4 этаж
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
109147, Москва, ул.Воронцовская, 35Б, корп.2 офис.11, 4 этаж
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

Как написать сканер портов на языке Python?

 11 Янв 2012    MikroTik, Scripts

В этой статье мы напишем сканер портов на языке Python. С его помощью можно будет сканировать свои хосты на предмет открытых портов. Например, тот же Mikrotik Routerboard.

Приступаем к написанию.

Для написания сканера будем использовать модуль socket.

#!/usr/bin/env python

# -*- coding: utf_8 -*-

Импортируем модуль для работы с сокетами:

import socket

Вводим IP-адрес хоста, который будем сканировать:

host = raw_input("Введите ip адрес компьютера: ")

Создаем пустой список портов:

ports = []

При помощи функции xrange добавляем в список портов значения от 0 до 65535:

for i in xrange(65536):

ports.append(i)

Создаем пустой список, в который будут занесены открытые порты:

open_port = []

В цикле переберем все порты:

for port in ports:

Создаем новый сокет:

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

Устанавливаем таймаут, чтобы скрипт не приостанавливался, если сокет открыт:

sock.settimeout(0.01)

try:

Выполняем подключение:

sock.connect((host, port))

except:

Если подключиться не удалось, возникает исключение:

print ("Порт %s закрыт" % port)

else:

Если исключения не возникло, добавляем номер открытого порта в список open_port и выводим сообщение о том, что порт открыт:

open_port.append(port)

print ("Порт %s открыт." % port)

Закрываем сокет:

sock.close()

print "\033[34m Открытые порты\033[0m"

Выводим информацию об открытых портах:

print open_port

Выполним сканирование портов устройства Mikrotik Routerboard.

 

Запускаем скрипт для сканирования портов

Рис.1. Запуск скрипта.

 

Запускаем скрипт для выполнения сканирования.

 

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

Рис.2. Ввод IP-адреса.

 

Скрипт предлагает ввести IP-адрес, который нужно просканировать.

 

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

Рис.3. Процесс сканирования.

 

В процессе работы скрипт проверяет весь заданный диапазон портов.

 

Результат работы сканера портов

Рис.4. Результат работы сканера.

 

В результате работы сканер выдал список открытых портов, на которых запущены различные службы в Mikrotik Routerboard.

 

Евгений Рудченко специально для ASP24.