Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > SOCK_RAW


Автор: SATYR 16.10.2005, 21:39
Народ подскажите можно ли в ActivePerl под Windows работать с Raw-сокетами ? Если можно то пожалуста приведите пример .
И еще вопросец. Для работы с транспортными протоколами (tcp, udp) нужно работать через Raw-сокеты либо как-то по другому?

Автор: sharq 16.10.2005, 23:17
SATYR да можно.
Есть модуль Socket и производный IO::Socket, которые входят в стандартную поставку ActiveState.
Типы сокетов, которые поддерживаются модулем:
Цитата

SOCK_STREAM  A continuous stream of data
SOCK_DGRAM  Individual packets of data
SOCK_RAW  Access to internal protocols and interfaces

Протоколы, которые поддерживает модуль:
Цитата

tcp  Transmission Control Protocol for stream sockets
udp  User Datagram Protocol for datagram sockets
icmp  Internet Control Message Protocol
raw  Creates IP packets manually

Протоколы TCP и UDP непосредственно поддерживаются сокетами в перле, а остальные нет.
Если тебе нужно работать с TCP или UDP, то используй эти модули.
Для работы с протоколами ICMP и raw используют модули Net::ICMP и Net::RawIP соответственно.

Вот тебе пример работы с модулем Net::RawIP из документации:
Код

  use Net::RawIP;
  $a = new Net::RawIP;
  $a->set({ip => {saddr => 'my.target.lan',daddr => 'my.target.lan'},
           tcp => {source => 139,dest => 139,psh => 1, syn => 1}});
  $a->send;
  $a->ethnew("eth0");
  $a->ethset(source => 'my.target.lan',dest =>'my.target.lan');    
  $a->ethsend;
  $p = $a->pcapinit("eth0","dst port 21",1500,30);
  $f = dump_open($p,"/my/home/log");
  loop $p,10,\&dump,$f;


Также есть модули Net::Packet::RAW, Net::Whois::Raw и др.
Можно посмотреть, какие есть еще, на CPAN.

Для установки модулей можешь почитать статью "Установка perl-модулей", скачать http://forum.vingrad.ru/index.php?act=Attach&type=post&id=514481.

smile

Автор: SATYR 17.10.2005, 10:18
[quote]Можно посмотреть, какие есть еще, на CPAN.
Это где ?
Добавлено @ 10:21
Нашел )

Автор: sharq 17.10.2005, 10:37
SATYR ты сильно не замарачивайся с модулями, тебе в полне хватит Socket и IO::Socket.

Что нужно сделать тебе?

smile

Автор: SATYR 17.10.2005, 12:04
Хочу програмно попробоать сформировать tcp пакет

Автор: sharq 17.10.2005, 13:07
SATYR тебе полезна будет книжка Network Programming with Perl By Lincoln D. Stein.

Автор: SATYR 17.10.2005, 13:22
в электронном виде есть где нибудь?

Автор: sharq 17.10.2005, 14:24
SATYR качать http://wlpr.fatal.ru/O'Reilly%20-%20Network%20Programming%20with%20Perl.chm, смотреть http://www.modperl.com/perl_networking/.

smile

Автор: SATYR 17.10.2005, 15:06
sharq, а приведенный выше пример кода для Перл под винду?

Автор: sharq 17.10.2005, 15:10
SATYR perldoc Net::RawIP.

Не заметил,
Цитата
NOTE: Ethernet related methods are implemented on Linux and *BSD only
.

smile

Автор: SATYR 17.10.2005, 15:41
Почитал статейки с описанием примеров работы с RawIP. Это то что мне надо smile , но вопрос в том есть ли какой-нить его эквивалент под винду?

Автор: sharq 17.10.2005, 15:55
Попробуй сам написать smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)