2016-08-03 147 views
0

我有一個C++程序,能夠生成pcap文件。但是,我想在錄製的幀中嵌入更多信息,並且我知道新格式pcapng允許向幀添加任意註釋,我希望利用這些註釋。我也明白​​能夠生成pcapng文件,但我找不到任何參考,教程或示例。我的需求非常簡單:我只需要打開一個pcapng文件,每隔一段時間將一個數據包轉儲到該文件中,然後關閉它。你從哪裏開始有什麼有用的參考?在C++程序中生成pcapng文件

回答

1

一些嘗試和錯誤和讀取頭文件,我想出了這個測試片段後:

#include <sys/time.h> 
#include <string.h> 
#include <wiretap/wtap.h> 

int main() { 

    int err; 
    wtap_dumper *dumper = wtap_dump_open_ng("test.pcapng", WTAP_FILE_TYPE_SUBTYPE_PCAPNG, WTAP_ENCAP_ETHERNET, 65535, 1, NULL, NULL, NULL, &err); 

    char *packet = "helloworld"; 
    char *err_info; 
    struct wtap_pkthdr header; 
    wtap_phdr_init(&header); 
    header.caplen = strlen(packet); 
    header.len = strlen(packet); 
    gettimeofday(&header.ts, NULL); 
    header.opt_comment = "how are you?"; 
    wtap_dump(dumper, &header, packet, &err, &err_info); 
    wtap_phdr_cleanup(&header); 

    wtap_dump_close(dumper, &err); 

    return 0; 

} 

我不認爲這是好的代碼,但僅僅是對我的作品(當然它會生成無效的數據包)。此外,目前沒有錯誤檢查。

編譯:

gcc -o test `pkg-config --cflags --libs wireshark` -lwiretap test.c