2010-08-06 6 views
2

이 파일의 출력을 libpcap 형식으로 저장하려고하는데 파일이 저장되고 올바른 데이터가 기록되지만 Wireshark에서 열 수 없습니다. 아무도 내가 여기에서 놓친 것을 본다? 감사.Wireshark에서 pcap_dump 파일을 열지 못했습니다.

// 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); 

    } 

답변

3

pcap_dump_open으로 전화가 올바르지 않은 것 같습니다. FILE * 포인터를 전달하고 있지만 파일 이름을 전달해야합니다. FILE 포인터로 pcap_dump_fopen을 사용하십시오. 또는 pcap_dump_open을 계속 사용하면서 간단히 파일 이름을 전달하십시오.

+0

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

+0

감사 마크를 참조하십시오. 이것은 그것을 돌 보았다. dump = pcap_dump_open (handle, "/ tmp/sniff.pcap"); pcap_loop (핸들, -1, & pcap_dump, (char *) dumper); – ZionKing

+0

그 동안 pcap_dump_open()이 널 포인터를 반환하는지 확인하십시오. null 포인터를 반환하면 파일이 쓰기 위해 성공적으로 열리거나 작성되지 않고 * 프로그램이 작동하지 않습니다. * 실패 할 수있는 호출이 실패하지 않는다고 가정하지 마십시오. –

관련 문제