将 pcap 文件解析为 C++ 中的 sip 消息

Parse pcap files to sip message in c++

我想从 pcap 文件中解析一些信息到我的项目中。 我正在创建可以在 sip 调用中查找错误的分析器。我创建了 class 可以保存这些信息(现在不是全部)。我使用 Windows 和 Codeblocks c++,并为 windows 安装了 pcap 库。 实现此目标的最简单方法是什么?

class Messege
    {
    private:
        int number;
        string cseq;
        string method;
        string callId;
        string source;
        string destination;
        string request;

    public:
        //set
        void setCseq (string newCseq){cseq=newCseq;};
        void setNumber (int newNumber){number=newNumber;};
        void setMethod (string newMethod){method=newMethod;};
        void setSource (string newSource){source=newSource;};
        void setDestination (string newDestination){destination = newDestination;};
        void setCallId (string newCallId){callId = newCallId;};
        void setRequest (string newRequest){request = newRequest;};

        //get
        int getNumber (){return number;};
        string getCseq (){return cseq;};
        string getMethod (){return method;};
        string getSource (){return source;};
        string getDestination () {return destination;};
        string getCallId (){return callId;};
        string getRequest (){return request;};
    };

您可能想查看 libpcap。您可以使用以下命令解析 pcap 文件:

pcap_t *pcap = pcap_open_offline(pcap_filename, errbuf);
int link_layer_type = pcap_datalink(pcap);
pcap_loop(pcap, -1, pcap_handler, NULL);
pcap_close(pcap);

其中 pcap_handler 是您的回调函数:

typedef void (*pcap_handler)(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes); 

查找详细信息here