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

Python в ИБ. Часть 9. Сканер портов на Python

Python в ИБ. Часть 9. Сканер портов на Python

Cегодня мы создадим простой сканер портов. Тема достаточно заезженная, но это не повод обходить её стороной, тем более, есть шанс, что кто-то хочет попробовать сделать всё своими силами.

Для простоты понимания наш сканер будет достаточно простой и претендовать на функционал nmap’a он, конечно, не будет.

Напишем простой сканер TCP-портов с выбором диапазона или отдельного порта.

Для реализации нам понадобится несколько базовых библиотек, ничего дополнительно устанавливать не надо.

Библиотека argparse позволит нам удобнее обрабатывать передаваемые аргументы.

Далее заведём отдельный словарь для хранения проверенных портов, а также напишем функцию парсинга параметра “порт”, передаваемого через командную строку.

После сделаем функцию, для создание нашего парсера аргументов.

Создаётся объект класса ArgumentParser, в который с помощью метода add_argument устанавливаются различные аргументы и их настройки. Использование данной библиотеке облегчает создание Usage записей и в целом придаёт скрипту небольшой интерфейс, теперь при неверном запуске будет выдаваться примерно следующее сообщение.

Сообщение достаточно информативное и в нём отображаются используемые ключи для запуска, которые и были добавлены через метод add_argument.

Далее создаём основную функцию и прописываем ей весь остальной необходимый функционал.

ратко пробежимся по основным моментам, которые могут быть непонятны.

Можно сканировать как один порт, так и диапазон (показано на примере в первой команде)

Это только небольшая функциональная основа, на которую мы будем нанизывать новые функции и расширять его. В следующем уроке попробуем добавить многопоточность, для ускорения работы сканера.

Оставайтесь с нами…

Очень злой админ
Очень злой админ Автор статьи

Админ сайта. Публикует интересные статьи с других ресурсов, либо их переводы. Если есть настроение, бывает, что пишет и что-то своё.

Leave a Reply

Your email address will not be published. Required fields are marked *