如果是脱机pcap文件,如何使用C / C ++提取TCP标头中的选项字段。我尝试在标题结构中包含选项字段,但是当我将结果与Wireshark进行比较时,它并没有给出一致的结果。当通过TCP头结构访问时,似乎缺少任意字节。请帮忙。
答案 0 :(得分:0)
不要尝试直接阅读文件,而是使用pcap_open_offline
中的pcap_fopen_offline
或libpcap
。这将读取保存文件并允许您提供过滤器。伪代码就像这样(你需要添加错误处理):
char *fname = "/path/to/my/file";
const u_char *packet;
pcap_t *handle;
handle = pcap_open_offline (fname, errbuf);
while (packet = pcap_next(handle,&header))
{
char *data = (char *) packet;
...
}
pcap_close (handle);
如果您已经使用libpcap
,则必须发布代码。请记住,为了可靠地找到IP头,您需要检查以太网类型(ETHER_TYPE_IP
vs ETHER_TYPE_8021Q
),然后找到TCP头(IP头的长度可以变化),然后才会你得到一个指向TCP头的指针。