Можно ли создать pcpp::RawPacket в PcapPlusPlus, используя только массив байтов (чтобы сохранить его в файле file.pcap с помощью pcpp::PcapNgFileWriterDevice)?
В этом примере они создал файл PCAP, создав каждый слой со своими собственными данными и добавив их в pcpp::Packet, а затем сохранив этот пакет с помощью pcpp::PcapFileWriterDevice.
Но в моем случае я просто хочу создать pcpp::RawPacket, используя только байты данных. Я вижу, что существует метод pcpp::RawPacket::setRawData(), который принимает указатель на новые необработанные данные. Являются ли эти необработанные данные массивом байтов или чем-то другим?
Я попробовал следующий код:
Код: Выделить всё
JNIEXPORT jboolean JNICALL
Java_org_my_app_directory_pcapplusplus_PcapPlusPlusInterface_writePcapNative(
JNIEnv *env, jclass clazz, jstring file, jbyteArray data) {
pcpp::RawPacket rawPacket;
// Here (I assume) should be set the whole data of the packet (and the others parameters)
rawPacket.setRawData();
pcpp::Packet parsedPacket(&rawPacket);
parsedPacket.computeCalculateFields();
// create a pcap-ng file writer. Specify file name. Link type is not necessary because
// pcap-ng files can store multiple link types in the same file
pcpp::PcapNgFileWriterDevice pcapNgWriter(jstring2string(env,file));
// try to open the file for writing
if (!pcapNgWriter.open())
{
std::cerr