Без использования libpcap Я пытаюсь написать файл журнала, который соответствует формату файла pcap ( формат ).Этот файл должен быть доступен для чтения WireShark.До сих пор я писал это на C ++:
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();
Так что должен создать пустой файл захвата, но когда я открываю его в Wireshark, меня приветствуют:
Файл "hello.pcap", по-видимому, обрезан в середине пакета или других данных.
Я попытался открыть выходной файл в двоичном режиме, но этоне помоглоЯ хотел бы опубликовать это на форуме WireShark, но я думаю, что это ошибка пользователя, а не что-то не так с WireShark.
Помощь будет высоко ценится.