2010-08-06 3 views
2

J'essaie d'enregistrer la sortie de ce fichier au format libpcap et bien que le fichier soit sauvegardé et que les bonnes données y soient écrites, Wireshark est incapable de l'ouvrir. Quelqu'un voit-il ce qui me manque ici? Merci.Fichier pcap_dump non ouvert par Wireshark

// opening the device here to listen 
    handle = pcap_open_live(dev, BUFSIZ, 1, 1000, errbuf); 
    unsigned int dlt = DLT_EN10MB; 
    pcap_set_datalink(handle,dlt); 


    FILE *filename; 
    filename = fopen("/workarea/capture","a+"); 

    pcap_dumper_t * dump = NULL; 

// opens the file 
dump = pcap_dump_open(handle, (const char *)filename); 

pcap_loop(handle,-1,my_callback,(unsigned char *)filename); 

return (0); 
} 


void my_callback(u_char *dump,const struct pcap_pkthdr* pkthdr,const u_char *packet) 
    { 
    unsigned int i=0; 
    pcap_dump(dump,pkthdr,packet); 

    } 

Répondre

3

Votre appel à pcap_dump_open ne semble pas correct. Il passe un pointeur FILE * mais devrait passer un nom de fichier. Utilisez pcap_dump_fopen pour un pointeur FILE. Ou continuez à utiliser pcap_dump_open mais transmettez simplement le nom du fichier.

+0

+1. Voir http://www.manpagez.com/man/3/pcap_dump_open/ –

+0

Merci Mark. Cela a pris soin d'elle. dump = pcap_dump_open (handle, "/ tmp/sniff.pcap"); pcap_loop (handle, -1, & pcap_dump, (char *) dumper); – ZionKing

+0

Pendant que vous y êtes, * veuillez * vérifier si 'pcap_dump_open()' renvoie un pointeur nul ou pas; si elle renvoie un pointeur nul, le fichier n'a pas * été * ouvert avec succès/créé pour l'écriture, et le programme ne fonctionnera pas. * Ne supposez pas qu'un appel qui échoue n'échouera pas. –

Questions connexes