-1

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

#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()函数将输出打印到屏幕上,也许有输出到文件的函数?请帮帮我!

4

2 回答 2

3

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

于 2013-02-24T13:00:26.353 回答
0

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

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

mysniffer {command-line arguments} > {pathname to the file}
于 2013-02-24T19:40:36.873 回答