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

想了解有关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条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

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

      悬赏问题

      • ¥15 Mac系统word显示此文档已被删除或当前无法访问.
      • ¥15 Unity用代码实现Tilemap
      • ¥15 怎么求广播地址以及网络地址?
      • ¥15 想知道unity如何实现物体贴地运动
      • ¥15 从A地到B地有多条路径可以到达,现要从A地到B地运物资问题
      • ¥30 用java设计小游戏扑克牌比大小,52张牌的图片选世界篮球明星图或其它都行
      • ¥15 ATM管理员功能代码及解释
      • ¥15 EasyExcel导出下载文件响应流为空
      • ¥15 Python爬虫添加详细注释
      • ¥15 python的为什么wordcloud词云就是下载不了