rebonjour,
j'ai juste un petit problème de droit lorsque j'execute mon programme, je suit un tuto sur libpcap et le but du script est de lister les interface réseau.

le truc est que lorsque j'execute mon prog avec le user normale, ilme dit :
1.ERROR no suitable device found
alors j'ai essayer en root, et la j'ai :
Nombre del dispositivo: eth0
Direccion de Red: 172.16.50.0
Mascara de Red: 255.255.255.0
Comment faire pouvoir utiliser mon programme avec n'importe quel utilisateur ?

Voici mon script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include	<stdio.h>
#include	<stdlib.h>
#include	<errno.h>
#include	<sys/socket.h>
#include	<netinet/in.h>
#include	<arpa/inet.h>
#include	<pcap.h>
 
int main(int argc, char **argv)
{
	char *net;                              // direccion de red
	char *mask;                             // mascara de subred
	char *dev;                              // nombre del dispositivo de red
	int ret;                                // codigo de retorno
	char errbuf[PCAP_ERRBUF_SIZE];          // buffer para mensajes de error
	bpf_u_int32 netp;                       // direcion de red en modo raw
	bpf_u_int32 maskp;                      // mascara de red en modo raw
	struct in_addr addr;
 
	if ((dev = pcap_lookupdev(errbuf))== NULL){//conseguimos la primera interfaz libre
		printf("1.ERROR %s\n",errbuf);
		exit(-1);
	}
 
	printf("Nombre del dispositivo: %s\n",dev); //mostramos el nombre del dispositivo
 
	if ((ret = pcap_lookupnet(dev,&netp,&maskp,errbuf))==-1){ //consultamos las direccion de red y las mascara
		printf("2.ERROR %s\n",errbuf);
		exit(-1);
	}
 
	addr.s_addr = netp;                     //Traducimos la direccion de red a algo legible
	if ((net = inet_ntoa(addr))==NULL){
		perror("inet_ntoa");
		exit(-1);
	}
 
	printf("Direccion de Red: %s\n",net);
 
	addr.s_addr = maskp;                    //Idem para la mascara de subred
	mask = inet_ntoa(addr);
 
	if ((net=inet_ntoa(addr))==NULL){
		perror("inet_ntoa");
		exit(-1);
	}
	printf("Mascara de Red: %s\n",mask);
	return 0;
}
et je précise que je suis sur linux ubuntu 8.04