|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.12.2010, 00:21 | #1 |
Регистрация: 07.05.2010
Сообщений: 9
|
UDP сканер портов под Linux
Всем доброго вечера!
Возникла потребность в написании UDP-сканера на C++ под линухой. Вот что я нашел по этой теме Сканирование UDP-портов проверкой ICMP-сообщения "Порт недоступен" Большинство серверов в ответ на пакет, прибывший на закрытый UDP-порт, отправляют ICMP-сообщение "Порт недоступен" (Port Unreachable - PU). Таким образом, если в ответ на UDP-пакет пришло ICMP-сообщение PU, то сканируемый порт является закрытым, в противном случае (при отсутствии PU) порт открыт. Поскольку нет гарантии, что запросы от хоста дойдут до сервера, пользователь должен позаботиться о повторной передаче UDP-пакета, который, по всей видимости, оказался потерянным. Сканирование UDP-портов с использованием функций recvfrom() и write() Этот метод используется в случае, когда пользователь, проводящий сканирование, не обладает статусом Root на хосте. Поскольку не-root пользователь не может "читать" ICMP-сообщение PU, в ОС, поддерживающих механизм сокетов (например в Linux), имеется возможность получения информации о состоянии UDP-порта косвенным способом. Так, например, попытка вызова функции write() на закрытый порт обычно приводит к возникновению ошибки. Функция recvfrom() в этом плане более информативна. Вызов ее на неблокированный UDP-сокет сервера обычно возвращает ошибку EAGAIN (Try Again - "попытайтесь еще раз", код 13) в случае, когда ICMP-сообщение не было принято, и ECONREFUSED (Connection Refused - "соединение закрыто", код 111), если ICMP-сообщение было принято. Таким образом, по этим признакам также возможно определить состояние портов сканируемого сервера. Вот что я написал: Код:
P.S. компилиться командой cc -Wall -O2 -o client client.c. выболняется ./client. Все это делается не из под рута Последний раз редактировалось vizir1989; 07.12.2010 в 00:26. Причина: дополнительные данные |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сканер портов | Bat{CMD}_Men | Операционные системы общие вопросы | 1 | 28.08.2010 12:29 |
Сканер портов | OPF_Nik | Помощь студентам | 5 | 03.02.2010 18:07 |
Сканер портов | OPF_Nik | Работа с сетью в Delphi | 2 | 29.01.2010 19:26 |
Сканер портов | One.Love | Работа с сетью в Delphi | 4 | 18.02.2008 16:05 |