【问题标题】:How to extract the option fields in TCP header for a pcap file using C/C++如何使用 C/C++ 提取 pcap 文件的 TCP 标头中的选项字段
【发布时间】:2014-02-15 16:22:28
【问题描述】:

在离线 pcap 文件的情况下,如何使用 C/C++ 提取 TCP 标头中的选项字段。我尝试在标题结构中包含选项字段,但是当我将结果与 Wireshark 进行比较时,它并没有给出一致的结果。通过 TCP 标头结构访问时,似乎会丢失任意字节。请帮忙。

【问题讨论】:

    标签: c++ c tcp pcap


    【解决方案1】:

    不要尝试直接读取文件,而是使用来自libpcappcap_open_offlinepcap_fopen_offline。这将读取保存文件并允许您提供过滤器。伪代码是这样的(你需要添加错误处理):

    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_IPETHER_TYPE_8021Q),然后找到 TCP 标头(IP 标头的长度可以变化),然后您才会得到一个指针到 TCP 标头。

    【讨论】:

      猜你喜欢
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 2014-02-04
      相关资源
      最近更新 更多