私はhping3をhping6に変換しようとしています。 hping3はPcapライブラリを使用してIPv4パケットを受信します。しかし、私はIPv6パケットを受け取る必要があります。ipv6パケットを受信するためにpcapライブラリを使用できますか?
4
A
答えて
6
可能です。 libpcapはワイヤ上のものを捕まえることができます。 ETHERTYPE_IPV6
を使用して
+0
+1、これにはIPv4以外のものが含まれます(ARPのように、イーサネットフレームの上に直接置かれます)。 IPv4 PCAPコードでETHERTYPE_IPを使用する場所では、代わりにETHERTYPE_IPV6を使用し、適切なヘッダー構造も使用します。 – Flexo
2
例:
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;
}
}
あなたは間違いなく(wiresharkのようとギャングは間違いなくそれらをキャプチャ)IPv6パケットをキャプチャするためのlibpcapを使用することができます。 libpcapを直接使用したことは一度もありませんでしたが、これ以上ヘルプを提供することはできませんが、間違いなく可能です。 –