Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не ловятся пакеты 
:(
    Опции темы
Maledictus
Дата 7.4.2010, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 7.9.2008
Где: Республика Белару сь, Борисов

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



Мое почтение. Пишу свой анализатор сетевого трафика. Столкнулся с такой проблемой. При запуске на интерфейс ppp0 выдает:

Код

gentoo_2010 build # ./ltatu -i ppp0
Packet #1 (1420 bytes read)
==ETHERNET_HEADER============================
MAC destination       :40:00:6c:06:76:36
MAC source            :45:00:05:8c:8e:f1
Packet type ID field  :0xd95d
Packet #2 (64 bytes read)
==ETHERNET_HEADER============================
MAC destination       :40:00:40:06:fd:ca
MAC source            :45:00:00:40:38:a9
Packet type ID field  :0xae7
Packet #3 (1408 bytes read)
==ETHERNET_HEADER============================
MAC destination       :40:00:6c:06:76:41
MAC source            :45:00:05:80:8e:f2
Packet type ID field  :0xd95d


и далее в том же духе.

Вот код, который формирует это вывод:
Код

    struct ethhdr   eth;
    struct iphdr    *ip;

    memcpy ((char *) &eth, buf, sizeof(struct ethhdr));

    printf("==ETHERNET_HEADER============================\n");
    printf("MAC destination       ");
    printf(":%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", eth.h_source[0], 
             eth.h_source[1], eth.h_source[2], eth.h_source[3], 
             eth.h_source[4], eth.h_source[5]);
 
    printf("MAC source            ");
    printf(":%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", eth.h_dest[0], 
            eth.h_dest[1], eth.h_dest[2], eth.h_dest[3], 
            eth.h_dest[4], eth.h_dest[5]);

    printf("Packet type ID field  :%#x\n", ntohs(eth.h_proto));

    if (ntohs(eth.h_proto) == ETH_P_IP){
        ip = (struct iphdr *)(buf + sizeof(struct ethhdr));
        struct in_addr addr;
        
        printf("==IP_HEADER==================================\n");
        printf("IP version            :%d\n", ip->version);
        printf("IP header length      :%d\n", ip->ihl);
        printf("TOS                   :%d\n", ip->tos);
        printf("Total length          :%d\n", ntohs(ip->tot_len));
        printf("ID                    :%d\n", ntohs(ip->id));
        printf("Fragment offset       :%#x\n", ntohs(ip->frag_off));
        printf("MF                    :%d\n", ntohs(ip->frag_off)&IP_MF?1:0);
        printf("DF                    :%d\n", ntohs(ip->frag_off)&IP_DF?1:0);
        printf("TTL                   :%d\n", ip->ttl);
        printf("Protocol              :%d\n", ip->protocol);
        addr.s_addr = ip->saddr;
        printf("IP source             :%s\n", inet_ntoa(addr));
        addr.s_addr = ip->daddr;
        printf("IP destination        :%s\n", inet_ntoa(addr));
        }


если запустить на интерфейс eth1, который просто пингую с этого же компа, то вывод следующий:
Код

Packet #1 (98 bytes read)
==ETHERNET_HEADER============================
MAC destination       :00:00:00:00:00:00
MAC source            :00:00:00:00:00:00
Packet type ID field  :0x800
==IP_HEADER==================================
IP version            :4
IP header length      :5
TOS                   :0
Total length          :84
ID                    :0
Fragment offset       :0x4000
MF                    :0
DF                    :1
TTL                   :64
Protocol              :1
IP source             :192.168.1.123
IP destination        :192.168.1.123
Packet #2 (98 bytes read)
==ETHERNET_HEADER============================
MAC destination       :00:00:00:00:00:00
MAC source            :00:00:00:00:00:00
Packet type ID field  :0x800
==IP_HEADER==================================
IP version            :4
IP header length      :5
TOS                   :0
Total length          :84
ID                    :0
Fragment offset       :0x4000
MF                    :0
DF                    :1
TTL                   :64
Protocol              :1
IP source             :192.168.1.123
IP destination        :192.168.1.123
Packet #3 (98 bytes read)
==ETHERNET_HEADER============================
MAC destination       :00:00:00:00:00:00
MAC source            :00:00:00:00:00:00
Packet type ID field  :0x800
==IP_HEADER==================================
IP version            :4
IP header length      :5
TOS                   :0
Total length          :84
ID                    :37776
Fragment offset       :0
MF                    :0
DF                    :0
TTL                   :64
Protocol              :1
IP source             :192.168.1.123
IP destination        :192.168.1.123


Объясните пожалуйста почему в первом случае не хочет ловить ip, а во втором все отлично?
Заранее благодарю.
PM MAIL ICQ Jabber   Вверх
xvr
Дата 8.4.2010, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Судя по дампу заголовка у вас в первом случае лезет какой то бред  smile Попробуйте посмотреть что там на самом деле (через libpcap например)

PM MAIL   Вверх
MAKCim
Дата 8.4.2010, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



100% ошибка у вас, но по данной вами информации определенно что-то сказать не получится


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Maledictus
Дата 8.4.2010, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 7.9.2008
Где: Республика Белару сь, Борисов

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



2 xvr: на самом деле там все нормально должно идти, потому что проверял wireshark'ом.
2 MAKCim: Вы скажит, плз, что еще надо выложить, что бы решить эту проблем
PM MAIL ICQ Jabber   Вверх
MAKCim
Дата 8.4.2010, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Maledictus, 
хотя подождите
если в первом случае юзается ppp0, то вполне возможно никакого ethernet заголовка и нет (если не юзается PPPoE)


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
djamshud
Дата 8.4.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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





--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Maledictus
Дата 8.4.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 7.9.2008
Где: Республика Белару сь, Борисов

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



Используется 3G модем. И скорее всего Вы правы. Попробую сделать перехват ppp и проверить.
И еще один маленький вопрс: у меня как-то не в том порядке выводятся пакеты:
Код

==ETHERNET_HEADER============================
MAC destination       :00:00:00:00:00:00
MAC source            :00:00:00:00:00:00
Packet type ID field  :0x800
==IP_HEADER==================================
IP version            :4
IP header length      :5
TOS                   :0
Total length          :84
ID                    :0
Fragment offset       :0x4000
MF                    :0
DF                    :1
TTL                   :64
Protocol              :1
IP source             :192.168.1.123
IP destination        :192.168.1.123
==ICMP_HEADER================================
Packet type           :Echo Request
#############################################
==ETHERNET_HEADER============================
MAC destination       :00:00:00:00:00:00
MAC source            :00:00:00:00:00:00
Packet type ID field  :0x800
==IP_HEADER==================================
IP version            :4
IP header length      :5
TOS                   :0
Total length          :84
ID                    :0
Fragment offset       :0x4000
MF                    :0
DF                    :1
TTL                   :64
Protocol              :1
IP source             :192.168.1.123
IP destination        :192.168.1.123
==ICMP_HEADER================================
Packet type           :Echo Request
#############################################
==ETHERNET_HEADER============================
MAC destination       :00:00:00:00:00:00
MAC source            :00:00:00:00:00:00
Packet type ID field  :0x800
==IP_HEADER==================================
IP version            :4
IP header length      :5
TOS                   :0
Total length          :84
ID                    :23877
Fragment offset       :0
MF                    :0
DF                    :0
TTL                   :64
Protocol              :1
IP source             :192.168.1.123
IP destination        :192.168.1.123
==ICMP_HEADER================================
Packet type           :Echo Reply
#############################################
==ETHERNET_HEADER============================
MAC destination       :00:00:00:00:00:00
MAC source            :00:00:00:00:00:00
Packet type ID field  :0x800
==IP_HEADER==================================
IP version            :4
IP header length      :5
TOS                   :0
Total length          :84
ID                    :23877
Fragment offset       :0
MF                    :0
DF                    :0
TTL                   :64
Protocol              :1
IP source             :192.168.1.123
IP destination        :192.168.1.123
==ICMP_HEADER================================
Packet type           :Echo Reply
#############################################


Получается идет echo request, echo request, echo reply, echo reply.
Wireshark говорит, что идет echo request, echo reply, echo request, echo reply

сниффинг проходит следующим образом:
Код

int n = 0;
int packet = 0;
char buf[1500];
while ( 1 ) {
    n = recvfrom ( sd, buf, 1500, 0, 0, 0 );
    printf ( "Packet #%d (%d bytes read)\n", ++packet, n );
    printFullOutput(buf);
}


функця разбора пакетов printFullOutput :
http://pastebin.com/jYSrrxcQ
PM MAIL ICQ Jabber   Вверх
Maledictus
Дата 10.4.2010, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 7.9.2008
Где: Республика Белару сь, Борисов

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



Так никто и не подскажет почему пакеты у меня принимаются в каком то странном порядке?
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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