2010-11-22 5 views
0

я могу захватить пакеты от eth0 интерфейса и нюхать IP-пакеты следующегоКак понюхать пакет PPP с libpcap?

/* IP header */ 
struct sniff_ip { 
    u_char ip_vhl;     /* version << 4 | header length >> 2 */ 
    u_char ip_tos;     /* type of service */ 
    u_short ip_len;     /* total length */ 
    u_short ip_id;     /* identification */ 
    u_short ip_off;     /* fragment offset field */ 
    #define IP_RF 0x8000   /* reserved fragment flag */ 
    #define IP_DF 0x4000   /* dont fragment flag */ 
    #define IP_MF 0x2000   /* more fragments flag */ 
    #define IP_OFFMASK 0x1fff  /* mask for fragmenting bits */ 
    u_char ip_ttl;     /* time to live */ 
    u_char ip_p;     /* protocol */ 
    u_short ip_sum;     /* checksum */ 
    struct in_addr ip_src,ip_dst; /* source and dest address */ 
}; 

Так что, если нужно перехватывать пакеты из интерфейса PPP, как определить-структуру заголовка?

Я просто заметил, что длина заголовка составляет 32 байта в этом случае.

+0

Я не думаю, что знаю способ захвата «по программе» через libpcap или tcpdump. позаботиться о добавлении дополнительной информации? – Hasturkun

+0

извините! Я могу захватить ppp – why

+0

Но я заметил, что целевой ip пакета «0.2.172.16», это странно, Think 172.16.0.2 прав. – why

ответ

0

Если при захвате на устройстве PPP с Libpcap, то pcap_datalink() процедура возвращает DLT_PPP, то можно определить заголовок в моде, указанной записи для LINKTYPE_PPP/DLT_PPP в the tcpdump.org link-layer header types page:

PPP, а за RFC 1661 и RFC 1662; если первые 2 байта равны 0xff и 0x03, это PPP в HDLC-подобном обрамлении, с заголовком PPP после этих двух байтов, иначе это PPP без кадрирования, и пакет начинается с заголовка PPP.

Смежные вопросы