我有一个能够生成pcap
文件的 C++ 程序。但是,我想在记录的帧中嵌入额外的信息,并且我知道更新的格式pcapng
允许向帧添加任意评论,我想利用这一点。我也知道libwiretap
能够生成pcapng
文件,但我找不到参考、教程或示例。我的需求很简单:我只需要打开一个pcapng
文件,然后不时将一个数据包转储到其中,然后最后关闭它。您对从哪里开始有任何有用的参考吗?
问问题
813 次
1 回答
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
于 2016-08-03T13:38:05.993 回答