问题描述
在使用Libpcap库读取PCAP文件(使用pcap_open_offline函数打开PCAP文件)时,在pcap包头(structpcap_pkthdr)中出现len与caplen不相等的情况,并且最大的caplen为112字节。但是,使用Wireshark打开该PCAP文件是正常的,即len与caplen是一样的。
问题解决
使用UltraEdit打开PCAP文件,对照PCAP文件格式发现在PCAP文件头中SnapLen为0x60(96字节)。PCAP文件头中SnapLen为4个字节的整数,从第17个字节开始,其值为6000 00 00,把SnapLen修改为FF FF 00 00后问题得到解决。
原因:使用pcap_open_offline函数打开PCAP文件时,在读取报文时会根据PCAP文件头部的SnapLen对报文进行截断。如果SnapLen为96,那么caplen最大值为112字节,大于112字节的报文数据会被丢弃,SnapLen于CapLen两者之间差16个字节。
PCAP文件头格式如下:
struct pcap_file_header {
bpf_u_int32 magic;
u_short version_major;
u_short version_minor;
bpf_int32 thiszone;
bpf_u_int32 sigfigs;
bpf_u_int32 snaplen;
bpf_u_int32 linktype;
};
把SnapLen修改为0x50 = 80,最大的CapLen为96字节,两者之差为16个字节。
当SnapLen为0x60=96时,最大的CapLen为112字节,两者之差也为16个字节。
这16个字节为PCAP报文头部(pcap_pkthdr)的字节数,如下:
structpcap_pkthdr
{
structtimeval ts;
DWORD caplen;
DWORD len;
}
struct timeval
{
DWORD GMTtime;
DWORD microTime
}
分享到:
相关推荐
libpcap(winpcap)捕获数据包与存储和读取 环境 libpcap + Qt Creator
libpcap的示例代码和英文资料,tcpdump-filters的规则同样适用于libpcap的过滤表达式
这是一个快速安装libpcap的shell...在运行中会在桌面上暂时的新建一个libpcap_dir的文件夹,用来暂时存放所有的文件,在安装完成后会删除这个文件夹。 安装文件的版本: m4-1.4.9 bison-3.0 flex-2.6.0 libpcap-1.8.1
libpcap(Packet Capture Library)即数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库; libpcap可以实现以下功能: - 数据包捕获:捕获流经网卡的原始数据包 - 自定义数据包发送:任何构造格式的原始...
包含libpcap的用法入门 ;libpcap的浅析;开发及介绍,libpcap总结;和我一起学libpcap
Libpcap使用总结.htmLibpcap使用总结.htm
基于libpcap的C编程,基于libpcap的C编程
libpcap-1.7.4,这是目前的Libpcap的最新版本,值得下载。
libpcap是unix/linux平台下的网络数据包捕获函数包, 大多数网络监控软件都以它为基础。 本资源是libpcap1.7.4的源码
libpcap 数据捕捉 软交换数据包 基于Linux内核模块与LibPcap的高速数据获取和过滤转发策略
libpcap-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm libpcap-devel-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm
Cython封装libpcap库。读取 pcap 文件。写入 pcap 文件。合并 pcap 文件。多文件快速合并。获取第一个 iface。获取 iface 列表。发送原始数据包。捕获数据
libpcap.so libpcap.so
libpcap简单流量监控
libpcap 0.9.6
libpcap的使用示例程序和文档。 通过这个可以在各类平台上上抓包分析参考
ubuntu20.04无网安装libpcap-dev
libpcap 基于Libpcap的网络终端定位信息萃取与流量采集