📄 gmain.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 + -