Перл автомтом переводит численные значения в сетевой вид ?
Это собственно вопрос.
Если нет, то тебе стоит вызвать С аналог ф-ии htons для порта. Иначе ты пытаешся законнестится непонятно к чему.
Теперь по поводу сервисов. Самый тупой и простой способ - список ;) Ты знаешь что на таком то порту такой то сервис... хехе... в большинстве случаев прокатит. Если нужна большая точность - попытайся с ними "поговорить" (и послушать ответ). Других методов нет.
Кстати твой метод сканирования конечно самый простой, но обладает как минимум двумя хорошими недостатками:
1. Очень медленный.
2. Ты светишся как неоновая лампочка в ночи.
Похорошему, сканер надо писать на raw сокетах, генерируя "хитрые" пакеты вручную. О таких методах есть много статей, если память не изменяет, то и на этом сайте.
Здравствуйте! У меня возникли проблемы, связанные с разработкой сканера портов на perl (исходный код ниже). Итак, проблема первая: сканер не находит все открытые на компьютере порты. Из трех открытых tcp-портов (smtp - 25, sunrpc - 111, X11 - 6000) он находит только один (smtp - 25). nmap (простым сканированием) нашел все три. Почему? Проблема вторая: не проблема, а вопрос. Как сделать так, чтобы мой сканер мог определять какой сервис находится на данном порту? Это были все вопросы. Принцип работы сканера таков: пользователь вводит имя хоста и порты для сканирования. Скрипт обрабатывает данные и начинает конектиться на все указанные порты. Есть коннект - порт открыт, нет - закрыт. Исходник:
#!/usr/bin/perl -w
use Socket;
print "Enter Host name:\n";
$host = <>;
print "Enter ports for TCP-scanning:\n";
$port = <>;
@ports = split(" ", $port);
socket (SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$iaddr = inet_aton($host);
for ($i = 0; $i <= $#ports; $i++)
{
$paddr = sockaddr_in($ports[$i], $iaddr);
$connect = connect(SOCK, $paddr); if ($connect)
{$ports[$i] = "$ports[$i] - open\n"}
else
{$ports[$i] = "$ports[$i] - close\n"
}
}
for ($i = 0; $i <= $#ports; $i++) { print "$ports[$i]\n"; }
print "Press Any Key To Exit";
<>;
Перл автомтом переводит численные значения в сетевой вид ?
Это собственно вопрос.
Если нет, то тебе стоит вызвать С аналог ф-ии htons для порта. Иначе ты пытаешся законнестится непонятно к чему.
Теперь по поводу сервисов. Самый тупой и простой способ - список ;) Ты знаешь что на таком то порту такой то сервис... хехе... в большинстве случаев прокатит. Если нужна большая точность - попытайся с ними "поговорить" (и послушать ответ). Других методов нет.
Кстати твой метод сканирования конечно самый простой, но обладает как минимум двумя хорошими недостатками:
1. Очень медленный.
2. Ты светишся как неоновая лампочка в ночи.
Похорошему, сканер надо писать на raw сокетах, генерируя "хитрые" пакеты вручную. О таких методах есть много статей, если память не изменяет, то и на этом сайте.
[Perl] Новые вопросы12.05.03 17:26 Автор: loki Статус: Незарегистрированный пользователь
Спасибо за ответы! Тут у меня правда новые вопросы возникли:
>Перл автомтом переводит численные значения в сетевой вид ?
Вообще-то я думал, что да=)) Это значит, что мой скрипт не
работает?=((
>Если нет, то тебе стоит вызвать С аналог ф-ии htons для порта.
Это вот так что ли:
>Кстати твой метод сканирования конечно самый простой, но
>обладает как минимум двумя хорошими недостатками:
>1. Очень медленный.
>2. Ты светишся как неоновая лампочка в ночи.
Не совсем понимаю термин "шороший недостаток"=)) и тем не менее
можно ли этих недостатков избежать не используя raw сокеты? Если
да, то как?
И ещё вопрос: кроме указанной ошибки вы не заметили других багов,
недочетов, лишних строк кода и т.п?
Если вас не затруднит, ответьте, буду вам очень признателен!!!
з.ы.
>О таких методах есть много статей, если память не изменяет, то и
>на этом сайте.
На этом сайте не нашел!!! У вас линка случайно не найдется?
[Perl] Новые вопросы14.05.03 23:09 Автор: izlam Статус: Незарегистрированный пользователь
Если уж юзаешь Socket, perldoc по нему сильно поможет :)
> >1. Очень медленный. > >2. Ты светишся как неоновая лампочка в ночи. > Не совсем понимаю термин "шороший недостаток"=)) и тем не > менее > можно ли этих недостатков избежать не используя raw сокеты? raw сокеты помогут в случае с 2. В 1-м же случае видимо имелся ввиду неблокирующий IO, или fork-и, читай perldoc -f select perldoc -f fork
> Если да, то как? Гляди perldoc Net::RawIP (только поставь его сначала)