0

Bonjour, j'essaie d'effectuer une injection de paquets en utilisant des sockets raw, j'ai un problème pour obtenir l'index d'interface en utilisant la commande SIOCGIFINDEX de l'ioctl. J'utilise Ubuntu 12.04 comme mon OS. S'il vous plaît aider le code est:Erreur lors de l'obtention de l'index d'interface à l'aide de SIOCGIFINDEX

int BindRawSocketToInterface(char *device, int rawsock, int protocol) 
{ 
struct sockaddr_ll sll; 
struct ifreq ifr; 
bzero(&sll, sizeof(sll)); 
bzero(&ifr, sizeof(ifr)); 

/* First Get the Interface Index */ 

strncpy ((char*) ifr.ifr_name, device, IFNAMSIZ); 
if ((ioctl(rawsock, SIOCGIFINDEX, &ifr))== -1) 
{ 
printf ("Error getting interface index!\n"); 
exit(-1); 
} 

/* Bind our rawsocket to this interface */ 

sll.sll_family = AF_PACKET; 
sll.sll_ifindex = ifr.ifr_ifindex; 
sll.sll_protocol = htons(protocol); 

if ((bind(rawsock, (struct sockaddr*)&sll,sizeof(sll)))== -1) 
{ 
perror("Error binding raw socket to interface \n"); 
exit(-1); 
} 
return 1; 
} 
+0

Code ne compile pas comme il est. Main() manquant, inclut et définition de struct sockaddr_ll. – thuovila

+0

ive juste donné ce fuction qui a le problème, le code original contient main() et tous les inclut pertinents. Le code compile parfaitement, mais quand je donne le nom de l'interface comme une entrée, le message d'erreur apparaît "Erreur lors de l'obtention de l'index de l'interface!" – user1959279

Répondre

Questions connexes