将嗅探器的转储输出到C中的外部文件

时间:2013-02-24 12:59:32

标签: c pcap sniffer

我正在创建一个简单的嗅探器,只是为了好玩,我想将转储输出到文件。这是嗅探器的代码:

#include <stdio.h>
#include <pcap.h>

#define MAX_PACKET_NUM 5

int main(void) {

    struct pcap_pkthdr header;
    const u_char *packet;
    char errbuf[PCAP_ERRBUF_SIZE];
    char *device;
    pcap_t *pcap_handle;
    int i;

    printf("## Now sniffing on: %s ##\n", device);
    printf("## Max packets number for this session: %d\n", MAX_PACKET_NUM);

    printf("[?] Sniffing...\n");

    pcap_handle = pcap_open_live(device, 1000, 1, 0, errbuf);

    for(i=0; i < MAX_PACKET_NUM; i++) {
        packet = pcap_next(pcap_handle, &header);
        printf("[!] Captured a %d bytes packet!\n", header.len);
        dump(packet, header.len);
    }
}

它工作正常,但如何将转储输出到文件?我尝试使用文件流,但我真的不知道如何输出函数。如您所见, dump()函数在屏幕上打印输出,也许有输出到文件的函数?请帮帮我吧!

2 个答案:

答案 0 :(得分:3)

您正在寻找fprintf功能。使用fopen打开文件,fprintf写入文件,最后fclose关闭文件。

答案 1 :(得分:0)

如果您的嗅探器在某些版本的UN * X或Windows上从命令行运行,并且它通过使用printf()(而不是{{1)“将输出”打印到屏幕上“然后它真正做的是将其输出打印到“标准输出”。

在这种情况下,您可以在UN * X和Windows上通过将标准输出“重定向”到文件来将输出发送到文件。这将完成

fprintf()