begin process at 2010 03 22 16:09:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

snifer pcap


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

snifer pcap

samedi 28 mai 2005 à 13:25:58 | snifer pcap

thebadskull

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 :

<adresse mac source> --> <adresse mac dest>  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

<IP Source> --> <IP Dest> type : <type>

voilà je vous montre un bout de code ::

--Affichage :
[code]
//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, &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);

}



[/code]


Je vous remercie beaucoup !!!



samedi 28 mai 2005 à 15:02:04 | Re : snifer pcap

DeAtHCrAsH

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
dimanche 29 mai 2005 à 13:49:07 | Re : snifer pcap

thebadskull

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...

mardi 4 octobre 2005 à 09:13:12 | Re : snifer pcap

darunia

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


Cette discussion est classée dans : type, printf, paquet, pcap, ether


Répondre à ce message

Sujets en rapport avec ce message

conflit de type dans un tableau [ par pausecpp ] j'ai eu une réponse inattendue. voici un partie du code (l'essentiel ;) ):...#define N 5....float V[N]={0}; int i;for(i=0; i{printf("\nEntrer la coord Un pb lors d'allocation de 3eme elts de type [ par eemikhm ] Bonjour,le programme suivant est écrit et exécuter par DEVC++. Pas d'erreurs de compilation, le problème c'est que lors de l'exécution de la 4eme itér Un problème avec l'union en C [ par IHECinformaticien ] Bonsoir/Bonjour, dans le code source au dessous j'ai défini une union qui contient 3 variables: une de type entier, l'autre de type réel et la dernièr un problème avec les unions [ par IHECinformaticien ] Bonsoir, dans le code qui suit j'ai trouvé un problème que je n'ai pas pu  connaitre sa cause. Si le monsieur qui à le pseudo " TychoBrahe" est type unsigned long long avec borland c++ [ par douss4 ] Bonjour,Je fait actuellement un programme de cryptage qui utilise une clé de 64 bits, ce qui correspond à la taille (d'après mes recherches) d'un unsi aider moi plz avant le 5 avril [ par riadusse ] voici mon programme de simulation de processus selon la méthode SJFj ai pas compris pourquoi l affichage est très très bizarre voici mon programme en Dessiner un rectangle (mais aussi un carré) en mode console langage C [ par DeathRavage ] Problème : J'ai un soucis à propos de la prise en compte de la taille de ma verticale, elle n'est pas prise en compte. J'ai essayé d'arranger les chos question [ par nouha23 ] je veu comprendre le code de ce class data-config svp et ces fonctions./**************************************************************************//* erreur d'execution d'un programme c [ par mahdouch16 ] bon soir à tous,voilà mon problème consiste à une erreur d'execution d'un programme que je developpe en c . En fait,il s'agit de remplir une structure


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,092 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales