| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Сканирование портов |
| Автор: MaXL 10.11.2005, 16:25 |
| Всех приветсвую! Пожалуйста кто знает быстрые алгоритмы сканирования портов, желательно на Делфи, а то мне очень надо :-((, я знаю, только он очень медленный, ну или хотябы дайте какой-нибуть совет. |
| Автор: ne0n 10.11.2005, 20:57 |
| Знаеш такую книжку "программирование Делфи глазами ][акера"? |
| Автор: MaXL 10.11.2005, 22:20 |
| Знаю, там есть алгоритм, но он вроде не очень быстрый |
| Автор: ne0n 11.11.2005, 21:30 | ||
| Если не ошибаюсь автор приводит два варианта сканера портов, один простой, а второй цитирую автора:
если его исходник нужен то дам. |
| Автор: anikss 12.11.2005, 02:39 |
| И я туда же! Подскажите пожалуйста, нужно просканировать один порт, но тоже желательно быстро. И еще хотелось бы, чтобы сервер, висящий на этом порту, не заметил соединения, а то я еще не научился с ServerSocket такую вещь, как обработка потери соединения, проделывать... Спасибо заранее! |
| Автор: MaXL 12.11.2005, 18:21 |
| У меня есть эта книжка, в исходинике разобрался, ну по моим проверкам этот алгоритм сканирует 30000 портов ~17-19 минут, если ожидать 1 секунду(если ты разбирался в исходнике, то поймёшь), так вот скажите это нормально? |
| Автор: MIX55 13.11.2005, 13:58 |
| Используй библиотеку WinSock |
| Автор: Quadr0 13.11.2005, 14:08 |
| ... |
| Автор: ne0n 13.11.2005, 16:17 | ||
Quadr0 уже отвеьтил |
| Автор: MaXL 14.11.2005, 05:14 |
| Конечно нет, мне это нужных просто для интереса, может потом и пригадится, только не для кулхакерских :-) |
| Автор: RA 16.11.2005, 18:47 |
| Сканируй через несколько потоков. http://forum.vingrad.ru/index.php?showtopic=25310&view=findpost&p=178511 |
| Автор: bartram 16.11.2005, 23:01 | ||
Кинь исходник пожалуйста, если не жалко |
| Автор: MaXL 21.11.2005, 10:23 | ||
Ты реально пробовал такой пример? если можешь скажи насколько выигрывается в скоростью? и нак сколько больше загружает в систему, я уже думал насчёт потокового сканирования, но потом забил на это, т.к. приблезительно посчитал, что выигрышь быдут очень маленький. |
| Автор: RA 21.11.2005, 16:06 |
| MaXL Скорость сканирования портов по большому счёту зависит не от кода, а от тайм-аута установленного для каждого порта, тоесть если сканировать с таймаутом 20ms, то сканировать ты будешь очень быстро, но есть риск потерять несколько активных портов, сканировать с тайм-аутом в 2000ms очень надёжно но и очень долго. Для локальных сетей 20 ms в полне достаточно, а иначе таймаут по пингу. Сканируя в два потока ты просканируешь диапазон портов за половину времени сканирования в один поток, сканируя в 12 потоков ты просканируешь всё в 12 раз быстрее. и тд. Многопотоковое сканирование может вызвать тормоза в системе, сам решай что выгодней 20 минут тормозов или 4 часа сканирования. Очень многие сканнеры портов имеют настраиваемый тайм-аут, и кол-во потоков, таким орбразом опытный юзер сам выбирает между скоростью и производительностью. |
| Автор: MaXL 22.11.2005, 06:59 |
| Скорее всего так и сделю, чтоб можно было выбирать сколько потоков использовать 1 или несколько, спасибо за идею |
| Автор: Dmitry05 22.11.2005, 09:32 |
| мне кажется автор в этой книше допустил ошибку... IP-адрес в окне(InputQuery) мы ввели, а вот присвоить TcpClient-у его не присвоили... или я ошибаюсь? |
| Автор: MaXL 22.11.2005, 12:22 | ||
В какой книге ты имеешь? ввиду, и если в той, о которой говорилось выше, то в каком именно примере, нужно посмотреть |
| Автор: Dmitry05 22.11.2005, 14:58 |
| книга: Delphi глазами хакера. а пример 4.3 Сканер портов |
| Автор: ne0n 22.11.2005, 22:06 | ||
Конечно не жалко!!! давай мыло!!! |
| Автор: bartram 23.11.2005, 23:28 |
| [quote=ne0n, 22.11.2005, 22:06]Конечно не жалко!!! давай мыло!!![/quot ne0n, bartram[at]narod.ru |
| Автор: MaXL 24.11.2005, 02:50 | ||
Да кстате, но я на там примере сильно не сидел, вот который в главе 5.2.1 (Самый быстрый сканер портов), вот ое поинтересней. Но а про этот пример что там мешает после того как он спросил IP адрес(прога), присвоить значение в Host TcpClient |