Sin usar libpcap Estoy intentando escribir un archivo de registro que se adhiera al formato de archivo pcap (format). Este archivo debe ser legible por WireShark. Hasta ahora he escrito esto en C++:¿Cómo escribir el encabezado del archivo de captura 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();
Así que este debe hacer un archivo de captura en blanco, pero cuando lo abro en Wireshark me da la bienvenida con:
El archivo "hola .pcap "parece haberse cortado en el medio de un paquete u otros datos.
He intentado abrir el archivo de salida en modo binario pero eso no ayudó. Lo publicaría en el foro de WireShark, pero creo que es un error del usuario, no algo malo con WireShark.
Ayuda sería muy apreciada.
Y en caso de que el operador esté en un sistema donde sea importante, abra el archivo con 'ios :: binary' también – nos
@nos - Buen punto, gracias. – aaz