Search code examples
qtwiresharkpcaplibpcap

Wireshark Pcap converter app : no more console output


I'm making a simple Qt app that reads stuff from a CSV file and generates a PCAP data file out of it for reading by some other software.

And so soon as I invoque pcap_open_dead, pcap_dump_open or pcap_dump, I get no more console output upon running my small converter. Even the Hello World that comes at the beginning of the main doesn't show up any more. From the code below, if I simply comment out those three methods, the console output and "Hello World" come back.

Being new and therefore clueless about pcap, I ask for help.

#include <QCoreApplication>
#include <iostream>
#include "pcap.h"
using namespace std;

struct pcapWriter_S
{
    bool isAvailable;
    int m_OutPcapIpId;
    pcap_t* m_OutPcapHandle;
    pcap_dumper_t* m_OutPcapFile;
}m_pcapWriter;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    cout << "Hello World!" << endl;

    //m_pcapWriter.m_OutPcapHandle = pcap_open_dead(DLT_EN10MB,65535);
    //m_pcapWriter.m_OutPcapFile = pcap_dump_open(m_pcapWriter.m_OutPcapHandle, QString("tmp_csv_out.pcap").toAscii().data());
    m_pcapWriter.m_OutPcapIpId = 1;

    if (m_pcapWriter.m_OutPcapFile != 0)
    {
        m_pcapWriter.isAvailable = true;
    }

    QByteArray pkt_data;
    // Omitted code to generate pkt data from input file

    m_pcapWriter.m_OutPcapIpId++;

    //pcap_dump((unsigned char*)m_pcapWriter.m_OutPcapFile, &header, (unsigned char*)pkt_data.data());

    return a.exec();
}

Solution

  • Somehow this was due to me calling pcap_open but not pcap_close quite yet. In between console stuff gets lost - can't swear it gets written on the pcap thing but it blocks the console anyway.