home *** CD-ROM | disk | FTP | other *** search
Wrap
/* Author: Zach * Mail: key@aye.net * IRC: EFNet as zach` or key in #bastards or #neatoelito * AIM (Aol): GoldMatrix * * Change the source as you wish, but leave these comments.. * * Long live Aol and pr: Phreak. <grins> */ #if MISSING_GTK #error "Your system does not appear to have GTK (www.gtk.org) installed. Thus the Nmap X Front End will not compile. You should still be able to use Nmap the normal way (via text console). GUIs are for wimps anyway :)" #else #include <gtk/gtk.h> #include <gdk/gdkkeysyms.h> #include <unistd.h> #include <stdio.h> #include "nmapfe.h" #include "nmapfe_sig.h" /* Keep this global */ int our_uid; struct MyWidgets *MW; int view_type = 1; GtkWidget* get_widget (GtkWidget *widget, gchar *widget_name) { GtkWidget *found_widget; if (widget->parent) widget = gtk_widget_get_toplevel (widget); found_widget = (GtkWidget*) gtk_object_get_data (GTK_OBJECT (widget), widget_name); if (!found_widget) g_warning ("Widget not found: %s", widget_name); return found_widget; } /* This is an internally used function to set notebook tab widgets. */ void set_notebook_tab (GtkWidget *notebook, gint page_num, GtkWidget *widget) { GtkNotebookPage *page; GtkWidget *notebook_page; page = (GtkNotebookPage*) g_list_nth (GTK_NOTEBOOK (notebook)->children, page_num)->data; notebook_page = page->child; gtk_widget_ref (notebook_page); gtk_notebook_remove_page (GTK_NOTEBOOK (notebook), page_num); gtk_notebook_insert_page (GTK_NOTEBOOK (notebook), notebook_page, widget, page_num); gtk_widget_unref (notebook_page); } GtkWidget* create_main_win () { GtkWidget *main_win; GtkWidget *fixed1; GSList *fixed1_group = NULL; GSList *ping_group = NULL; GtkWidget *vscroll; GtkWidget *exit_me; GtkWidget *hseparator2; GtkWidget *label2; GtkWidget *menubar1; GtkWidget *File; GtkWidget *menu5; /*New for 1.0*/ GtkWidget *view_m; GtkWidget *View_Main; GtkWidget *Trad; GtkWidget *CTrad; /*GtkWidget *Tree;*/ GtkWidget *machine; GtkWidget *extra; GtkWidget *extra_menu; /*End new*/ GtkWidget *Save_Log; GtkWidget *Open_Log; GtkWidget *separator1; GtkWidget *Close; GtkWidget *Help_Main; GtkWidget *menu6; GtkWidget *menu7; GtkWidget *hbox1; GtkWidget *Help; GtkWidget *Other; GtkWidget *Get_Nmap_Version; GtkWidget *separator2; GtkWidget *About; GtkWidget *vseparator1; GtkWidget *hseparator1; GtkWidget *label3; GtkWidget *vbox2; GtkWidget *label1; char title[256]; our_uid = getuid(); main_win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_object_set_data (GTK_OBJECT (main_win), "main_win", main_win); /* Need to integrate with nmapfe so I can use snprintf() */ sprintf(title, "Nmap Front End v%s", VERSION); gtk_window_set_title (GTK_WINDOW (main_win), title); gtk_window_position (GTK_WINDOW (main_win), GTK_WIN_POS_CENTER); vbox2 = gtk_vbox_new (FALSE, 0); gtk_object_set_data (GTK_OBJECT (main_win), "vbox2", vbox2); gtk_widget_show (vbox2); gtk_container_add (GTK_CONTAINER (main_win), vbox2); fixed1 = gtk_fixed_new (); gtk_object_set_data (GTK_OBJECT (main_win), "fixed1", fixed1); gtk_widget_show (fixed1); gtk_box_pack_start (GTK_BOX (vbox2), fixed1, FALSE, TRUE, 0); gtk_widget_set_usize (fixed1, -2, 233); hbox1 = gtk_hbox_new (FALSE, 0); gtk_object_set_data (GTK_OBJECT (main_win), "hbox1", hbox1); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox2), hbox1, TRUE, TRUE, 0); MW->output = gtk_text_new (NULL, NULL); gtk_object_set_data (GTK_OBJECT (main_win), "output", MW->output); gtk_widget_show (MW->output); gtk_box_pack_start (GTK_BOX (hbox1), MW->output, TRUE, TRUE, 0); gtk_text_set_word_wrap(GTK_TEXT(MW->output), 1); gtk_widget_set_usize (MW->output, 464, 248); gtk_widget_realize (MW->output); vscroll = gtk_vscrollbar_new (GTK_TEXT (MW->output)->vadj); gtk_object_set_data (GTK_OBJECT (main_win), "vscroll", vscroll); gtk_widget_show (vscroll); gtk_box_pack_end (GTK_BOX (hbox1), vscroll, FALSE, FALSE, 0); MW->host_text = gtk_entry_new (); gtk_object_set_data (GTK_OBJECT (main_win), "host_text", MW->host_text); gtk_widget_show (MW->host_text); gtk_fixed_put (GTK_FIXED (fixed1), MW->host_text, 56, 32); gtk_widget_set_usize (MW->host_text, 272, 22); GTK_WIDGET_SET_FLAGS (MW->host_text, GTK_CAN_DEFAULT); gtk_widget_grab_focus (MW->host_text); gtk_widget_grab_default (MW->host_text); gtk_entry_set_text (GTK_ENTRY (MW->host_text), "127.0.0.1"); gtk_signal_connect(GTK_OBJECT(MW->host_text), "changed", GTK_SIGNAL_FUNC(display_nmap_command_callback), NULL); MW->connect_scan = gtk_radio_button_new_with_label (fixed1_group, "connect()"); fixed1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (MW->connect_scan)); gtk_object_set_data (GTK_OBJECT (main_win), "connect", MW->connect_scan); gtk_widget_show (MW->connect_scan); gtk_fixed_put (GTK_FIXED (fixed1), MW->connect_scan, 8, 84); gtk_signal_connect(GTK_OBJECT(MW->connect_scan), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); gtk_widget_set_usize (MW->connect_scan, 104, 19); if(our_uid == 0) { MW->syn_scan = gtk_radio_button_new_with_label (fixed1_group, "SYN Stealth"); fixed1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (MW->syn_scan)); gtk_object_set_data (GTK_OBJECT (main_win), "syn", MW->syn_scan); gtk_widget_show (MW->syn_scan); gtk_fixed_put (GTK_FIXED (fixed1), MW->syn_scan, 8, 101); gtk_signal_connect(GTK_OBJECT(MW->syn_scan), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); gtk_widget_set_usize (MW->syn_scan, 104, 19); gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (MW->syn_scan), TRUE); } /* end uid check */ MW->ping_scan = gtk_radio_button_new_with_label (fixed1_group, "Ping Sweep"); fixed1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (MW->ping_scan)); gtk_object_set_data (GTK_OBJECT (main_win), "ping", MW->ping_scan); gtk_widget_show (MW->ping_scan); gtk_fixed_put (GTK_FIXED (fixed1), MW->ping_scan, 8, 118); gtk_signal_connect(GTK_OBJECT(MW->ping_scan), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); gtk_widget_set_usize (MW->ping_scan, 104, 19); if (our_uid == 0){ MW->udp_scan = gtk_radio_button_new_with_label (fixed1_group, "UDP Port Scan"); fixed1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (MW->udp_scan)); gtk_object_set_data (GTK_OBJECT (main_win), "udp", MW->udp_scan); gtk_widget_show (MW->udp_scan); gtk_fixed_put (GTK_FIXED (fixed1), MW->udp_scan, 8, 136); gtk_signal_connect(GTK_OBJECT(MW->udp_scan), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); gtk_widget_set_usize (MW->udp_scan, 104, 17); MW->fin_scan = gtk_radio_button_new_with_label (fixed1_group, "FIN Stealth"); fixed1_group = gtk_radio_button_group (GTK_RADIO_BUTTON (MW->fin_scan)); gtk_object_set_data (GTK_OBJECT (main_win), "fin", MW->fin_scan); gtk_widget_show (MW->fin_scan); gtk_fixed_put (GTK_FIXED (fixed1), MW->fin_scan, 8, 152); gtk_signal_connect(GTK_OBJECT(MW->fin_scan), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); gtk_widget_set_usize (MW->fin_scan, 104, 19); } /*end uid check*/ MW->resolve_check = gtk_check_button_new_with_label ("Don't Resolve"); gtk_object_set_data (GTK_OBJECT (main_win), "resolve_check", MW->resolve_check); gtk_widget_show (MW->resolve_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->resolve_check, 136, 80); gtk_widget_set_usize (MW->resolve_check, 104, 24); gtk_signal_connect(GTK_OBJECT(MW->resolve_check), "released", GTK_SIGNAL_FUNC(display_nmap_command_callback), NULL); MW->fast_check = gtk_check_button_new_with_label ("Fast Scan"); gtk_object_set_data (GTK_OBJECT (main_win), "fast_check", MW->fast_check); gtk_widget_show (MW->fast_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->fast_check, 136, 104); gtk_widget_set_usize (MW->fast_check, 104, 24); gtk_signal_connect(GTK_OBJECT(MW->fast_check), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); MW->range_check = gtk_check_button_new_with_label ("Range of Ports:"); gtk_object_set_data (GTK_OBJECT (main_win), "range_check", MW->range_check); gtk_widget_show (MW->range_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->range_check, 136, 128); gtk_widget_set_usize (MW->range_check, 104, 24); gtk_signal_connect(GTK_OBJECT(MW->range_check), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); MW->range_text = gtk_entry_new (); gtk_object_set_data (GTK_OBJECT (main_win), "range_text", MW->range_text); gtk_widget_show (MW->range_text); gtk_fixed_put (GTK_FIXED (fixed1), MW->range_text, 136, 152); gtk_widget_set_usize (MW->range_text, 104, 21); gtk_signal_connect (GTK_OBJECT(MW->range_text), "changed", GTK_SIGNAL_FUNC(entry_toggle_checkbox), MW->range_check); MW->decoy_check = gtk_check_button_new_with_label ("Use Decoy(s):"); gtk_object_set_data (GTK_OBJECT (main_win), "decoy_check", MW->decoy_check); if (our_uid == 0) gtk_widget_show (MW->decoy_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->decoy_check, 136, 175); gtk_widget_set_usize (MW->decoy_check, 104, 16); gtk_signal_connect(GTK_OBJECT(MW->decoy_check), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); MW->decoy_text = gtk_entry_new (); gtk_object_set_data (GTK_OBJECT (main_win), "decoy_text", MW->decoy_text); if (our_uid == 0) gtk_widget_show (MW->decoy_text); gtk_fixed_put (GTK_FIXED (fixed1), MW->decoy_text, 136, 192); gtk_widget_set_usize (MW->decoy_text, 104, 21); gtk_signal_connect (GTK_OBJECT(MW->decoy_text), "changed", GTK_SIGNAL_FUNC(entry_toggle_checkbox), MW->decoy_check); MW->tcp_check = gtk_radio_button_new_with_label (ping_group, "TCP Ping"); ping_group = gtk_radio_button_group (GTK_RADIO_BUTTON (MW->tcp_check)); gtk_object_set_data (GTK_OBJECT (main_win), "tcp_check", MW->tcp_check); gtk_widget_show (MW->tcp_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->tcp_check, 248, 80); gtk_widget_set_usize (MW->tcp_check, 99, 24); gtk_signal_connect(GTK_OBJECT(MW->tcp_check), "released", GTK_SIGNAL_FUNC(display_nmap_command_callback), NULL); MW->icmp_check = gtk_radio_button_new_with_label (ping_group, "ICMP Ping"); ping_group = gtk_radio_button_group (GTK_RADIO_BUTTON (MW->icmp_check)); gtk_object_set_data (GTK_OBJECT (main_win), "icmp_check", MW->icmp_check); if(our_uid == 0) gtk_widget_show (MW->icmp_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->icmp_check, 248, 128); gtk_widget_set_usize (MW->icmp_check, 99, 24); gtk_signal_connect(GTK_OBJECT(MW->icmp_check), "released", GTK_SIGNAL_FUNC(display_nmap_command_callback), NULL); MW->tcpicmp_check = gtk_radio_button_new_with_label (ping_group, "TCP&ICMP"); ping_group = gtk_radio_button_group (GTK_RADIO_BUTTON (MW->tcpicmp_check)); gtk_object_set_data (GTK_OBJECT (main_win), "tcpicmp_check", MW->tcpicmp_check); if(our_uid == 0){ gtk_widget_show (MW->tcpicmp_check); /* gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(MW->tcpicmp_check), 1);*/ gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(MW->tcpicmp_check), TRUE); } gtk_fixed_put (GTK_FIXED (fixed1), MW->tcpicmp_check, 248, 104); gtk_widget_set_usize (MW->tcpicmp_check, 99, 24); gtk_signal_connect(GTK_OBJECT(MW->tcpicmp_check), "released", GTK_SIGNAL_FUNC(display_nmap_command_callback), NULL); MW->ping_check = gtk_radio_button_new_with_label (ping_group, "Don't Ping"); ping_group = gtk_radio_button_group (GTK_RADIO_BUTTON (MW->ping_check)); gtk_object_set_data (GTK_OBJECT (main_win), "ping_check", MW->ping_check); gtk_widget_show (MW->ping_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->ping_check, 248, 150); gtk_widget_set_usize (MW->ping_check, 99, 24); gtk_signal_connect(GTK_OBJECT(MW->ping_check), "released", GTK_SIGNAL_FUNC(display_nmap_command_callback), NULL); MW->input_check = gtk_check_button_new_with_label ("Input File:"); gtk_object_set_data (GTK_OBJECT (main_win), "input_check", MW->input_check); gtk_widget_show (MW->input_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->input_check, 248, 175); gtk_widget_set_usize (MW->input_check, 99, 16); gtk_signal_connect(GTK_OBJECT(MW->input_check), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); MW->input_text = gtk_entry_new (); gtk_object_set_data (GTK_OBJECT (main_win), "input_text", MW->input_text); gtk_widget_show (MW->input_text); gtk_fixed_put (GTK_FIXED (fixed1), MW->input_text, 248, 192); gtk_widget_set_usize (MW->input_text, 96, 21); gtk_signal_connect (GTK_OBJECT(MW->input_text), "changed", GTK_SIGNAL_FUNC(entry_toggle_checkbox), MW->input_check); MW->fragment_check = gtk_check_button_new_with_label ("Fragmentation"); gtk_object_set_data (GTK_OBJECT (main_win), "fragment_check", MW->fragment_check); if(our_uid == 0) gtk_widget_show (MW->fragment_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->fragment_check, 352, 80); gtk_widget_set_usize (MW->fragment_check, 112, 24); gtk_signal_connect(GTK_OBJECT(MW->fragment_check), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); MW->identd_check = gtk_check_button_new_with_label ("Get Identd Info"); gtk_object_set_data (GTK_OBJECT (main_win), "identd_check", MW->identd_check); gtk_widget_show (MW->identd_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->identd_check, 352, 104); gtk_widget_set_usize (MW->identd_check, 112, 24); gtk_signal_connect(GTK_OBJECT(MW->identd_check), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); MW->resolveall_check = gtk_check_button_new_with_label ("Resolve All"); gtk_object_set_data (GTK_OBJECT (main_win), "resolveall_check", MW->resolveall_check); gtk_widget_show (MW->resolveall_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->resolveall_check, 352, 128); gtk_widget_set_usize (MW->resolveall_check, 112, 24); gtk_signal_connect(GTK_OBJECT(MW->resolveall_check), "released", GTK_SIGNAL_FUNC(display_nmap_command_callback), NULL); MW->fingerprinting_check = gtk_check_button_new_with_label ("OS Detection"); gtk_object_set_data (GTK_OBJECT (main_win), "fingerprinting_check", MW->fingerprinting_check); if(our_uid == 0){ gtk_widget_show (MW->fingerprinting_check); /* gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(MW->fingerprinting_check), 1);*/ gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(MW->fingerprinting_check), TRUE); } gtk_fixed_put (GTK_FIXED (fixed1), MW->fingerprinting_check, 352, 150); gtk_widget_set_usize (MW->fingerprinting_check, 112, 24); gtk_signal_connect(GTK_OBJECT(MW->fingerprinting_check), "released", GTK_SIGNAL_FUNC(display_nmap_command_callback), NULL); MW->device_check = gtk_check_button_new_with_label ("Send on Device:"); gtk_object_set_data (GTK_OBJECT (main_win), "device_check", MW->device_check); if (our_uid == 0) gtk_widget_show (MW->device_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->device_check, 352, 175); gtk_widget_set_usize (MW->device_check, 112, 17); gtk_signal_connect(GTK_OBJECT(MW->device_check), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); MW->device_text = gtk_entry_new (); gtk_object_set_data (GTK_OBJECT (main_win), "device_text", MW->device_text); if (our_uid == 0) gtk_widget_show (MW->device_text); gtk_fixed_put (GTK_FIXED (fixed1), MW->device_text, 352, 192); gtk_widget_set_usize (MW->device_text, 112, 21); gtk_signal_connect (GTK_OBJECT(MW->device_text), "changed", GTK_SIGNAL_FUNC(entry_toggle_checkbox), MW->device_check); MW->start_scan = gtk_toggle_button_new_with_label("Scan."); gtk_object_set_data (GTK_OBJECT (main_win), "start_scan", MW->start_scan); gtk_widget_show (MW->start_scan); gtk_fixed_put (GTK_FIXED (fixed1), MW->start_scan, 344, 32); gtk_widget_set_usize (MW->start_scan, 72, 24); gtk_signal_connect (GTK_OBJECT (MW->start_scan), "toggled", GTK_SIGNAL_FUNC (on_start_scan_clicked), MW->host_text); exit_me = gtk_button_new_with_label ("Exit"); gtk_object_set_data (GTK_OBJECT (main_win), "exit", exit_me); gtk_widget_show (exit_me); gtk_fixed_put (GTK_FIXED (fixed1), exit_me, 424, 32); gtk_widget_set_usize (exit_me, 48, 24); gtk_signal_connect (GTK_OBJECT (exit_me), "clicked", GTK_SIGNAL_FUNC (on_exit_me_clicked), NULL); MW->bounce_check = gtk_check_button_new_with_label ("Bounce Scan:"); gtk_object_set_data (GTK_OBJECT (main_win), "bounce_check", MW->bounce_check); gtk_widget_show (MW->bounce_check); gtk_fixed_put (GTK_FIXED (fixed1), MW->bounce_check, 8, 175); gtk_widget_set_usize (MW->bounce_check, 104, 17); gtk_signal_connect(GTK_OBJECT(MW->bounce_check), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); MW->bounce_text = gtk_entry_new (); gtk_object_set_data (GTK_OBJECT (main_win), "bounce_text", MW->bounce_text); gtk_widget_show (MW->bounce_text); gtk_fixed_put (GTK_FIXED (fixed1), MW->bounce_text, 8, 192); gtk_widget_set_usize (MW->bounce_text, 104, 21); gtk_signal_connect (GTK_OBJECT(MW->bounce_text), "changed", GTK_SIGNAL_FUNC(entry_toggle_checkbox), MW->bounce_check); hseparator2 = gtk_hseparator_new (); gtk_object_set_data (GTK_OBJECT (main_win), "hseparator2", hseparator2); gtk_widget_show (hseparator2); gtk_fixed_put (GTK_FIXED (fixed1), hseparator2, 8, 64); gtk_widget_set_usize (hseparator2, 114, 16); label2 = gtk_label_new ("Scan Options:"); gtk_object_set_data (GTK_OBJECT (main_win), "label2", label2); gtk_widget_show (label2); gtk_fixed_put (GTK_FIXED (fixed1), label2, 8, 56); gtk_widget_set_usize (label2, 104, 16); menubar1 = gtk_menu_bar_new (); gtk_object_set_data (GTK_OBJECT (main_win), "menubar1", menubar1); gtk_widget_show (menubar1); gtk_fixed_put (GTK_FIXED (fixed1), menubar1, 1, 1); gtk_widget_set_usize (menubar1, 479, 27); File = gtk_menu_item_new_with_label ("File"); gtk_object_set_data (GTK_OBJECT (main_win), "File", File); gtk_widget_show (File); gtk_container_add (GTK_CONTAINER (menubar1), File); menu5 = gtk_menu_new (); gtk_object_set_data (GTK_OBJECT (main_win), "menu5", menu5); gtk_menu_item_set_submenu (GTK_MENU_ITEM (File), menu5); Save_Log = gtk_menu_item_new_with_label ("Save Log"); gtk_object_set_data (GTK_OBJECT (main_win), "Save_Log", Save_Log); gtk_widget_show (Save_Log); gtk_container_add (GTK_CONTAINER (menu5), Save_Log); gtk_signal_connect (GTK_OBJECT (Save_Log), "activate", GTK_SIGNAL_FUNC (on_Save_Log_activate), NULL); Open_Log = gtk_menu_item_new_with_label ("Open Log"); gtk_object_set_data (GTK_OBJECT (main_win), "Open_Log", Open_Log); gtk_widget_show (Open_Log); gtk_container_add (GTK_CONTAINER (menu5), Open_Log); gtk_signal_connect (GTK_OBJECT (Open_Log), "activate", GTK_SIGNAL_FUNC (on_Open_Log_activate), NULL); separator1 = gtk_menu_item_new (); gtk_object_set_data (GTK_OBJECT (main_win), "separator1", separator1); gtk_widget_show (separator1); gtk_container_add (GTK_CONTAINER (menu5), separator1); Close = gtk_menu_item_new_with_label ("Close"); gtk_object_set_data (GTK_OBJECT (main_win), "Close", Close); gtk_widget_show (Close); gtk_container_add (GTK_CONTAINER (menu5), Close); gtk_signal_connect (GTK_OBJECT (Close), "activate", GTK_SIGNAL_FUNC (on_Close_activate), NULL); Other = gtk_menu_item_new_with_label ("Output"); gtk_object_set_data (GTK_OBJECT (main_win), "Other", Other); gtk_widget_show (Other); gtk_container_add (GTK_CONTAINER (menubar1), Other); gtk_signal_connect (GTK_OBJECT (Other), "activate", NULL, NULL); menu7 = gtk_menu_new (); gtk_object_set_data (GTK_OBJECT (main_win), "menu7", menu7); gtk_menu_item_set_submenu (GTK_MENU_ITEM (Other), menu7); MW->Verbose = gtk_check_menu_item_new_with_label("Verbose Output"); gtk_object_set_data (GTK_OBJECT (main_win), "Verbose", MW->Verbose); gtk_widget_show (MW->Verbose); gtk_container_add (GTK_CONTAINER (menu7), MW->Verbose); gtk_signal_connect (GTK_OBJECT (MW->Verbose), "activate", GTK_SIGNAL_FUNC (on_verb_activate), NULL); MW->Append = gtk_check_menu_item_new_with_label("Append Output"); gtk_object_set_data (GTK_OBJECT (main_win), "Append", MW->Append); gtk_widget_show (MW->Append); gtk_container_add (GTK_CONTAINER (menu7), MW->Append); gtk_signal_connect (GTK_OBJECT (MW->Append), "activate", GTK_SIGNAL_FUNC (on_Append_activate), NULL); machine = gtk_menu_item_new_with_label("Machine Parsable Log"); gtk_object_set_data (GTK_OBJECT (main_win), "Machine", machine); gtk_widget_show (machine); gtk_container_add (GTK_CONTAINER (menu7), machine); gtk_signal_connect (GTK_OBJECT (machine), "activate", GTK_SIGNAL_FUNC (on_machine_activate), NULL); /** NEW CODE FOR V1.0 ***************************************************/ View_Main = gtk_menu_item_new_with_label ("View"); gtk_object_set_data (GTK_OBJECT (main_win), "View_Main", View_Main); gtk_widget_show (View_Main); gtk_container_add (GTK_CONTAINER (menubar1), View_Main); gtk_signal_connect (GTK_OBJECT (View_Main), "activate", GTK_SIGNAL_FUNC (on_View_Main_activate), NULL); view_m = gtk_menu_new(); gtk_object_set_data(GTK_OBJECT(main_win), "view_m", view_m); gtk_menu_item_set_submenu (GTK_MENU_ITEM (View_Main), view_m); Trad = gtk_menu_item_new_with_label ("Traditional"); gtk_object_set_data (GTK_OBJECT (main_win), "Trad",Trad); gtk_widget_show (Trad); gtk_container_add (GTK_CONTAINER (view_m), Trad); gtk_signal_connect (GTK_OBJECT (Trad), "activate", GTK_SIGNAL_FUNC (on_Trad_activate), NULL); CTrad = gtk_menu_item_new_with_label ("Colored Traditional"); gtk_object_set_data (GTK_OBJECT (main_win), "CTrad",CTrad); gtk_widget_show (CTrad); gtk_container_add (GTK_CONTAINER (view_m), CTrad); gtk_signal_connect (GTK_OBJECT (CTrad), "activate", GTK_SIGNAL_FUNC (on_CTrad_activate), NULL); /**** This doesn't work yet, that's why it's commented out *** * Tree = gtk_menu_item_new_with_label ("Tree"); * gtk_object_set_data (GTK_OBJECT (main_win), "Tree",Tree); * gtk_widget_show (Tree); * gtk_container_add (GTK_CONTAINER (view_m), Tree); * gtk_signal_connect (GTK_OBJECT (Tree), "activate", GTK_SIGNAL_FUNC (on_Tree_activate), NULL); **************************************************************/ extra = gtk_menu_item_new_with_label ("BETA Options"); gtk_object_set_data (GTK_OBJECT (main_win), "EXTRA", extra); gtk_widget_show (extra); gtk_container_add (GTK_CONTAINER (menubar1), extra); extra_menu = gtk_menu_new (); gtk_object_set_data (GTK_OBJECT (main_win), "extra_menu", extra_menu); gtk_menu_item_set_submenu (GTK_MENU_ITEM (extra), extra_menu); MW->rpc = gtk_check_menu_item_new_with_label("RPC Scan (only 2.3BETA4!)"); gtk_object_set_data (GTK_OBJECT (main_win), "RPC", MW->rpc); gtk_widget_show (MW->rpc); gtk_container_add (GTK_CONTAINER (extra_menu), MW->rpc); gtk_signal_connect (GTK_OBJECT (MW->rpc), "activate", GTK_SIGNAL_FUNC (on_rpc_activate), NULL); /********END NEW CODE **********************************************/ Help_Main = gtk_menu_item_new_with_label ("Help"); gtk_object_set_data (GTK_OBJECT (main_win), "Help_Main", Help_Main); gtk_widget_show (Help_Main); gtk_container_add (GTK_CONTAINER (menubar1), Help_Main); gtk_signal_connect (GTK_OBJECT (Help_Main), "activate", GTK_SIGNAL_FUNC (on_Help_Main_activate), NULL); gtk_menu_item_right_justify (GTK_MENU_ITEM (Help_Main)); menu6 = gtk_menu_new (); gtk_object_set_data (GTK_OBJECT (main_win), "menu6", menu6); gtk_menu_item_set_submenu (GTK_MENU_ITEM (Help_Main), menu6); Help = gtk_menu_item_new_with_label ("Help"); gtk_object_set_data (GTK_OBJECT (main_win), "Help", Help); gtk_widget_show (Help); gtk_container_add (GTK_CONTAINER (menu6), Help); gtk_signal_connect (GTK_OBJECT (Help), "activate", GTK_SIGNAL_FUNC (on_Help_activate), NULL); Get_Nmap_Version = gtk_menu_item_new_with_label ("Get Nmap Version"); gtk_object_set_data (GTK_OBJECT (main_win), "Get_Nmap_Version", Get_Nmap_Version); gtk_widget_show (Get_Nmap_Version); gtk_container_add (GTK_CONTAINER (menu6), Get_Nmap_Version); gtk_signal_connect (GTK_OBJECT (Get_Nmap_Version), "activate", GTK_SIGNAL_FUNC (on_Get_Nmap_Version_activate), NULL); separator2 = gtk_menu_item_new (); gtk_object_set_data (GTK_OBJECT (main_win), "separator2", separator2); gtk_widget_show (separator2); gtk_container_add (GTK_CONTAINER (menu6), separator2); About = gtk_menu_item_new_with_label ("About"); gtk_object_set_data (GTK_OBJECT (main_win), "About", About); gtk_widget_show (About); gtk_container_add (GTK_CONTAINER (menu6), About); gtk_signal_connect (GTK_OBJECT (About), "activate", GTK_SIGNAL_FUNC (on_About_activate), About); vseparator1 = gtk_vseparator_new (); gtk_object_set_data (GTK_OBJECT (main_win), "vseparator1", vseparator1); gtk_widget_show (vseparator1); gtk_fixed_put (GTK_FIXED (fixed1), vseparator1, 116, 72); gtk_widget_set_usize (vseparator1, 16, 144); hseparator1 = gtk_hseparator_new (); gtk_object_set_data (GTK_OBJECT (main_win), "hseparator1", hseparator1); gtk_widget_show (hseparator1); gtk_fixed_put (GTK_FIXED (fixed1), hseparator1, 127, 64); gtk_widget_set_usize (hseparator1, 336, 16); label3 = gtk_label_new ("General Options:"); gtk_object_set_data (GTK_OBJECT (main_win), "label3", label3); gtk_widget_show (label3); gtk_fixed_put (GTK_FIXED (fixed1), label3, 128, 56); gtk_widget_set_usize (label3, 344, 16); label1 = gtk_label_new ("Host(s):"); gtk_object_set_data (GTK_OBJECT (main_win), "label1", label1); gtk_widget_show (label1); gtk_fixed_put (GTK_FIXED (fixed1), label1, 0, 32); gtk_widget_set_usize (label1, 64, 17); MW->output_label = gtk_label_new ("Output from Nmap:"); gtk_object_set_data (GTK_OBJECT (main_win), "Output Label", MW->output_label); gtk_label_set_justify( GTK_LABEL(MW->output_label), GTK_JUSTIFY_LEFT ); gtk_widget_show (MW->output_label); gtk_fixed_put (GTK_FIXED (fixed1), MW->output_label, 0, 216); gtk_widget_set_usize (MW->output_label, 480, 16); display_nmap_command(); return main_win; } GtkWidget* create_about_window () { GtkWidget *about_window; GtkWidget *vbox1; GtkWidget *notebook1; GtkWidget *text1; GtkWidget *text2; GtkWidget *label1; GtkWidget *label2; GtkWidget *hbox1; GtkWidget *about_ok; about_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_object_set_data (GTK_OBJECT (about_window), "about_window", about_window); gtk_widget_set_usize (about_window, 200, 200); gtk_window_set_title (GTK_WINDOW (about_window), "About NmapFE and Nmap"); gtk_window_set_policy (GTK_WINDOW (about_window), FALSE, FALSE, FALSE); gtk_window_position (GTK_WINDOW (about_window), GTK_WIN_POS_CENTER); vbox1 = gtk_vbox_new (FALSE, 0); gtk_object_set_data (GTK_OBJECT (about_window), "vbox1", vbox1); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (about_window), vbox1); notebook1 = gtk_notebook_new (); gtk_object_set_data (GTK_OBJECT (about_window), "notebook1", notebook1); gtk_widget_show (notebook1); gtk_box_pack_start (GTK_BOX (vbox1), notebook1, TRUE, TRUE, 0); text1 = gtk_text_new (NULL, NULL); gtk_object_set_data (GTK_OBJECT (about_window), "text1", text1); gtk_widget_show (text1); gtk_container_add (GTK_CONTAINER (notebook1), text1); gtk_widget_realize (text1); gtk_text_insert (GTK_TEXT (text1), NULL, NULL, NULL, "\nAuthor: Zach Smith\nE-mail: key@aye.net\nHTTP: a.linuxbox.com\nWritten in: C/GTK\nGUI was built with Glade:\nhttp://glade.pn.org", 124); text2 = gtk_text_new (NULL, NULL); gtk_object_set_data (GTK_OBJECT (about_window), "text2", text2); gtk_widget_show (text2); gtk_container_add (GTK_CONTAINER (notebook1), text2); gtk_widget_realize (text2); gtk_text_insert (GTK_TEXT (text2), NULL, NULL, NULL, "\n\nAuthor: Fyodor\nEmail: fyodor@insecure.org\nhttp://www.insecure.org/nmap\nWritten in: C", 77); label1 = gtk_label_new ("About NmapFE"); gtk_object_set_data (GTK_OBJECT (about_window), "label1", label1); gtk_widget_show (label1); set_notebook_tab (notebook1, 0, label1); label2 = gtk_label_new ("About Nmap"); gtk_object_set_data (GTK_OBJECT (about_window), "label2", label2); gtk_widget_show (label2); set_notebook_tab (notebook1, 1, label2); hbox1 = gtk_hbox_new (FALSE, 0); gtk_object_set_data (GTK_OBJECT (about_window), "hbox1", hbox1); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, TRUE, 0); about_ok = gtk_button_new_with_label ("Ok"); gtk_object_set_data (GTK_OBJECT (about_window), "about_ok", about_ok); gtk_widget_show (about_ok); gtk_box_pack_start (GTK_BOX (hbox1), about_ok, TRUE, TRUE, 0); gtk_signal_connect (GTK_OBJECT (about_ok), "clicked", GTK_SIGNAL_FUNC (on_about_ok_clicked), about_window); return about_window; } GtkWidget* create_fileselection1 () { GtkWidget *fileselection1; GtkWidget *ok_button1; GtkWidget *cancel_button1; fileselection1 = gtk_file_selection_new ("Select File"); gtk_object_set_data (GTK_OBJECT (fileselection1), "fileselection1", fileselection1); gtk_container_border_width (GTK_CONTAINER (fileselection1), 10); GTK_WINDOW (fileselection1)->type = GTK_WINDOW_DIALOG; gtk_window_set_policy (GTK_WINDOW (fileselection1), TRUE, TRUE, FALSE); ok_button1 = GTK_FILE_SELECTION (fileselection1)->ok_button; gtk_object_set_data (GTK_OBJECT (fileselection1), "ok_button1", ok_button1); gtk_widget_show (ok_button1); GTK_WIDGET_SET_FLAGS (ok_button1, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (ok_button1), "clicked", GTK_SIGNAL_FUNC (on_ok_button1_clicked), fileselection1); cancel_button1 = GTK_FILE_SELECTION (fileselection1)->cancel_button; gtk_object_set_data (GTK_OBJECT (fileselection1), "cancel_button1", cancel_button1); gtk_widget_show (cancel_button1); GTK_WIDGET_SET_FLAGS (cancel_button1, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (cancel_button1), "clicked", GTK_SIGNAL_FUNC (on_cancel_button1_clicked), fileselection1); return fileselection1; } GtkWidget* create_help_window () { GtkWidget *help_window; GtkWidget *vbox1; GtkWidget *notebook1; GtkWidget *text1; GtkWidget *text2; GtkWidget *text3; GtkWidget *label1; GtkWidget *label2; GtkWidget *label3; GtkWidget *hbox1; GtkWidget *help_ok; help_window = gtk_window_new (GTK_WINDOW_DIALOG); gtk_object_set_data (GTK_OBJECT (help_window), "help_window", help_window); gtk_widget_set_usize (help_window, 400, 300); gtk_window_set_title (GTK_WINDOW (help_window), "Help With NmapFE"); gtk_window_set_policy (GTK_WINDOW (help_window), FALSE, FALSE, FALSE); gtk_window_position (GTK_WINDOW (help_window), GTK_WIN_POS_CENTER); vbox1 = gtk_vbox_new (FALSE, 0); gtk_object_set_data (GTK_OBJECT (help_window), "vbox1", vbox1); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (help_window), vbox1); notebook1 = gtk_notebook_new (); gtk_object_set_data (GTK_OBJECT (help_window), "notebook1", notebook1); gtk_widget_show (notebook1); gtk_box_pack_start (GTK_BOX (vbox1), notebook1, TRUE, TRUE, 0); text1 = gtk_text_new (NULL, NULL); gtk_object_set_data (GTK_OBJECT (help_window), "text1", text1); gtk_widget_show (text1); gtk_container_add (GTK_CONTAINER (notebook1), text1); gtk_widget_realize (text1); gtk_text_insert (GTK_TEXT (text1), NULL, NULL, NULL, "Starting a scan:\n1) Put the host(s) name(s) of which to scan in the \"Host\" text box.\n2) Pick the scan options you would like\n3) Pick the view you want from the \"View\" menu option.\n4) Click \"Start Scan\"\n\nStopping a Scan:\nAfter clicking \"Start Scan\", the button will remain depressed. \nIf you would like to stop the scan, simply click that button again.\nThe button will pop up, and the scan will be stopped.\n", 406); text2 = gtk_text_new (NULL, NULL); gtk_object_set_data (GTK_OBJECT (help_window), "text2", text2); gtk_widget_show (text2); gtk_container_add (GTK_CONTAINER (notebook1), text2); gtk_widget_realize (text2); gtk_text_insert (GTK_TEXT (text2), NULL, NULL, NULL, "To log a scan in human-readable form:\n1) After finishing a scan, click 'Save Log' from the 'File' menu.\n\nTo re-open a human-readable log:\n1) Click 'Open Log' from the 'File' menu.\n2) If you have color coding enabled, the log will be opened in \ncolor. If not, it will be opened in plain text.\n\nTo log a machine parsable scan:\n1) After finishing a scan, click 'Machine Parsable Log' from the \n'Output' menu.", 405); text3 = gtk_text_new (NULL, NULL); gtk_object_set_data (GTK_OBJECT (help_window), "text3", text3); gtk_widget_show (text3); gtk_container_add (GTK_CONTAINER (notebook1), text3); gtk_widget_realize (text3); gtk_text_insert (GTK_TEXT (text3), NULL, NULL, NULL, "Bold Red - Services that would allow execution of commands \nand/or logging directly into the system. Telnet, FTP, rsh, ssh, \netc... are covered by this. Not *every* single service is covered,\nthe code base would be huge if they were.\n\nBold Blue - Mail services. IMAP, SMTP, POP3, etc... \nOnce again, not all are covered, just the common ones.\n\nBold Black - Services users could get information from.\nfinger, http, X11, etc...\n\nRegular Black - Services I had nothing better to do with :)\n\nIf you have ideas on how to color code more, please let me know:\nkey@aye.net", 564); label1 = gtk_label_new ("Scanning"); gtk_object_set_data (GTK_OBJECT (help_window), "label1", label1); gtk_widget_show (label1); set_notebook_tab (notebook1, 0, label1); label2 = gtk_label_new ("Logging"); gtk_object_set_data (GTK_OBJECT (help_window), "label2", label2); gtk_widget_show (label2); set_notebook_tab (notebook1, 1, label2); label3 = gtk_label_new ("Colors"); gtk_object_set_data (GTK_OBJECT (help_window), "label3", label3); gtk_widget_show (label3); set_notebook_tab (notebook1, 2, label3); hbox1 = gtk_hbox_new (FALSE, 0); gtk_object_set_data (GTK_OBJECT (help_window), "hbox1", hbox1); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, TRUE, 0); help_ok = gtk_button_new_with_label ("Ok."); gtk_object_set_data (GTK_OBJECT (help_window), "help_ok", help_ok); gtk_widget_show (help_ok); gtk_box_pack_start (GTK_BOX (hbox1), help_ok, TRUE, TRUE, 0); gtk_signal_connect (GTK_OBJECT (help_ok), "clicked", GTK_SIGNAL_FUNC (on_help_ok_clicked), help_window); return help_window; } GtkWidget* create_machine_parse_selection () { GtkWidget *machine_parse_selection; GtkWidget *hbox1; GtkWidget *label1; machine_parse_selection = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_object_set_data (GTK_OBJECT (machine_parse_selection), "machine_parse_selection", machine_parse_selection); gtk_window_set_title (GTK_WINDOW (machine_parse_selection), "Machine Parsable Log Selection"); gtk_window_set_policy (GTK_WINDOW (machine_parse_selection), FALSE, FALSE, FALSE); gtk_window_position (GTK_WINDOW (machine_parse_selection), GTK_WIN_POS_CENTER); hbox1 = gtk_hbox_new (FALSE, 0); gtk_object_set_data (GTK_OBJECT (machine_parse_selection), "hbox1", hbox1); gtk_widget_show (hbox1); gtk_container_add (GTK_CONTAINER (machine_parse_selection), hbox1); label1 = gtk_label_new ("File:"); gtk_object_set_data (GTK_OBJECT (machine_parse_selection), "label1", label1); gtk_widget_show (label1); gtk_box_pack_start (GTK_BOX (hbox1), label1, TRUE, TRUE, 0); MW->file_entry = gtk_entry_new (); gtk_object_set_data (GTK_OBJECT (machine_parse_selection), "file_entry", MW->file_entry); gtk_entry_set_text(GTK_ENTRY(MW->file_entry), "parsable.log"); gtk_widget_show (MW->file_entry); gtk_box_pack_start (GTK_BOX (hbox1), MW->file_entry, TRUE, TRUE, 0); MW->done = gtk_button_new_with_label ("Done"); gtk_object_set_data (GTK_OBJECT (machine_parse_selection), "button3", MW->done); gtk_widget_show (MW->done); gtk_box_pack_start (GTK_BOX (hbox1), MW->done, TRUE, TRUE, 0); gtk_container_border_width (GTK_CONTAINER (MW->done), 10); gtk_signal_connect (GTK_OBJECT (MW->done), "clicked", GTK_SIGNAL_FUNC (on_done_clicked), machine_parse_selection); MW->cancel = gtk_button_new_with_label ("Cancel"); gtk_object_set_data (GTK_OBJECT (machine_parse_selection), "button3", MW->cancel); gtk_widget_show (MW->cancel); gtk_box_pack_start (GTK_BOX (hbox1), MW->cancel, TRUE, TRUE, 0); gtk_container_border_width (GTK_CONTAINER (MW->cancel), 10); gtk_signal_connect (GTK_OBJECT (MW->cancel), "clicked", GTK_SIGNAL_FUNC (on_cancel_clicked), machine_parse_selection); return machine_parse_selection; } #endif /* MISSING_GTK */