Snifer pcap

thebadskull Messages postés 20 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 29 mai 2005 - 28 mai 2005 à 13:25
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 - 4 oct. 2005 à 09:13
Bonjour voilà je suis entrain de faire un sniffeur de paquets en C avec la librairie pcap

Lorsque je recupére mes paquets je les affiches avec :



--> type : <type>

et j'aimerais convertir les adresse mac en adresse IP, j'ai cherché et j'ai que l'on pouvais le faire que lors d'un ping.

et donc afficher



--> type : <type>



voilà je vous montre un bout de code ::



--Affichage :


//Structure

typedef struct {

u_char ether_dhost[6]; //destination host (adresse de destination)

u_char ether_shost[6]; //source host (adresse source)

u_short ether_type;    //type de trame

}ether_header;





//Avec mon Paquet qui est :


paquet = (u_char *) pcap_next(descriptPaquet, &amp;paquethdr);







void print_ether_header(ether_header *paquet)

{

int i;

struct ip *paquetip;

for (i=0;i<6;i++)

    {

    printf("%.2x",paquet->ether_shost[i]);

    if (i!=5) printf(":");

    }

printf(" -> ");

for (i=0;i<6;i++)

        {

        printf("%.2x",paquet->ether_dhost[i]);

        if (i!=5) printf(":");

        }

printf(" type: %.4x",paquet->ether_type);



}













Je vous remercie beaucoup !!!

3 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
28 mai 2005 à 15:02
Yep,
L'adresse MAC est une adresse physique unique au monde pour une matériel.
L'adresse IP est une adresse logique unique qui t'ai donnée par ton FAI.

Il n'y a donc aucune correspondance entre ces deux types d'adresse.
Il te faudrait revoir TCP/IP avant de faire un sniffer, ca te serai très utile.
Il y a de bon bouquin la dessus.

Shell
0
thebadskull Messages postés 20 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 29 mai 2005
29 mai 2005 à 13:49
ouai je sais ^^

mais en recuperant mon paquet je peut le mettre sous forme d'une ip...

avec cette structure d'ip :



/* IP header */

struct sniff_ip {

#if BYTE_ORDER == LITTLE_ENDIAN

u_int ip_hl:4, /* header length */

ip_v:4; /* version */

#if BYTE_ORDER == BIG_ENDIAN

u_int ip_v:4, /* version */

ip_hl:4; /* header length */

#endif

#endif /* not _IP_VHL */

u_char ip_tos; /* type of service */

u_short ip_len; /* total length */

u_short ip_id; /* identification */

u_short ip_off; /* fragment offset field */

#define IP_RF 0x8000 /* reserved fragment flag */

#define IP_DF 0x4000 /* dont fragment flag */

#define IP_MF 0x2000 /* more fragments flag */

#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */

u_char ip_ttl; /* time to live */

u_char ip_p; /* protocol */

u_short ip_sum; /* checksum */

in_addr ip_src,ip_dst; /* source and dest address */

};





là j'avance un peu mais lors de l'afficha de mon ip_src et ip_dst j'ai
un segmentation fault avec un %s et avec un %x j'ai rien qui ressemble
à une ip...

il ne faut pas la convertir pour l'afficher??

style avec inetoa ou otre je connai pas trop ces fonctions...
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
4 oct. 2005 à 09:13
Salut,

Tu as surement trouvé la solution depuis le temps, mais pour convertir une adresse MAC en adresse IP, il faut utiliser le protocole ARP (Adress Resolution Protocol).
Regarde dans l'aide de la commande arp (si tu es sous unix)

D@runia
0
Rejoignez-nous