Могу ли я использовать библиотеку pcap для получения пакетов ipv6? - PullRequest
4 голосов
/ 06 июня 2011

Я пытаюсь преобразовать hping3 в hping6.hping3 использует библиотеку Pcap для получения пакетов IPv4.Но мне нужно получать пакеты IPv6.

Ответы [ 2 ]

6 голосов
/ 06 июня 2011

Это возможно. libpcap может перехватывать что-либо по проводам.

3 голосов
/ 08 июня 2011

Пример использования ETHERTYPE_IPV6:

static u_int16_t ether_packet(u_char *args, const struct pcap_pkthdr *pkthdr, co
nst u_char *p) {
  struct ether_header *eptr = (struct ether_header*)p;

  assert(pkthdr->caplen <= pkthdr->len);

  assert(pkthdr->caplen >= sizeof(struct ether_header));

  return eptr->ether_type;
}


// This is the callback. assumes ethernet frame.
static void pcap_callback(u_char *args,const struct pcap_pkthdr* pkthdr,const u_
char* p)
{
  const u_int16_t type = ether_packet(args, pkthdr, p);
  switch (ntohs(type)) {
  case ETHERTYPE_IP:
    // handle IPv4 
    break;
  case ETHERTYPE_IPV6:
    // handle v6
    break;
  }
}
...