UDP 패킷을 파일에 저장해야하며 사용할 수있는 다양한 도구 (wireshark, tcpdump, ...)를 다시 사용하기 위해 pcap 형식을 사용하고 싶습니다. this thread에 몇 가지 정보가 있지만 전역 파일 헤더 'struct pcap_file_header'를 작성하는 방법을 찾을 수 없습니다.pcap 파일 만들기
pcap_t* pd = pcap_open_dead(DLT_RAW, 65535);
pcap_dumper_t* pdumper = pcap_dump_open(pd, filename);
struct pcap_file_header file_hdr;
file_hdr.magic_number = 0xa1b2c3d4;
file_hdr.version_major = 2;
file_hdr.version_minor = 4;
file_hdr.thiszone = 0;
file_hdr.sigfigs = 0;
file_hdr.snaplen = 65535;
file_hdr.linktype = 1;
// How do I write file_hdr to m_pdumper?
while((len = recvmsg(sd, &msg_hdr, 0)) > 0)
pcap_dump((u_char*)m_pdumper, &m_pcap_pkthdr, (const u_char*)&data);
글로벌 파일 헤더는 어떻게 작성해야합니까? 사용 가능한 특정 pcap 함수가 없으면 어떻게 write()를 사용하여 헤더를 삽입 할 파일 디스크립터를 검색 할 수 있습니까?
감사합니다.하지만 일반 파일 write() 호출을 사용하여 모든 작업을 수행 한 것처럼 보입니다. pcap_dump()를 사용하고 있으며 파일 설명자를 가져올 위치를 파악할 수 없습니다. –
@RobertKubrick 위에 업데이트되었습니다. 나는 원래의 대답을 남겨 두었습니다. 왜냐하면'pcap_dump'를 사용해도 여전히 IP 헤더를 가짜로 만들 필요가 있습니다. 그리고 위에 링크 된 패치가 도움이 될 수 있습니다. – je4d
사실, 글로벌 파일 헤더를 쓸 필요가 없습니다. 그냥 확인했습니다. –