Wuliwuliii 2021-09-23 21:49 采纳率: 0%
浏览 33
已结题

想了解有关Ubuntu系统使用C语言抓数据包并写文件成为wireshark可执行文件

我使用C语言进行抓数据包的操作,然后代码如下所示,但是不知道怎样将抓到的数据包输出成wireshark的可执行文件。请教各位了!

#include <pcap.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>

int main()
{
    pcap_if_t *alldevs;
    char errbuf[PCAP_ERRBUF_SIZE];
    if(pcap_findalldevs(&alldevs, errbuf) == -1)
    {
        printf("Error in pcap_findalldevs: %s\n", errbuf);
        exit(EXIT_FAILURE);
    }
    printf("Device name: %s\n", alldevs->name);
    printf("Descripetion: %s\n", alldevs->description);
    pcap_t *handler;
    handler = pcap_open_live(alldevs[0].name, PCAP_ERRBUF_SIZE, 1, 100, errbuf);
    if(handler == NULL)
    {
        printf("open fail\n");
        return -1;
    }

    FILE *text = fopen("Capa.pcapng", "w");
    struct pcap_pkthdr pkhdr;   //packet information
    while(1)
    {
        const unsigned char *packet = pcap_next(handler, &pkhdr);   //get a packet
        if(packet == NULL)
        {
            pcap_close(handler);
            break;
        }
        fprintf(text, "%s\n", packet);
    }
    pcap_freealldevs(alldevs);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-09-26 09:54
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


    因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月1日
  • 创建了问题 9月23日