我正在创建一个简单的嗅探器,只是为了好玩,我想将转储输出到文件。这是嗅探器的代码:
#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()函数在屏幕上打印输出,也许有输出到文件的函数?请帮帮我吧!
答案 0 :(得分:3)
您正在寻找fprintf
功能。使用fopen
打开文件,fprintf
写入文件,最后fclose
关闭文件。
答案 1 :(得分:0)
如果您的嗅探器在某些版本的UN * X或Windows上从命令行运行,并且它通过使用printf()
(而不是{{1)“将输出”打印到屏幕上“然后它真正做的是将其输出打印到“标准输出”。
在这种情况下,您可以在UN * X和Windows上通过将标准输出“重定向”到文件来将输出发送到文件。这将完成
fprintf()