Ich habe versucht, Netzwerkverkehr mit dem RAW-Socket AF_PACKET zu schnüffeln. Ich bin in der Lage, alle IP/ARP-Pakete zu bekommen, aber ich kann überhaupt keine IPv6-Pakete bekommen. Was muss ich tun, um IPv6-Verkehr zu erhalten?AF_PACKET-Socket empfängt keine IPv6-Pakete
unsigned char buffer[65536];
int sock_raw = socket(AF_PACKET , SOCK_RAW , htons(ETH_P_ALL)) ;
if (sock_raw < 0)
{
perror("socket error!");
return 1;
}
while (1)
{
struct sockaddr saddr;
int saddr_size, data_size;
data_size = recvfrom(sock_raw, buffer, 65536, 0, &saddr, (socklen_t *)&saddr_size);
if (data_size >= 0)
{
ProcessPacket(buffer, data_size);
}
}
Es hängt möglicherweise davon ab, welches Betriebssystem Sie verwenden. Windows? Linux? FreeBSD? FreeDOS? – Neil
Ist dies ein geschalteter Ethernet-Netzwerk? Dazu müssten Sie die Port-Spiegelung einrichten. Wenn es sich um ein Wi-Fi-Netzwerk handelt, müssen Sie sich im Monitor- oder Promiscuous-Modus befinden. Andernfalls sehen Sie nur Broadcast, z. ARP oder Traffic, der nur für Ihren Host bestimmt ist. –
Ist die Schnittstelle im Promiscuous-Modus? – Cheatah