begin process at 2012 05 29 08:33:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

Erreur de segmentation sniffer linux


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

Erreur de segmentation sniffer linux

jeudi 4 mai 2006 à 15:38:36 | Erreur de segmentation sniffer linux

gauthzilla

bonjour,
j'ai récuprer les sources d'un sniffer sur

http://www.estvideo.com/dew/index/page/sniffer

lorsque je compile sous linux, tout va bien. Mais quand je le lance , il capture un paquet et il y a une 'erreur de segmentation' au moment de l'analyse du datagramme IP.

Voila le morceau de code concerné :

/* Analyse IP (main.c)*/
void analyze_sniff_ip(const struct sniff_ip *ip) {
    char buffer[60];
    echo("+..............................................................+\n");
    echo("| IP                                                           |\n");
    echo("+..............................................................+\n");
    sprintf(buffer,"| Version           : %5d     Header Length : %5d          |\n",ip->ip_v,ip->ip_hl);
    echo(buffer);
    sprintf(buffer,"| Type of Service   : %5x     Total Length  : %5d          |\n",ip->ip_tos,ntohs(ip->ip_len));
    echo(buffer);
    if(ntohs(ip->ip_tos)>0) {
        // Type of Service
    }

    sprintf(buffer,"| Identification    : %5d     Flags         : %5x          |\n",ntohs(ip->ip_id),ntohs(ip->ip_off));
    echo(buffer);
    sprintf(buffer,"| Protocol    %5x : %s     TTL           : %5d          |\n",ip->ip_p,analyze_ip_proto(ip->ip_p),ip->ip_ttl);
    echo(buffer);
    sprintf(buffer,"| From :    %15s     To :  %15s          |\n",iptos(ip->ip_src.s_addr),iptos(ip->ip_dst.s_addr));
    echo(buffer);
}



/* IP header (main.h)*/
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 */
    struct in_addr ip_src,ip_dst;       /* source and dest address */
};

 
Lorsque je met cete partie du code en commentaire, plus de problème, il capture les paquets et saute tout le décodage ip.
Je n'arrive pas à trouver d'ou vient l'erreur.
Merci d'avance pour votre aide.

ps : la libpcap doit etre installer sur votre machine pour compiler. (g++ -o test main.c -lpcap)

ps2 : il manque '#include string.h' au main.c

jeudi 4 mai 2006 à 15:42:54 | Re : Erreur de segmentation sniffer linux

gauthzilla


excusez moi le code ne sais pas affiché correctement

jeudi 4 mai 2006 à 22:29:13 | Re : Erreur de segmentation sniffer linux

Taron31

Membre Club
Peut-être un overflow lors du sprintf sur buffer... essaye d'utiliser snprintf, pour limiter la copie des caractères dans buffer, je ne vois que ça...

___________________
MVS
- Most Valuable Student ( Microsoft)


Cette discussion est classée dans : buffer, ip, echo, sprintf, 5d


Répondre à ce message

Sujets en rapport avec ce message

Horoscope (recuperer sur site) [ par Tidam ] Voila j'ai un probleme, avec mon code j'envoi une requette HTTP au serveur et il me renvoi exactement ce que je lui ai envoyé ... quelqu'un pourrait m sprintf : le point devient virgule! [ par Jula ] Bonjour à tous,voici mon code:char buffer[16];sprintf(buffer, "%f", seuil_db);seuil_db est un float, il y a récuparation IP [ par cyril4900 ] Bonjour, Voila je veux un code qui me récupère l'addresse IP de ma machine hote qui fonctionne sur Winows et LINUX. Et c'est la le problème car j'ai rechercher une ip dans buffer [ par wallegen ] bonjour à tous :-) Malgré mes recherches notemment sur la recherche de chaine je n'ai pas trouvé la moyen de rechercher un ip dans un buffer celle ci déclaration et utilisation d'un buffer (pile TCP/IP) [ par aefmaaradji ] Bonjour, je voudrais savoir comment utiliser et declarer un buffer dans le visual c++/cli car j'ai fait une capture TCP/IP (sniffing) es problème avec un socket bloquant [ par Space_Monkey ] Bonjour,Après une journée de recherches, je ne suis pas parvenu à identifier clairement mon problème, j'ai donc décider de poster.J'utilise depuis lon Nslookup pour trouver l'ip [ par dolsky ] Bonjour,Je cherche à récupérer les adresses IP d'une liste des machines que j'ai sur AD.J'ai le script suivant avec la liste des machine que j'indique Sockets [ par Suxyt ] Bonjour à tous, Actuellement, je travaille sur un projet qui consiste d'envoyer et de recevoir des données en construisant l'en-tête soi-même. Pour e Cryptage d'un ficher/Décryptage dans un buffer RAM [ par yannou2 ] Bonjour, J'aurais aimé avoir quelques infos sur un problème que je rencontre. Dans une appli, je dois crypter un fichier qui représente une output (n Equivalent [ par belette321 ] Bonjour, je cherche l'equivalent en cpp des deux function vb6. Premierement, inet.openurl fait d'une ex.: -Dim IP as String -IP = inet.openurl("http


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 0,749 sec (3)

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