Задание № 3 для курса "Протоколы Интернета"
Автор: Соломеин Илья кн-202
Программа на указанном хосте проверяет какие порты открыты. Определяет TCP или UDP это порт. Для каждого открытого порта пытается определить протокол, который на нём работает. Программа умеет определяеть следующие протоколы:
- http;
- sntp:
- smtp;
- pop3;
- dns;
При проверке портов на удалённом хосте могут возникнуть проблемы с определением открытости UDP.
Программа работает многопоточно. Учитывая особености python (GIL), то прироста в скорости нет, так как программа хоть и работает многопоточно, но python позволяет только одному потоку выполняться в один момент.
Ввести в консоль:
python checker.py start_port end_port domainstart_port - порт, с которого начнётся скан end_port - порнт, на котором закончится скан domain - хост, на котором сканятся порты
- На локальном хосте мной с помощью сокетов открыт один UDP и один TCP порт на 143 и 144 порту соотвественно.
Команда:
python checker.py 100 200 localhostВывод:
Начался скан TCP
Начался скан UDP
Скан UDP закончился. Прошло: 0:00:00.445613
Скан TCP закончился. Прошло: 0:00:11.673898
Начата проверка протоколов на TCP портах
Начата проверка протоколов на UDP портах
Закончена проверка протоколов на UDP. Прошло: 0:00:02.009329
Закончена проверка протоколов на TCP. Прошло: 0:00:04.522605
Открыт TCP порт 135. Узнать протокол не удалось
Открыт TCP порт 143. Узнать протокол не удалось
Открыт UDP порт 144. Узнать протокол не удалосьФото из netstat -a
- На 8000 порту поднят http сервер.
Вывод программы:
Начался скан TCP
Начался скан UDP
Скан UDP закончился. Прошло: 0:00:00.023016
Скан TCP закончился. Прошло: 0:00:00.223160
Начата проверка протоколов на TCP портах
Начата проверка протоколов на UDP портах
Закончена проверка протоколов на UDP. Прошло: 0:00:00
Закончена проверка протоколов на TCP. Прошло: 0:00:00.141773
Открыт TCP порт 8000. Протокол: HTTP- Проверяем, как работает определение протоколов на удалённых хостах
Смотрим на smtp.yandex.ru
Вывод программы:
(venv) C:\Users\Yosa Rem\PycharmProjects\task3>python checker.py 10 30 smtp.yandex.ru
Начался скан TCP
Начался скан UDP
Скан TCP закончился. Прошло: 0:00:04.048807
Скан UDP закончился. Прошло: 0:00:04.223979
Начата проверка протоколов на TCP портах
Начата проверка протоколов на UDP портах
Закончена проверка протоколов на UDP. Прошло: 0:00:00
Закончена проверка протоколов на TCP. Прошло: 0:00:00.312275
Открыт TCP порт 25. Протокол: SMTPСмотрим на pop.yandex.ru
Вывод программы:
(venv) C:\Users\Yosa Rem\PycharmProjects\task3>python checker.py 100 130 pop.yandex.ru
Начался скан TCP
Начался скан UDP
Скан TCP закончился. Прошло: 0:00:06.086284
Скан UDP закончился. Прошло: 0:00:06.251488
Начата проверка протоколов на TCP портах
Начата проверка протоколов на UDP портах
Закончена проверка протоколов на UDP. Прошло: 0:00:00
Закончена проверка протоколов на TCP. Прошло: 0:00:00.138163
Открыт TCP порт 110. Протокол: POP3Смотрим сервер точного времени. В команде введён специальный ключ, который не смотря на проверку открытости порта, пытается определить протокол.
(venv) C:\Users\Yosa Rem\PycharmProjects\task3>python checker.py 123 123 pool.ntp.org --hard=True
Начата проверка протоколов на UDP портах
Закончена проверка протоколов на UDP. Прошло: 0:00:00.629286
Открые UDP порт 123. Протокол: NTPСмотрим DNS resolver от google
python checker.py 53 53 8.8.8.8 --hard=True
Начата проверка протоколов на UDP портах
Закончена проверка протоколов на UDP. Прошло: 0:00:00.046049
Открыт UDP порт 53. Протокол: DNS