【C】[libpcap库]抓包得到的流量包发生截断的可能原因

错误呈现

        1.wireshark等工具直接打开pcap流量包文件,但弹出截断错误。

        2.tshark等解包工具,解包时发生打开文件错误。

        3.流量包损坏或空(正常空包大小是24B,有头有尾)。

分析及解决

.       1.权限,看好pcap包权限,因权限问题可能发生pcap文件读写失败。

        2.有没有关闭各个接口或描述符?

        抓包时,肯定要使用

   

pcap_t *pd = NULL;

pcap_dumper_t *dumpfp = NULL;
   

char errbuf[PCAP_ERRBUF_SIZE] = {0};
    // 打开网卡设备

pd = pcap_open_live("nic网卡名", 65535, 0, 1000, errbuf); 
    if (NULL == pd)
    {
        perror("pcap_open_live():%s\n", errbuf);
        return -1;
    }

// 打开pcap文件
dumpfp = pcap_dump_open(pd, "pcap文件路径");
    if (NULL == dumpfp)
    {
        perror("sniff_execute pcap_dump_open err\n");
        pcap_close(pd);
        return -1;
    }

       //pcap_dump(u_char *, const struct pcap_pkthdr *, const u_char *);抓包写入

上面是一般情况下需要开启的接口。秉承有开就有关原则:

pcap_dump_close(dumpfp);

pcap_close(pd);

 关闭接口就是必要操作。建议写在错误返回中或中断抓包行为后,如果强制结束而不关闭接口,那,大概率产生pcap文件截断的问题,推测是缺少包尾。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夢靈子DMC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值