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

📄 jiemian.c

📁 用C编写的网络入侵检测系统的菜单和按钮等
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <gtk/gtk.h>#include <gdk/gdk.h>#include <gdk/gdkx.h>#include <glib.h>#include <sys/types.h>#include <stdlib.h>#include <string.h>#include <stdio.h>#include <unistd.h>#include <gtk/gtkimcontext.h>#include <gtk/gtkimmodule.h>#include <gdk/gdkkeysyms.h>#include <fcntl.h>#include <gtk/gtkwidget.h>
#include <gtk/gtkhbox.h>
#include <gtk/gtkvbox.h>gint
main (gint argc, gchar *argv[])
{

	//定义一些控件变量。	GtkWidget *window;	gchar *large_kvt_xpm;
	GtkWidget *mnu_1;
	GtkWidget *mnu_2;
	GtkWidget *mnu_3;
	GtkWidget *text;
	GtkWidget *vbox_text;
	GtkWidget *text3;
	GtkWidget *text4;
	GtkWidget *text5;
	GtkWidget *vpaned;
	GtkWidget *vpaned1;
	GtkWidget *menu;
	GtkWidget *menu_bar;
	GtkWidget *root_menu;
	GtkWidget *separator1;
	GtkWidget *menu_items;
	GtkWidget *handlebox1;
	GtkWidget *handlebox2;
	GtkWidget *toolbar2;
	GtkWidget *tmp_toolbar_icon;
	GtkAccelGroup *accel_group;
	GtkWidget *pixmapwid;
	GdkPixmap *pixmap;
	GdkBitmap *mask;
	GtkStyle *style;
	GtkWidget *button;
	GtkWidget *box_xpm;
	GtkWidget *vbox, *listvbox;
	GtkWidget *hbox;
	GtkWidget *buttons_hbox;
	GtkWidget *vscrollbar;
	GtkTooltips *tooltips;
	GtkWidget *showcount_label;
	GtkWidget *label;
	GtkWidget *baojinlabel;
	GtkWidget *separator;
	GdkPixmap *icon_pixmap;
	GdkBitmap *icon_mask;
	GtkWidget *notebook;
	GtkWidget *text_notebook;
	GtkWidget *text_scrolledwindow;
	GtkWidget *frame;
	GtkWidget *scrolled_window;
	GtkWidget *clist;
	GtkWidget *clist1;
	GtkWidget *clist2;
	GtkWidget *clist3;
	GtkWidget *clist4;
	GtkWidget *clist5;
	GtkWidget *clist6;
	GtkWidget *clist_event;
	GtkWidget *button_add, *button_clear, *button_hide_show;
	gchar *titles_arp[11]={"number","Hardware type","Protocol","hln","plen","Operation","Source Hardware","Source Ip","Destination Hardware","Destination Ip","Information"};
	gchar *titles_ip[12]={"number","version","header_length","tos","total_length","id","off","ttl","protocol","checksum","source_ip","destination_ip"};
	gchar *titles_tcp[12]={"number","snort","dport","seq","ack","doff","flags","win","cksm","urp","tcp_options","information"};
	gchar *titles_udp[5]={"number","sport","dport","len","cksum"};
	g_thread_init(NULL);
	gtk_init(&argc,&argv);
	//gtk初始化
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_widget_set_usize(GTK_WIDGET(window),790,580);
	gtk_window_set_title(GTK_WINDOW(window),"Network Instrusion Detection System");
	gtk_widget_realize(window);
	icon_pixmap=gdk_pixmap_create_from_xpm_d(window->window,&icon_mask,&window->style->bg[GTK_STATE_NORMAL],large_kvt_xpm);
	gdk_window_set_icon(window->window,NULL,icon_pixmap,icon_mask);
	gdk_window_set_icon_name(window->window,"NIDS");	vbox=gtk_vbox_new(FALSE,0);	//========================创建菜单条控件========================//	menu_bar=gtk_menu_bar_new();	//=======================创建File Operation菜单================//
	menu=gtk_menu_new();	root_menu=gtk_menu_item_new_with_label("File Operation");	gtk_widget_show(root_menu);	menu_items=gtk_menu_item_new();	box_xpm=xpm_label_box(window,"./xpm/open.xpm","Open(.bpf)");	gtk_widget_show(box_xpm);	gtk_container_add(GTK_CONTAINER(menu_items),box_xpm);	gtk_signal_connect(GTK_OBJECT(menu_items),"activate",GTK_SIGNAL_FUNC(set_readfile_callback),NULL);	//设置回调函数set_readfile_callback(),其功能是设置读取的默认文件
	

	
	handlebox1=gtk_handle_box_new();
	gtk_object_set_data(GTK_OBJECT(window),"handlebox1",handlebox1);
	gtk_widget_show(handlebox1);
	gtk_box_pack_start(GTK_BOX(vbox),handlebox1,FALSE,TRUE,0);
	gtk_container_add(GTK_CONTAINER(handlebox1),menu_bar);
	gtk_widget_show(menu_bar);
	//=================创建工具栏控件toolbar==================//
	accel_group=gtk_accel_group_new();
	gtk_window_add_accel_group(GTK_WINDOW(window),accel_group);
	handlebox2=gtk_handle_box_new();
	gtk_object_set_data(GTK_OBJECT(window),"handlebox2",handlebox2);
	gtk_widget_show(handlebox2);
	gtk_box_pack_start(GTK_BOX(vbox),handlebox2,FALSE,TRUE,0);
	toolbar2=gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL,GTK_TOOLBAR_BOTH);
	gtk_object_set_data(GTK_OBJECT(window),"toolbar2",toolbar2);
	gtk_widget_show(toolbar2);
	gtk_container_add(GTK_CONTAINER(handlebox2),toolbar2);
	tmp_toolbar_icon=create_pixmap(window,"allow.xpm");
	if(tmp_toolbar_icon==NULL)
	g_error("Couldn't create pixmap");
	button=gtk_toolbar_append_element(GTK_TOOLBAR(toolbar2),GTK_TOOLBAR_CHILD_BUTTON,NULL,"Start","Allow any host",NULL,tmp_toolbar_icon,NULL,NULL);
	gtk_widget_show(button);
	gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(threads_click),NULL);
	//设置回调函数threads_click(),其功能是开始系统运行,系统入口函数

	gtk_widget_add_accelerator(button,"clicked",accel_group,GDK_D,GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE);
	tmp_toolbar_icon=create_pixmap(window,"refresh.xpm");
	if(tmp_toolbar_icon==NULL)
	g_error("Couldn't create pixmap");
	button=gtk_toolbar_append_element(GTK_TOOLBAR(toolbar2),GTK_TOOLBAR_CHILD_BUTTON,NULL,"Refresh","Refresh allowed hosts",NULL,tmp_toolbar_icon,NULL,NULL);
	gtk_widget_show(button);
	gtk_widget_add_accelerator(button,"clicked",accel_group,GDK_R,GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE);
	tmp_toolbar_icon=create_pixmap(window,"clear.xpm");
	if(tmp_toolbar_icon==NULL)
	g_error("Couldn't create pixmap");
	button=gtk_toolbar_append_element(GTK_TOOLBAR(toolbar2),GTK_TOOLBAR_CHILD_BUTTON,NULL,"Clear","Help",NULL,tmp_toolbar_icon,NULL,NULL);
	gtk_widget_show(button);
	gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(button_clear_clicked),NULL);
	//设置回调函数button_clear_clicked(),其功能是清除页面内容
	gtk_widget_add_accelerator(button,"clicked",accel_group,GDK_H,GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE);
	tmp_toolbar_icon=create_pixmap(window,"stop_alert.xpm");
	if(tmp_toolbar_icon==NULL)
	g_error("Couldn't create pixmap");
	button=gtk_toolbar_append_element(GTK_TOOLBAR(toolbar2),GTK_TOOLBAR_CHILD_BUTTON,NULL,"Stop Alert","Stop the Alert",NULL,tmp_toolbar_icon,NULL,NULL);
	gtk_widget_show(button);
	gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(stop_alert),NULL);
	//设置回调函数stop_alert(),其功能是停止事件响应方式
	gtk_widget_add_accelerator(button,"clicked",accel_group,GDK_S,GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE);
	tmp_toolbar_icon=create_pixmap(window,"help.xpm");
	if(tmp_toolbar_icon==NULL)
	g_error("Couldn't create pixmap");
	button=gtk_toolbar_append_element(GTK_TOOLBAR(toolbar2),GTK_TOOLBAR_CHILD_BUTTON,NULL,"Help","Help",NULL,tmp_toolbar_icon,NULL,NULL);
	gtk_widget_show(button);
	gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(on_help_about_menubar_activate),NULL);
	//设置回调函数on_help_about_menubar_activate(),其功能是显示帮助对话窗口
	gtk_widget_add_accelerator(button,"clicked",accel_group,GDK_H,GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE);
	tmp_toolbar_icon=create_pixmap(window,"exit.xpm");
	if(tmp_toolbar_icon==NULL)
	g_error("Couldn't create pixmap");
	button=gtk_toolbar_append_element(GTK_TOOLBAR(toolbar2),GTK_TOOLBAR_CHILD_BUTTON,NULL,"Exit","Quit this program",NULL,tmp_toolbar_icon,NULL,NULL);
	gtk_widget_show(button);
	gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(destroy),NULL);
	//设置回调函数destroy(),其功能是销毁窗口,退出程序
	gtk_widget_add_accelerator(button,"clicked",accel_group,GDK_Q,GDK_CONTROL_MASK,GTK_ACCEL_VISIBLE);
	gtk_widget_add_accelerator(button,"clicked",accel_group,GDK_X,GDK_MOD1_MASK,GTK_ACCEL_VISIBLE);
	//=======================创建面板控件=============================//	        vpaned=gtk_vpaned_new();	gtk_box_pack_start(GTK_BOX(vbox),vpaned,TRUE,TRUE,0);	gtk_paned_set_handle_size(GTK_PANED(vpaned),10);	gtk_paned_set_gutter_size(GTK_PANED(vpaned),15);	gtk_widget_show(vpaned);	//=======================创建记事本控件notebook===================//	notebook=gtk_notebook_new();	gtk_object_set_data(GTK_OBJECT(window),"notebook",notebook);	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook),GTK_POS_BOTTOM);	gtk_paned_add1(GTK_PANED(vpaned),notebook);	gtk_widget_show(notebook);	//=======================创建显示捕获信息的页面控件==================//	listvbox=gtk_vbox_new(FALSE,0);	label=gtk_label_new("   sniffer   ");	gtk_widget_show(label);	gtk_notebook_append_page(GTK_NOTEBOOK(notebook),listvbox,label);	gtk_widget_show(listvbox);	scrolled_window=gtk_scrolled_window_new(NULL,NULL);	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),GTK_POLICY_AUTOMATIC,GTK_POLICY_ALWAYS);	gtk_box_pack_start(GTK_BOX(listvbox),scrolled_window,TRUE,TRUE,0);	gtk_widget_show(scrolled_window);	clist=gtk_clist_new(9);	gtk_object_set_data(GTK_OBJECT(window),"clist",clist);	gtk_clist_set_column_title(GTK_CLIST(clist),0,"Packet Id");	gtk_clist_set_column_title(GTK_CLIST(clist),1,"Time");	gtk_clist_set_column_title(GTK_CLIST(clist),2,"Source Hardware");	gtk_clist_set_column_title(GTK_CLIST(clist),3,"Destination Hardware");	gtk_clist_set_column_title(GTK_CLIST(clist),4,"Source Ip");	gtk_clist_set_column_title(GTK_CLIST(clist),5,"Destination Ip");	gtk_clist_set_column_title(GTK_CLIST(clist),6,"Source Port");	gtk_clist_set_column_title(GTK_CLIST(clist),7,"Destination Port");	gtk_clist_set_column_title(GTK_CLIST(clist),8,"Ethernet Type");	gtk_clist_column_titles_show(GTK_CLIST(clist));	gtk_widget_ref(clist);	gtk_object_set_data_full(GTK_OBJECT(window),"clist",clist,(GtkDestroyNotify)gtk_widget_unref);	gtk_signal_connect(GTK_OBJECT(clist),"select_row",GTK_SIGNAL_FUNC(selection_made),NULL);	//设置回调函数selection_made()	gtk_clist_set_shadow_type(GTK_CLIST(clist),GTK_SHADOW_IN);	gtk_clist_set_column_width(GTK_CLIST(clist),0,40);	gtk_clist_set_column_width(GTK_CLIST(clist),1,130);	gtk_clist_set_column_width(GTK_CLIST(clist),2,120);	gtk_clist_set_column_width(GTK_CLIST(clist),3,120);	gtk_clist_set_column_width(GTK_CLIST(clist),4,120);	gtk_clist_set_column_width(GTK_CLIST(clist),5,120);	gtk_clist_set_column_width(GTK_CLIST(clist),6,120);	gtk_clist_set_column_width(GTK_CLIST(clist),7,120);

⌨️ 快捷键说明

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