Tag: pcap

pcap struct pcap_pkthdr len vs caplen

我们在linux上使用libpcap嗅探数据包我们在每个数据包上获得的头文如下所示: struct pcap_pkthdr { struct timeval ts; /* time stamp */ bpf_u_int32 caplen; /* length of portion present */ bpf_u_int32 len; /* length this packet (off wire) */ }; 现在,我的理解是caplen是我们捕获的数据的长度,而len是线路上数据包的长度。 在某些情况下(例如,在打开pcap设备时将snaplen设置得太低),我们可能只捕获数据包的一部分,该长度将为“caplen”,而“len”是原始长度。 因此,caplen应该等于或小于len,但绝不会大于len。 这是正确的理解吗? 我们在某些机器上看到了caplen> len

C – 将结构写入文件(.pcap)

我正在尝试编写.pcap文件,这可以在Wireshark中使用。 为了做到这一点,我有几个结构,我需要写入文件的各种数据类型。 (见代码) 所以,我创建结构实例,填写数据,使用FILE * fp = fopen(“test.pcap”,“w”),然后我不确定如何正确地将它写入文件。 我相信我应该使用memcpy,但我不确定最好的方法。 我过去主要使用C ++库来执行此操作。 有什么建议? typedef struct pcap_hdr_s { uint32_t magic_number; /* magic number */ uint16_t version_major; /* major version number */ uint16_t version_minor; /* minor version number */ int32_t thiszone; /* GMT to local correction */ uint32_t sigfigs; /* accuracy of timestamps */ uint32_t snaplen; /* max […]