cs_Kikx
Messages postés12Date d'inscriptionvendredi 24 décembre 2004StatutMembreDernière intervention11 janvier 2005
-
11 janv. 2005 à 20:35
psyphi
Messages postés51Date d'inscriptionlundi 16 août 2004StatutMembreDernière intervention12 août 2010
-
3 juil. 2006 à 18:14
sniiiiffffffffff
j'ai fait un sniffer assez basique avec la librairie pcap ...
Jusqu'à la pas de soucis car je récupère effectivement les paquets de l'interface
Le problème est venu quand j'ai voulu un peu poussé mon sniffer dans ses limites et j'ai telechargé un iso (reseau local) donc mes débits avoisinent le 4Mo/s et la .... mon fichier de log faisait seulement 20 Mo
donc je me suis dit que ma boucle de sniffage était trop lente et j'ai supprimé tout le traitement à l'interieur et j'ai juste affiché la taille cumulé des paquets qui transitaient ... au final 30Mo
Donc a priori je drop pas mal de paquet ...
voila un extrait de mon code :
if ((fppcap_open(d->name,65536,PCAP_OPENFLAG_PROMISCUOUS, 1000 ,NULL,errbuf)) NULL){
// TODO : Faire un message d'erreur !
}
else {
//----------------------------------------
// Preparation du sniffage
//----------------------------------------
// On efface le fichier de log
pfile = fopen("C:/Log.txt", "w") ;
fwrite("",sizeof(
char),1,pfile) ;
fclose(pfile) ;
// on prepare la liste des paquets
LPaquet =
new Paquet() ;
// On efface la listView
ListView_DeleteAllItems(hWndTab1_List);
//----------------------------------------
// Début du sniffage
//----------------------------------------
while((res=pcap_next_ex(fp,&header,(
const u_char**) &pkt_data))>= 0){
if(res != 0) {
// le timeout n'est pas arrivé
size = header->caplen ;
total_size += size ;
//----------------------------------------
// On sauve le paquet dans un fichier
//----------------------------------------
pfile = fopen("C:/Log.txt", "a+b") ;
fclose(pfile) ;
//--------------------------------------
// On ecrit les Infos lié aux paquets a
// l'ecran
//--------------------------------------
// Ici il y a le code d'affichage
}
}
Si quelqu'un a une idée ...
avec ethereal ca marche parfaitement mais il va sans dire que je m'en sors pas avec la lecture du code ... je comprend rien !
Donc il doit y avoir une astuce que je n'ai pas saisi
cs_Kikx
Messages postés12Date d'inscriptionvendredi 24 décembre 2004StatutMembreDernière intervention11 janvier 2005 11 janv. 2005 à 21:38
Bon ben ...
snif personne m'aime :(
je vais suicider mon ordinateur ...
Voila de nouveaux test pour les interessés
Si je désactive tout ... j'ai l'impresssion de chopper tout les paquets ... mais bon j'ai aucun traitement dans la boucle alors c'est un peu lourd :(
psyphi
Messages postés51Date d'inscriptionlundi 16 août 2004StatutMembreDernière intervention12 août 2010 3 juil. 2006 à 18:14
J'arrive un peu tard mais si tu drops tout ces paquets c'est parce que ta boucle de traitement est trop longue. Au lieu de tout faire en un seul jet, appele le traitement dans un autre thread en parallère.
There are only 10 types of people in the world: Those who understand binary, and those who don't.