Я пытаюсь преобразовать hping3 в hping6. hping3 использует библиотеку Pcap для приема пакетов IPv4. Но мне нужно получать пакеты IPv6.
Могу ли я использовать библиотеку pcap для получения пакетов ipv6?
comment
Вы определенно можете использовать libpcap для захвата пакетов ipv6 (поскольку wireshark и банда определенно их захватывают). Поскольку я никогда не использовал libpcap напрямую, я не могу предложить вам больше помощи, но это определенно возможно.
- person Mark Drago   schedule 06.06.2011
Ответы (2)
Это возможно. libpcap может поймать что угодно на проводе.
person
Jille Timmermans
schedule
06.06.2011
+1, это включает в себя вещи, которые не являются IPv4 (например, ARP, который находится непосредственно поверх фреймов Ethernet). Там, где в коде IPv4 PCAP вы использовали бы ETHERTYPE_IP, вместо этого вы просто используете ETHERTYPE_IPV6 с соответствующими структурами заголовков.
- person Flexo; 08.06.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;
}
}
person
Flexo
schedule
07.06.2011