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

📄 gmain.c

📁 在linux下的网络嗅探器 使用的是GTK2.0+GLADE做的前台 具体的后台是ANSI C 编译器 GCC
💻 C
字号:
#include <gtk/gtk.h>
void set_readfile_callback();void connect_database() ;void show_rules_window() ;void setting_sniffer_clicked() ;void clear_all() ;void get_device_callback() ;void set_filter_callback();
gint main(gint argc, gchar *argv[])
{
	//定义一些控件变量
	//GtkWidget为一般控件	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","Infomation"} ;
	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","sport","dport","seq","ack","doff",
							"flags","win","cksm","urp","tcp_operations","information"} ;
	gchar *titles_udp[5]={"number","sport","dport","len","cksum"} ;
	//初始化GTK
	g_thread_init(NULL) ; 
	gtk_init(&argc,&argv) ;
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL) ;
	gtk_widget_set_usize(GTK_WIDGET(window),790,580) ;
	gtk_window_set_title(GTK_WINDOW(window),"Sniffer For Linux System 0.0.1 [ Design By Tian Yongzhen ] ") ;
	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);
	gtk_window_set_icon_name(window->window,"INFO") ;
	vbox = gtk_vbox_new(FALSE,0) ;

	//====================================创建菜单条控件==========================================//
	menu_bar = gtk_menu_bar_new() ;

	//====================================创建FILE_OPTION控件=====================================//
	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,NULL,"Open(.bpf)") ;
	gtk_widget_show(box_xpm) ;
	gtk_container_add(GTK_CONTAINER(menu_items),box_xpm) ;
	//回调函数set_readfile_callback,处理文件的打开
	gtk_signal_connect(GTK_OBJECT(menu_items),"activate",GTK_SIGNAL_FUNC(set_readfile_callback),NULL) ;
	gtk_menu_append(GTK_MENU(menu),menu_items) ;
	gtk_widget_show(menu_items) ;


	separator1 = gtk_menu_item_new() ;
	gtk_widget_show(separator1) ;
	gtk_menu_append(GTK_MENU(menu),separator1) ;
	
	//其他的下拉菜单项


	gtk_menu_item_set_submenu(GTK_MENU_ITEM(root_menu),menu) ;
	gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),root_menu) ;

	//====================================创建ANALYSIS控件=====================================//
	menu = gtk_menu_new() ;
	root_menu = gtk_menu_item_new_with_label("Analysis") ;
	gtk_widget_show(root_menu) ;

	//开始编辑下拉菜单项
	menu_items = gtk_menu_item_new() ;
	box_xpm = xpm_label_box(window,NULL,"Connecting Database") ;
	gtk_widget_show(box_xpm) ;
	gtk_container_add(GTK_CONTAINER(menu_items),box_xpm) ;
	//函数gtk_object_set_data是做什么的?
	gtk_object_set_data(GTK_OBJECT(window),"menu_connect-database",menu_items) ;
	//回调函数set_readfile_callback,处理文件的打开
	gtk_signal_connect(GTK_OBJECT(menu_items),"activate",GTK_SIGNAL_FUNC(connect_database),NULL) ;
	gtk_menu_append(GTK_MENU(menu),menu_items) ;
	gtk_widget_show(menu_items) ;

	
	//其他的下拉菜单项


	gtk_menu_item_set_submenu(GTK_MENU_ITEM(root_menu),menu) ;
	gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),root_menu) ;

	//====================================创建POLICY控件=====================================//
	menu = gtk_menu_new() ;
	root_menu = gtk_menu_item_new_with_label("Policy") ;
	gtk_widget_show(root_menu) ;

	//开始编辑下拉菜单项
	menu_items = gtk_menu_item_new() ;
	box_xpm = xpm_label_box(window,NULL,"Rules") ;
	gtk_widget_show(box_xpm) ;
	gtk_container_add(GTK_CONTAINER(menu_items),box_xpm) ;
	
	//回调函数set_readfile_callback,处理文件的打开
	gtk_signal_connect(GTK_OBJECT(menu_items),"activate",GTK_SIGNAL_FUNC(show_rules_window),NULL) ;
	gtk_menu_append(GTK_MENU(menu),menu_items) ;
	gtk_widget_show(menu_items) ;

	
	//其他的下拉菜单项


	gtk_menu_item_set_submenu(GTK_MENU_ITEM(root_menu),menu) ;
	gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),root_menu) ;

	//====================================创建SETTING控件=====================================//
	menu = gtk_menu_new() ;
	root_menu = gtk_menu_item_new_with_label("Setting") ;
	gtk_widget_show(root_menu) ;

	//开始编辑下拉菜单项
	menu_items = gtk_menu_item_new() ;
	box_xpm = xpm_label_box(window,NULL,"Setting Sniffer") ;
	gtk_widget_show(box_xpm) ;
	gtk_container_add(GTK_CONTAINER(menu_items),box_xpm) ;
	
	//回调函数setting_sniffer_clicked,设置捕获数据报的个数等。
	gtk_signal_connect(GTK_OBJECT(menu_items),"activate",GTK_SIGNAL_FUNC(setting_sniffer_clicked),NULL) ;
	gtk_menu_append(GTK_MENU(menu),menu_items) ;
	gtk_widget_show(menu_items) ;

	
	//下拉菜单项,清除所有页面信息
	menu_items = gtk_menu_item_new() ;
	box_xpm = xpm_label_box(window,NULL,"Clear All") ;
	gtk_widget_show(box_xpm) ;
	gtk_container_add(GTK_CONTAINER(menu_items),box_xpm) ;
	
	//回调函数clear_all(),设置捕获数据报的个数等。
	gtk_signal_connect(GTK_OBJECT(menu_items),"activate",GTK_SIGNAL_FUNC(clear_all),NULL) ;
	gtk_menu_append(GTK_MENU(menu),menu_items) ;
	gtk_widget_show(menu_items) ;


	//其他的下拉菜单项


	gtk_menu_item_set_submenu(GTK_MENU_ITEM(root_menu),menu) ;
	gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),root_menu) ;

	//====================================创建SNIFFER控件=====================================//
	menu = gtk_menu_new() ;
	root_menu = gtk_menu_item_new_with_label("Sniffer") ;
	gtk_widget_show(root_menu) ;

	//开始编辑下拉菜单项
	menu_items = gtk_menu_item_new() ;
	box_xpm = xpm_label_box(window,NULL,"Get Device") ;
	gtk_widget_show(box_xpm) ;
	gtk_container_add(GTK_CONTAINER(menu_items),box_xpm) ;
	
	//回调函数get_device_callback,获取网络设备
	gtk_signal_connect(GTK_OBJECT(menu_items),"activate",GTK_SIGNAL_FUNC(get_device_callback),NULL) ;
	gtk_menu_append(GTK_MENU(menu),menu_items) ;
	gtk_widget_show(menu_items) ;

	//设置过滤规则的菜单
	menu_items = gtk_menu_item_new() ;
	box_xpm = xpm_label_box(window,NULL,"Set Filter") ;
	gtk_widget_show(box_xpm) ;
	gtk_container_add(GTK_CONTAINER(menu_items),box_xpm) ;
	
	//回调函数set_filter_callback,设置过滤规则
	gtk_signal_connect(GTK_OBJECT(menu_items),"activate",GTK_SIGNAL_FUNC(set_filter_callback),NULL) ;
	gtk_menu_append(GTK_MENU(menu),menu_items) ;
	gtk_widget_show(menu_items) ;
	separator1 = gtk_menu_item_new() ;
	gtk_widget_show(separator1) ;
	gtk_menu_append(GTK_MENU(menu),separator1) ;
	//其他的下拉菜单项
	

	gtk_menu_item_set_submenu(GTK_MENU_ITEM(root_menu),menu) ;
	gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),root_menu) ;

	return 0;
}






























⌨️ 快捷键说明

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