IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Droit d'utilisation sur un programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut Droit d'utilisation sur un programme
    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

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Attention, ça n'est pas un script mais un code.
    Les arguments de la fonction main ne servent à rien.
    Pour que n'importe quel utilisateur puisse le lancer tu dois activer le bit SetUID root.

  3. #3
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut
    euh est ce que tu peut développer un peut car je suis débutant (j'avais pas précisé !)

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    dans un terminal tu tapes en remplaçant programme par le nom de ton programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sudo chown root:root programme
    $ sudo chmod u+s programme

  5. #5
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut
    Je suis bête je croyais que tu parlais d'un tuc a faire en C .

    Mais en totu cas merci, ça marche . Donc je clos le sujet. thx.

    A oui juste une question est ce que quelqu'un a vus ou connais un bon tuto sur libpcap pour la capture de paquet ?
    je souhaiterais faire un logiciel de controle parental, est ce que c'est la bonne librairie ?

  6. #6
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Si tu parles de contrôle parental pour les sites web, alors tu es descendu trop bas dans le modèle OSI. Le protocole HTTP se situe au niveau 7, la tu es au niveau 2, il semble qu'il y est un défaut de conception.
    Autrement, il faut que tu apprennes à limiter la portée de tes variables sinon un jour ou l'autre ça va te pêter à la figure :
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #include <stdio.h>
    #include <stdlib.h>
    #include <arpa/inet.h>
    #include <pcap.h>
     
    int main (void)
    {
       int ret = 0;                                /* codigo de retorno */
       char errbuf[PCAP_ERRBUF_SIZE];          /* buffer para mensajes de error */
       char *dev = pcap_lookupdev(errbuf);  
     
       if (dev == NULL)
       {/*conseguimos la primera interfaz libre */
          printf ("1.ERROR %s\n", errbuf);
          ret = EXIT_FAILURE;
       }
       else
       {
          bpf_u_int32 netp = 0;                       /* direcion de red en modo raw */
          bpf_u_int32 maskp = 0;                      /* mascara de red en modo raw */
     
          printf ("Nombre del dispositivo: %s\n", dev); /*mostramos el nombre del dispositivo */
     
          if (pcap_lookupnet (dev,&netp,&maskp,errbuf) == -1)
          { /*consultamos las direccion de red y las mascara */
             printf ("2.ERROR %s\n", errbuf);
             ret = EXIT_FAILURE;
          }
          else
          {        
             struct in_addr addr = {netp};
             char *net = inet_ntoa (addr);
     
             if (net == NULL)
             {
                perror ("inet_ntoa");
                ret = EXIT_FAILURE;
             }
             else
             {
                char *mask = NULL;   
     
                printf ("Direccion de Red: %s\n", net);
     
                addr.s_addr = maskp;                    /*Idem para la mascara de subred */
                mask = inet_ntoa (addr);
     
                net = inet_ntoa (addr);
                if (net == NULL)
                {
                   perror ("inet_ntoa");
                   ret = EXIT_FAILURE;
                }
                else
                {
                   printf ("Mascara de Red: %s\n", mask);
                }
             }
          }
       }
       return ret;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/01/2012, 13h01
  2. utiliser le meme programme sur 2 ordinateur
    Par lounacou dans le forum Access
    Réponses: 7
    Dernier message: 07/08/2011, 23h31
  3. [Turbo Pascal] Votre avis sur un programme (utilisation fichiers)
    Par dourpil dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 15/10/2009, 09h13
  4. Réponses: 4
    Dernier message: 11/06/2009, 11h02
  5. Utiliser gprof sur un programme compilé avec Visual C++ 2005
    Par G3G3 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 31/01/2008, 22h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo