libpcap을 사용하지 않고 pcap 파일 형식 (format)을 준수하는 로그 파일을 작성하려고합니다. 이 파일은 WireShark에서 읽을 수 있어야합니다.PCAP 캡처 파일 헤더를 쓰는 방법은 무엇입니까?
struct pcapFileHeader {
uint32_t magic_number; /* magic number */
uint16_t version_major; /* major version number */
uint16_t version_minor; /* minor version number */
int16_t thiszone; /* GMT to local correction */
uint32_t sigfigs; /* accuracy of timestamps */
uint32_t snaplen; /* max length of captured packets, in octets */
uint32_t network; /* data link type */
};
ofstream fileout;
fileout.open("file.pcap", ios::trunc);
pcapFileHeader fileHeader;
fileHeader.magic_number = 0xa1b2c3d4;
fileHeader.version_major = 2;
fileHeader.version_minor = 4;
fileHeader.thiszone = 0;
fileHeader.sigfigs = 0;
fileHeader.snaplen = 65535; //(2^16)
fileHeader.network = 1; //Ethernet
fileout << fileHeader.magic_number <<
fileHeader.version_major <<
fileHeader.version_minor <<
fileHeader.thiszone <<
fileHeader.sigfigs <<
fileHeader.snaplen <<
fileHeader.network;
fileout.close();
그래서이 이 빈 캡처 파일을 확인해야합니다,하지만 난 와이어 샤크에서 열 때 나는 맞이하고있다 : 지금까지 나는 C++이 서면으로 작성했습니다 안녕하세요 "
파일 .pcap "은 패킷이나 다른 데이터의 중간에 짧게 잘라낸 것처럼 보입니다.
출력 파일을 이진 모드로 열려고 시도했지만 도움이되지 않았습니다. WireShark 포럼에 게시 할 것이지만, 이것이 WireShark의 잘못된 점이 아니라 사용자 오류라고 생각합니다.
도움을 많이 주시면 감사하겠습니다.
op가 문제가되는 시스템에있는 경우, 'ios :: binary'로 파일을 엽니 다. – nos
@nos - 좋은 지적입니다. 감사합니다. – aaz