背景
通过libpcap库对数据包进行处理,提取离线pcap文件中的部分内容保存为新的pcap文件,使用函数:pcap_open_offline( );pcap_loop( )等。
错误
The capture file appears to be damaged or corrupt.
(pcap: File has 2944323888-byte packet, bigger than maximum of 262144)
原因
原pcap数据包中pcap头(结构体struct pcap_pkthdr)中的caplen值错误,或者过大。
解决
写入新的pcap文件之前将pcap头重新赋值
pkthdr.caplen=packetlen=eth_len+ip_total_len