Невозможно узнать, какие порты открыты без ведома удаленного компьютера. Но вы можете определить информацию, не запуская программу на порту, зная ее (то есть без вмешательства в программу).
Использовать SYN-сканирование:
Для установления соединения TCP использует трехстороннее рукопожатие. Это можно использовать, чтобы узнать, открыт порт или нет, без ведома программы.
Рукопожатие работает следующим образом:
- Клиент выполняет активное открытие, отправляя SYN на сервер.
- Сервер отвечает SYN-ACK.
- Обычно клиент отправляет ACK обратно на сервер. Но этот шаг пропущен.
SYN сканирование является наиболее популярной формой
TCP сканирование. Вместо того, чтобы использовать
сетевые функции операционной системы,
сканер портов генерирует необработанный IP
сам пакеты и контролирует
ответы. Этот тип сканирования также
известный как "полуоткрытое сканирование", потому что
на самом деле он никогда не открывает полный TCP
подключение. Сканер портов генерирует
пакет SYN. Если целевой порт
откройте, он ответит SYN-ACK
пакет. Хост сканера отвечает
пакет RST, закрывающий соединение
до завершения рукопожатия.
Использование сырых сетей имеет несколько
преимущества, давая сканеру полный
контроль отправленных пакетов и
время ожидания ответа и разрешение
подробный отчет об ответах.
Существует спор о том, какое сканирование
менее навязчив на целевом хосте. SYN
сканирование имеет то преимущество, что
отдельные услуги на самом деле никогда
получить соединение в то время как некоторые
службы могут быть разбиты с подключением
сканирования. Тем не менее, RST во время
рукопожатие может вызвать проблемы для некоторых
сетевые стеки, особенно простые
устройства, такие как принтеры. Нет
убедительные аргументы в любом случае.
Источник Википедия
Как упомянуто ниже, я думаю, что nmap может выполнять сканирование SYN.
Использование сокетов для сканирования портов TCP:
Один из способов определить, какие порты открыты, - открыть сокет для этого порта. Или в другой порт, который находит информацию для вас, как вы упомянули.
Например, из командной строки или терминала:
telnet google.com 80
UDP-сканирование портов:
если пакет UDP отправляется на порт, который не открыт, система ответит сообщением о недоступности порта ICMP. Вы можете использовать этот метод, чтобы определить, открыт порт или закрыт. Но принимающая программа узнает.