розетки - открыть порты, защищенные от огня - PullRequest
1 голос
/ 30 января 2010

Я читал исходный код nmap, потому что мне хотелось бы узнать, как он обнаруживает, что определенные порты фильтруются или блокируются брандмауэром. У меня есть некоторый опыт работы с сокетами в c, и я создал простые сканеры портов, это легко - если соединение установлено успешно, порт открыт, иначе он закрыт (из-за возврата RST). Но в случае портов с брандмауэром они не возвращают RST-пакет обратно, и мой сканер портов просто «ждет» вечно.

Если у кого-то есть опыт работы с этой темой, пожалуйста, укажите мне части кода nmap, где происходит фактическое сканирование и определение состояния порта, или, по крайней мере, скажите, есть ли другие доступные коды, которые решают эту проблему.

1 Ответ

1 голос
/ 30 января 2010

Используйте асинхронные вызовы API сокетов (т.е. не ждите установления соединения, вместо этого попробуйте следующий порт / адрес параллельно) и определите разумное время ожидания (например, если соединение не было установлено через минуту, вы можно считать его отфильтрованным).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...