将嗅探器的转储输出到C语言中的外部文件
我创建了一个简单的嗅探器,只是为了好玩,我想将转储输出到一个文件中。以下是嗅探器的代码:将嗅探器的转储输出到C语言中的外部文件,c,pcap,sniffer,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;
#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);
}
}
#包括
#包括
#定义最大数据包数5
内部主(空){
结构pcap_pkthdr头;
const u_char*数据包;
字符errbuf[PCAP_errbuf_SIZE];
字符*设备;
pcap_t*pcap_手柄;
int i;
printf(“##正在嗅探:%s###\n”,设备);
printf(“此会话的最大数据包数:%d\n”,最大数据包数);
printf(“[?]嗅探…\n”);
pcap_handle=pcap_open_live(设备,1000,1,0,errbuf);
对于(i=0;i
它工作正常,但如何将转储输出到文件?我尝试使用文件流,但我真的不知道如何输出函数。如您所见,dump()函数在屏幕上打印输出,可能有一个函数要输出到文件?请帮帮我,伙计们 您正在寻找
fprintf
函数。使用fopen
打开文件,使用fprintf
写入文件,最后使用fclose
关闭文件。如果您的嗅探器在某些版本的UN*X或Windows上从命令行运行,并且它通过使用例如printf()
(而不是fprintf()
)将输出打印到屏幕上,那么它真正做的是将其输出打印到“标准输出”
在这种情况下,您可以在UN*X和Windows上通过将标准输出“重定向”到文件来将输出发送到文件;这将通过以下方式完成:
mysniffer {command-line arguments} > {pathname to the file}
您想将二进制数据写入文件,还是写入某种文本表示形式(例如十六进制转储)?我想编写十六进制转储是的,我尝试过这些,但如何使用它们编写函数?它们只接受字符串或数字作为参数,我不知道如何将转储存储在字符串中…@jndok您只需在程序中用
fprintf
调用替换printf
调用即可。