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

Réseau C Discussion :

Capture de paquets avec Libpcap


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut Capture de paquets avec Libpcap
    Bonjour, je souhaite pouvoir bloquer un socket en provenance d'un site web en C en utilisant la libpcap.
    Avant de faire cela, j'ai décidé de réaliser quelques exercices basiques pour me familiariser avec cette lib.
    Pour commencer, j'ai honteusement copier/coller un code qui doit soit disant capturer les paquets.
    Il me choissisais pas défault mon interface eth0 alors que je voulais utiliser la wlan0, j'ai donc modifié le code pour utiliser cette interface, mais ca ne change rien, voici le code en question :

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <pcap.h> 
    #include <errno.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <netinet/if_ether.h> 
     
    int main(int argc, char **argv)
    {
        int i;
        char dev[] = "wlan0"; 
        char errbuf[PCAP_ERRBUF_SIZE];
        pcap_t* descr;
        const u_char *packet;
        struct pcap_pkthdr hdr;     
        struct ether_header *eptr; 
     
        u_char *ptr; 
     
     
        printf("DEV: %s\n",dev); //affiche wlan0
        descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf);
     
        if(descr == NULL)
        {
            printf("pcap_open_live(): %s\n",errbuf);
            exit(1);
        }
        packet = pcap_next(descr,&hdr);
     
        if(packet == NULL)
        {
            printf("Didn't grab packet\n"); //le programme m'affiche ce message puis s'arrete
            exit(1);
        }
        printf("Grabbed packet of length %d\n",hdr.len);
        printf("Recieved at ..... %d\n",ctime((const time_t*)&hdr.ts.tv_sec)); 
        printf("Ethernet address length is %d\n",ETHER_HDR_LEN);
     
        eptr = (struct ether_header *) packet;
     
        if (ntohs (eptr->ether_type) == ETHERTYPE_IP)
        {
            printf("Ethernet type hex:%x dec:%d is an IP packet\n",
                    ntohs(eptr->ether_type),
                    ntohs(eptr->ether_type));
        }else  if (ntohs (eptr->ether_type) == ETHERTYPE_ARP)
        {
            printf("Ethernet type hex:%x dec:%d is an ARP packet\n",
                    ntohs(eptr->ether_type),
                    ntohs(eptr->ether_type));
        }else {
            printf("Ethernet type %x not IP", ntohs(eptr->ether_type));
            exit(1);
        }
     
        ptr = eptr->ether_dhost;
        i = ETHER_ADDR_LEN;
        printf(" Destination Address:  ");
        do{
            printf("%s%x",(i == ETHER_ADDR_LEN) ? " " : ":",*ptr++);
        }while(--i>0);
        printf("\n");
     
        ptr = eptr->ether_shost;
        i = ETHER_ADDR_LEN;
        printf(" Source Address:  ");
        do{
            printf("%s%x",(i == ETHER_ADDR_LEN) ? " " : ":",*ptr++);
        }while(--i>0);
        printf("\n");
     
        return 0;
    }
    Le code s'arrete donc en me disant qu'il n'y a pas de paquet, d'ou vient le problème ?

    Merci beaucoup.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je réponds juste en passant, je ne suis pas sur mais cela ne viendrait pas du 4eme élément de ta fonction pcap_open_live() ?

Discussions similaires

  1. Problème avec un module de capture des paquets
    Par yesser_taboubi dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 10/12/2012, 16h22
  2. Capture de paquet avec jpcap
    Par hichem tunis dans le forum Général Java
    Réponses: 0
    Dernier message: 09/05/2011, 15h42
  3. Enregistrement des paquets avec libpcap
    Par riadh8 dans le forum Réseau
    Réponses: 1
    Dernier message: 07/04/2009, 18h12
  4. Paquet avec Delphi 2005
    Par Franckie dans le forum Composants VCL
    Réponses: 3
    Dernier message: 12/08/2005, 09h42
  5. capturer des paquets ARP
    Par .:dev:. dans le forum Développement
    Réponses: 2
    Dernier message: 27/06/2005, 12h59

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