The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"perl net udp"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"perl net udp" 
Сообщение от logka emailИскать по авторуВ закладки(??) on 03-Мрт-05, 19:26  (MSK)
Помогите незнающему плз.

На сервер, по UDP на порт 4000 некий девайс шлет пакеты.
Надо их ловить и парсить.
Парсить - это другая задача.
Но вот как их словить с помощью перла то ?

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

  • perl net udp, Denis Bondar, 19:49 , 03-Мрт-05, (1)  
    • perl net udp, PoizOn, 10:14 , 04-Мрт-05, (2)  
      • perl net udp, logka, 10:53 , 04-Мрт-05, (4)  
    • perl net udp, logka, 10:50 , 04-Мрт-05, (3)  
      • perl net udp, PoizOn, 12:41 , 04-Мрт-05, (5)  
        • perl net udp, logka, 13:35 , 04-Мрт-05, (6)  

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "perl net udp" 
Сообщение от Denis Bondar Искать по авторуВ закладки on 03-Мрт-05, 19:49  (MSK)
как вариант - поднять UDP сервер
http://or.bondarin.com/books/perl2/cookbook/ch17_06.htm
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "perl net udp" 
Сообщение от PoizOn emailИскать по авторуВ закладки(??) on 04-Мрт-05, 10:14  (MSK)
>как вариант - поднять UDP сервер
>http://or.bondarin.com/books/perl2/cookbook/ch17_06.htm
Если он поднимет сервер на 4000 порту, то тогда сервер которому будут слать пакеты просто не сможет работать. В общем - поднять сервер без смены рабочих портов не получиться (то есть придеться рабочий сервер перевесить на другой порт, пакеты поступающие на 4000 порт отлавиливать сервером на Perl а потом пересылать их (после парсинга) уже на родной сервер);

Либо можно воспользоваться модулем Net::Pcap (http://search.cpan.org/~kcarnut/Net-Pcap-0.05/)
и статьей http://www.hackinglinuxexposed.com/articles/20030730.html и написать свой простенький сниффер пакетов.

В общем, вариантов как видите как всегда несколько.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "perl net udp" 
Сообщение от logka Искать по авторуВ закладки(??) on 04-Мрт-05, 10:53  (MSK)
>>как вариант - поднять UDP сервер
>>http://or.bondarin.com/books/perl2/cookbook/ch17_06.htm
>Если он поднимет сервер на 4000 порту, то тогда сервер которому будут
>слать пакеты просто не сможет работать. В общем - поднять сервер
>без смены рабочих портов не получиться (то есть придеться рабочий сервер
>перевесить на другой порт, пакеты поступающие на 4000 порт отлавиливать сервером
>на Perl а потом пересылать их (после парсинга) уже на родной
>сервер);

Да нет, порт 4000 какбы свободен. Туда шлет пинговалка такие вот пакеты, которые и надо просто суметь нормально прочитать.

>Либо можно воспользоваться модулем Net::Pcap (http://search.cpan.org/~kcarnut/Net-Pcap-0.05/)
>и статьей http://www.hackinglinuxexposed.com/articles/20030730.html и написать свой простенький сниффер пакетов.

Уже читаю %)

>
>В общем, вариантов как видите как всегда несколько.

Можно еще брать вывод tcpdump, но помоему то не правильно...

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "perl net udp" 
Сообщение от logka Искать по авторуВ закладки(??) on 04-Мрт-05, 10:50  (MSK)
>как вариант - поднять UDP сервер
>http://or.bondarin.com/books/perl2/cookbook/ch17_06.htm

Написал по этой доке ...
Вот такое вот

#!/usr/bin/perl -w

use strict;
use IO::Socket;
my($sock, $oldmsg, $newmsg, $hisaddr, $hishost, $MAXLEN, $PORTNO);
$MAXLEN = 1024;
$PORTNO = 4000;
$sock= IO::Socket::INET->new(LocalPort=>$PORTNO, Proto=>'udp') or die "socket: $@";
print "Awaiting UDP messages on port $PORTNO\n";
$oldmsg = "This is the starting message.";

while ($sock->recv($newmsg, $MAXLEN)){

print "Client said\t $newmsg\n";


Результатом получается вот такое

Awaiting UDP messages on port 4000
Client said     ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ
°▒хёхКSBk│*xюС▌┤aгUнQ┴iЧ≥-&бr3^ЭкГT
Client said     ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ
°▒хёхКSBk│*xюС▌┤aгUнQ┴iЧ≥-&бr3^ЭкГT

Такое чувство , что это и есть пакет (точнее 2 пакета) ... только как его еще и прочитать ?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "perl net udp" 
Сообщение от PoizOn emailИскать по авторуВ закладки(??) on 04-Мрт-05, 12:41  (MSK)
>
>Результатом получается вот такое
>
>Awaiting UDP messages on port 4000
>Client said     ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ
>°▒хёхКSBk│*xюС▌┤aгUнQ┴iЧ≥-&бr3^ЭкГT
>Client said     ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ
>°▒хёхКSBk│*xюС▌┤aгUнQ┴iЧ≥-&бr3^ЭкГT
>
>Такое чувство , что это и есть пакет (точнее 2 пакета) ...
>только как его еще и прочитать ?
попробуйте вот так вот:
#!/usr/bin/perl -w

use strict;
use IO::Socket;
my($sock, $oldmsg, $newmsg, $hisaddr, $hishost, $MAXLEN, $PORTNO);
$MAXLEN = 1024;
$PORTNO = 4000;
$sock= IO::Socket::INET->new(LocalPort=>$PORTNO, Proto=>'udp') or die "socket: $@";
print "Awaiting UDP messages on port $PORTNO\n";
$oldmsg = "This is the starting message.";

while ($sock->recv($newmsg, $MAXLEN)){

$newmsg=unpack('H4',$newmsg);
print "Client said\t $newmsg\n";

}

хотя я точно не помню - а проверить щас не могу. просто распакуйте ответ через unpack.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "perl net udp" 
Сообщение от logka emailИскать по авторуВ закладки(??) on 04-Мрт-05, 13:35  (MSK)
>>
>>Результатом получается вот такое
>>
>>Awaiting UDP messages on port 4000
>>Client said     ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ
>>°▒хёхКSBk│*xюС▌┤aгUнQ┴iЧ≥-&бr3^ЭкГT
>>Client said     ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ
>>°▒хёхКSBk│*xюС▌┤aгUнQ┴iЧ≥-&бr3^ЭкГT
>>
>>Такое чувство , что это и есть пакет (точнее 2 пакета) ...
>>только как его еще и прочитать ?
>попробуйте вот так вот:
>#!/usr/bin/perl -w
>
>use strict;
>use IO::Socket;
>my($sock, $oldmsg, $newmsg, $hisaddr, $hishost, $MAXLEN, $PORTNO);
>$MAXLEN = 1024;
>$PORTNO = 4000;
>$sock= IO::Socket::INET->new(LocalPort=>$PORTNO, Proto=>'udp') or die "socket: $@";
>print "Awaiting UDP messages on port $PORTNO\n";
>$oldmsg = "This is the starting message.";
>
>while ($sock->recv($newmsg, $MAXLEN)){
>
>$newmsg=unpack('H4',$newmsg);
>print "Client said\t $newmsg\n";
>
>}
>
>хотя я точно не помню - а проверить щас не могу. просто
>распакуйте ответ через unpack.


Помогло!!! Спасибо!!!

Осталось еще смотреть от кого меседж, но это я сам, так интересней ;)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру