Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ICMP и Perl 
:(
    Опции темы
mcsseifer
Дата 5.1.2007, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 1.11.2006

Репутация: нет
Всего: нет




  Хочу написать свой ipfw на Perl. Хочется знать вот что:
1. Как слушать все порты (или диапазон), наилучшая реализация?
2. Как поймать ICMP и сгенерировать ICMP.
PM MAIL   Вверх
Nab
Дата 6.1.2007, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 3
Всего: 37



Я не знаю что Вы подразумеваете под ipfw, но если это файрвол, то  я не пойму, Вы что собралиь писать модуль ядра на перле?

В противном случае насколько я знаю, можно слушать все проходящие пакеты, но не фильтровать их...

1. посмотрите на Net::Pcap.

2. А что поиском пользоваться не умеем?
http://search.cpan.org/search?query=ICMP&mode=all




--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
ZeeLax
Дата 6.1.2007, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 1
Всего: 88



mcsseifer, ipfw это всего лишь интерфейс управления ядром.


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
mcsseifer
Дата 6.1.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 1.11.2006

Репутация: нет
Всего: нет



Объясню проще.
 1. Мне надо фильтровать пакеты до их поступления на прикладной уровень. О сущности написания модуля ядра на perl smile))!!!!..
 2. Оч. необходимо генерировать ICMP и анализировать приходящие от других хостов ICMP. 

 Собственно что мне надо?? Мне надо ссылку на хорошую инфу (если есть). Можно так же инфу по программированию RAW сокетов на perl.

Добавлено @ 14:41 

  На CPAN посмотрю конечно. Просто если где-то есть ещё инфа был бы очень рад. Спасибо за ответыsmile
PM MAIL   Вверх
gcc
Дата 9.4.2010, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



есть проблема, добаление ip в таблицу ipfw очень медленно и ресурсоемко

есть информация, что через python perl будет очень быстро

я вот нашел исходники http://bitbucket.org/hizel/py-ipfw/changeset/434dd0bc3cb7/

Код


static PyObject *
ipfw_table_add(PyObject *self, PyObject *args)
{
    int table,mask=32,value=0;
    char *ip_str;
    int i,s=-1;
    ipfw_table_entry ent;

    if (!PyArg_ParseTuple(args,"is|ii",&table,&ip_str,&mask,&value))
        return NULL;
    // Table add entry
    if(table<MIN_TABLE){ 
        PyErr_SetString(IPFWError, "m..");
        return NULL;
    }

    ent.value = value;
    ent.tbl = table;
    ent.masklen = mask;
    if(!inet_aton(ip_str, (struct in_addr*)&ent.addr)){
        PyErr_SetString(IPFWError, "ip address bad");
        return NULL;
    }
    s=socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
    if(s<0){ 
        PyErr_SetString(IPFWError, "socket fail");
        return NULL;
    }
    i = setsockopt(s, IPPROTO_IP, IP_FW_TABLE_ADD, &ent, sizeof(ent));
    if(i && errno != EEXIST){ // Allow add existent entry
        PyErr_SetString(IPFWError, "setsocket fail");
        close(s);
        return NULL;
    }
    close(s);

    Py_INCREF(Py_None);
    return Py_None;
}




нашел еще подобные примеры  Raw & Packet Sockets in PERL

пытаюсь сделать:
Код

    #!/usr/local/bin/perl

    use Socket;
    use constant IPPROTO_RAW => 255;


    socket( SOCKET,AF_INET, SOCK_RAW, IPPROTO_RAW ) or die "Can't open raw socket: $!\n";


    setsockopt(SOCKET, IPPROTO_IP, IP_FW_TABLE_ADD, 1) or die "Can't send packet: $!\n";



выводит
Код

./perl2.pl
Can't send packet: Protocol not available



как записать эту функцию ipfw_table_add(PyObject *self, PyObject *args) ??
там данные ip и номер таблицы(ipfw) нужно как-то запаковать после IP_FW_TABLE_ADD, ?

а что такое, вот это &ent, sizeof(ent)); ? с       i = setsockopt(s, IPPROTO_IP, IP_FW_TABLE_ADD, &ent, sizeof(ent));

====

http://search.cpan.org/~dapm/perl-5.10.1/p...lipc.pod#___top
тут написана функция pack в конце параметра
Код

    setsockopt(Server, SOL_SOCKET, SO_REUSEADDR,
                                        pack("l", 1))   || die "setsockopt: $!";



 но что ей нужно передать, что такое  &ent, sizeof(ent));  ??

Это сообщение отредактировал(а) gcc - 9.4.2010, 14:09
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0962 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.