⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 catch.c~

📁 在linux下的网络嗅探器 使用的是GTK2.0+GLADE做的前台 具体的后台是ANSI C 编译器 GCC
💻 C~
字号:
/* *autor:tianyongzhen *filename:catch.c *object:get raw packets from your ethernet with your net broadcast *use:libpcap *notice:no use raw socket,for libpcap could give us some rules to fltier packets with bpfs */#include <gtk/gtk.h>#include <glade/glade.h>#include <stdio.h>#include <string.h>#include <pcap.h>#include "catch.h"GtkWidget * textview2 ;char filter_app[1024] ;voidinsert_time_to_textview2 (){   GtkTextBuffer *buffer;   GtkTextIter end;   time_t start ;   char data[30]={0} ;   time(&start) ;   sprintf(data, "%s", ctime(&start));   buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview2)); //textview2是一个gtktextview控件   gtk_text_buffer_get_end_iter(buffer,&end);   gtk_text_buffer_insert(buffer, &end, "\n", -1);   gtk_text_buffer_get_end_iter(buffer,&end);   gtk_text_buffer_insert(buffer, &end, data, -1);}voidinsert_text_to_textview2 (gchar * data){   GtkTextBuffer *buffer;   GtkTextIter end;   buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview2)); //textview2是一个gtktextview控件   gtk_text_buffer_get_end_iter(buffer,&end);   gtk_text_buffer_insert(buffer, &end, data, -1);   gtk_text_buffer_get_end_iter(buffer,&end);   gtk_text_buffer_insert(buffer, &end, "\n", -1);}void catch_packets(void){#ifdef JUSTFORFUN		for(;;)		printf("catch packets\n") ;	char *dev ;	char errbuf[PCAP_ERRBUF_SIZE] ;	pcap_t *descr ;		bpf_u_int32 mask ;	bpf_u_int32 net ;	struct bpf_program fp ;#else	;//do nothing	char *dev ;	char errbuf[PCAP_ERRBUF_SIZE] ;	const unsigned char *data = NULL;	int ret ;	pcap_t *descr ;		bpf_u_int32 mask ;	bpf_u_int32 net ;	struct bpf_program filter ;	struct pcap_pkthdr pkthdr ;		descr = pcap_open_live ( "eth0", 4096, 1,                           512, errbuf );	if(descr == NULL)		perror("open eth0 error!") ;	ret = pcap_lookupnet ( "eth0",&net,&mask, errbuf );	if(ret == -1)		perror("look up net error!") ;	char net_info[500] ;	sprintf(net_info, "Interface: eth0 Net_IP: %s Mask: %s", inet_ntoa(net),inet_ntoa(mask)) ;	read_rules_from_file() ;	set_filter_app() ;	//compile the rules	pcap_compile(descr,&filter,filter_app,1,mask) ;		//pcap_compile(descr,&filter,"",1,mask) ;		pcap_setfilter(descr,&filter) ;	while(1)	{		data = pcap_next(descr,&pkthdr) ;		if(data == NULL){			perror("catch packet error!") ;			exit(0) ;		}		insert_time_to_textview2 () ;		insert_text_to_textview2((gchar *)net_info) ;		//analysis			}#endif}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -