2010-11-22 17 views
0

Ben eth0 arayüzünden paketlerini yakalamak ve PPP arayüzünden paketleri yakalamak için ihtiyaç nasıl başlık yapı tanımlamak için Yani eğerPPP paketini libpcap ile nasıl temizlersiniz?

/* 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 */ 
}; 

aşağıdaki gibi ip paketleri dinleyebilir?

Sadece bu durumda, başlık uzunluğunun 32 bayt olduğunu fark ettim.

+0

Libpcap veya tcpdump aracılığıyla "program tarafından" yakalamanın bir yolunu bildiğimi sanmıyorum. Daha fazla bilgi eklemek ister misiniz? – Hasturkun

+0

üzgünüm! Ben ppp – why

+0

tarafından yakalayabilirim Ama ben paketin hedef ip "0.2.172.16" olduğunu, garip olduğunu düşünüyorum, 172.16.0.2 Think haklı. – why

cevap

0

Eğer libpcap PPP cihazda yakalarken, pcap_datalink() rutin geri döner DLT_PPP, daha sonra the tcpdump.org link-layer header types page içinde LINKTYPE_PPP/DLT_PPP için bir giriş ile gösterilen bir şekilde başlık tanımlar:

PPP gibi RFC 1661 ve RFC 1662; ilk 2 bayt 0xff ve 0x03 ise, HDLC benzeri çerçevede PPP, bu iki bayttan sonraki PPP üstbilgisiyle, aksi halde çerçevelemeden PPP olur ve paket PPP üstbilgisiyle başlar.

İlgili konular