diff -ruN Airsnort-0.2.1b/airsnort.glade Airsnort-0.2.1b-patched/airsnort.glade --- Airsnort-0.2.1b/airsnort.glade Sun Aug 18 13:55:21 2002 +++ Airsnort-0.2.1b-patched/airsnort.glade Fri Jan 17 15:49:52 2003 @@ -173,6 +173,19 @@ False + + + GtkMenuItem + sound + Sound Settings + + activate + on_sound_activate + Wed, 15 Jan 2003 16:30:27 GMT + + + False + @@ -672,176 +685,185 @@ - GtkCList - DataList - 1 - True - - button_press_event - on_DataList_button_press_event - NULL - Sun, 13 Jan 2002 04:59:33 GMT - - 12 - 15,125,127,32,88,78,37,88,80,71,120,120 - GTK_SELECTION_SINGLE - True - GTK_SHADOW_IN + GtkAlignment + alignment1 + 0.5 + 0.5 + 1 + 1 - GtkLabel - CList:title - label12 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + GtkCList + DataList + 1 + True + + button_press_event + on_DataList_button_press_event + NULL + Sun, 13 Jan 2002 04:59:33 GMT + + 12 + 15,125,127,32,88,78,37,88,80,71,120,120 + GTK_SELECTION_SINGLE + True + GTK_SHADOW_IN - - GtkLabel - CList:title - label5 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + + GtkLabel + CList:title + label12 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + - - GtkLabel - CList:title - label6 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + + GtkLabel + CList:title + label5 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + - - GtkLabel - CList:title - labelWep - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + + GtkLabel + CList:title + label6 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + - - GtkLabel - CList:title - label7 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + + GtkLabel + CList:title + labelWep + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + - - GtkLabel - CList:title - label8 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + + GtkLabel + CList:title + label7 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + - - GtkLabel - CList:title - label9 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + + GtkLabel + CList:title + label8 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + - - GtkLabel - CList:title - label10 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + + GtkLabel + CList:title + label9 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + - - GtkLabel - CList:title - labelEnc - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + + GtkLabel + CList:title + label10 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + - - GtkLabel - CList:title - label11 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + + GtkLabel + CList:title + labelEnc + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + - - GtkLabel - CList:title - label13 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - + + GtkLabel + CList:title + label11 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + - - GtkLabel - CList:title - label14 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 + + GtkLabel + CList:title + label13 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + GtkLabel + CList:title + label14 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + @@ -1251,7 +1273,7 @@ ListPopup - GtkPixmapMenuItem + GtkMenuItem stats activate @@ -1263,7 +1285,7 @@ - GtkPixmapMenuItem + GtkMenuItem delete activate @@ -1275,7 +1297,7 @@ - GtkPixmapMenuItem + GtkMenuItem stop activate @@ -1752,6 +1774,160 @@ GTK_RELIEF_NORMAL + + + + + GtkDialog + SoundDialog + Sound Settings + GTK_WINDOW_DIALOG + GTK_WIN_POS_CENTER + True + True + True + False + + + GtkVBox + Dialog:vbox + dialog-vbox6 + False + 0 + + + GtkHBox + Dialog:action_area + dialog-action_area6 + 10 + True + 5 + + 0 + False + True + GTK_PACK_END + + + + GtkButton + SoundOk + True + + clicked + on_SoundOk_clicked + Wed, 15 Jan 2003 17:30:33 GMT + + + clicked + gtk_widget_destroy + SoundDialog + Wed, 15 Jan 2003 17:40:53 GMT + + + GTK_RELIEF_NORMAL + + 0 + False + False + + + + + GtkButton + SoundCancel + True + + clicked + gtk_widget_destroy + SoundDialog + Thu, 16 Jan 2003 18:37:12 GMT + + + GTK_RELIEF_NORMAL + + 0 + False + False + + + + + + GtkTable + table7 + 1 + 2 + False + 0 + 0 + + 0 + True + True + + + + GtkLabel + SoundText + + GTK_JUSTIFY_CENTER + False + 0 + 0.5 + 0 + 0 + + 0 + 1 + 0 + 1 + 0 + 0 + False + False + False + False + True + False + + + + + GtkEntry + SoundCommand + True + + changed + on_SoundCommand_changed + NULL + Wed, 15 Jan 2003 17:39:54 GMT + + + realize + on_SoundCommand_realize + Wed, 15 Jan 2003 17:39:41 GMT + + True + True + 0 + /usr/bin/play fichero.wav + + 1 + 2 + 0 + 1 + 0 + 0 + True + False + False + False + True + False + + + diff -ruN Airsnort-0.2.1b/src/callbacks.c Airsnort-0.2.1b-patched/src/callbacks.c --- Airsnort-0.2.1b/src/callbacks.c Sun Aug 18 13:55:21 2002 +++ Airsnort-0.2.1b-patched/src/callbacks.c Fri Jan 17 15:49:52 2003 @@ -652,3 +652,34 @@ } + +void +on_sound_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + gtk_widget_show_all (create_SoundDialog()); +} + +void +on_SoundCommand_changed (GtkEditable *editable, + gpointer user_data) +{ + strcpy(SoundCommand, gtk_entry_get_text(GTK_ENTRY(editable))); +} + + +void +on_SoundCommand_realize (GtkWidget *widget, + gpointer user_data) +{ + gtk_entry_set_text(GTK_ENTRY(widget), SoundCommand); +} + + +void +on_SoundOk_clicked (GtkButton *button, + gpointer user_data) +{ + +} + diff -ruN Airsnort-0.2.1b/src/callbacks.h Airsnort-0.2.1b-patched/src/callbacks.h --- Airsnort-0.2.1b/src/callbacks.h Sun Aug 18 13:55:21 2002 +++ Airsnort-0.2.1b-patched/src/callbacks.h Fri Jan 17 15:49:52 2003 @@ -162,3 +162,27 @@ on_breadth128_realize (GtkWidget *widget, gpointer user_data); + +void +on_sound_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_execEvent_realize (GtkWidget *widget, + gpointer user_data); + +void +on_execEvent_changed (GtkEditable *editable, + gpointer user_data); + +void +on_SoundCommand_changed (GtkEditable *editable, + gpointer user_data); + +void +on_SoundCommand_realize (GtkWidget *widget, + gpointer user_data); + +void +on_SoundOk_clicked (GtkButton *button, + gpointer user_data); diff -ruN Airsnort-0.2.1b/src/capture.c Airsnort-0.2.1b-patched/src/capture.c --- Airsnort-0.2.1b/src/capture.c Sun Aug 18 13:55:21 2002 +++ Airsnort-0.2.1b-patched/src/capture.c Fri Jan 17 15:49:52 2003 @@ -37,6 +37,7 @@ #include "capture.h" #include "crack.h" #include "bssidlist.h" +#include "display.h" #include #ifndef SIOCIWFIRSTPRIV @@ -477,6 +478,10 @@ r = atoi(index + 1); chan = r < 1 || r > 11 ? 6 : r; } + else if (!strcmp(rcfile, "SoundCommand")) { + strncpy(SoundCommand, index + 1, SOUNDCOMMAND_SIZE); + SoundCommand[SOUNDCOMMAND_SIZE - 1] = 0; + } } } fclose(rc); @@ -498,6 +503,7 @@ fprintf(rc, "breadth128:%d\n", breadth128); fprintf(rc, "breadth40:%d\n", breadth40); fprintf(rc, "channel:%d\n", chan); + fprintf(rc, "SoundCommand:%s\n", SoundCommand); fclose(rc); } } diff -ruN Airsnort-0.2.1b/src/display.c Airsnort-0.2.1b-patched/src/display.c --- Airsnort-0.2.1b/src/display.c Sun Aug 18 13:55:21 2002 +++ Airsnort-0.2.1b-patched/src/display.c Fri Jan 17 15:51:56 2003 @@ -20,6 +20,7 @@ #include #include "display.h" #include "crack.h" +#include #define NUM_COLS 12 #define CRACK_COL 0 @@ -36,6 +37,7 @@ #define PWASC_COL 11 int listCount; +char SoundCommand[SOUNDCOMMAND_SIZE] = "/usr/bin/play /usr/share/sounds/KDE_Dialog_Appear.wav"; //return a string version of the hex bytes held in key //bytes are separated by a colon @@ -83,6 +85,11 @@ sprintf(rsvled, "%d", ptr->interesting); gtk_clist_append(list, text); +// If we want to execute something when airsnort found a new wireless network + if ( SoundCommand[0] != 0) + { + system(SoundCommand); + } } //update an existing SSID with data collected over the last diff -ruN Airsnort-0.2.1b/src/display.h Airsnort-0.2.1b-patched/src/display.h --- Airsnort-0.2.1b/src/display.h Sun Aug 18 13:55:21 2002 +++ Airsnort-0.2.1b-patched/src/display.h Fri Jan 17 15:49:52 2003 @@ -19,7 +19,10 @@ #ifndef __DISPLAY_H #define __DISPLAY_H +#define SOUNDCOMMAND_SIZE 255 + #include +#include #include "bssidlist.h" char *toHex(unsigned char *key, int size); @@ -27,5 +30,6 @@ void addList(BssidList *ptr, GtkCList *list); void updateList(BssidList *ptr, GtkCList *list); int update(gpointer data); +extern char SoundCommand[SOUNDCOMMAND_SIZE]; #endif diff -ruN Airsnort-0.2.1b/src/interface.c Airsnort-0.2.1b-patched/src/interface.c --- Airsnort-0.2.1b/src/interface.c Sun Aug 18 13:55:21 2002 +++ Airsnort-0.2.1b-patched/src/interface.c Fri Jan 17 15:49:52 2003 @@ -40,6 +40,7 @@ GtkWidget *settings_menu; GtkAccelGroup *settings_menu_accels; GtkWidget *gps; + GtkWidget *sound; GtkWidget *help; GtkWidget *help_menu; GtkAccelGroup *help_menu_accels; @@ -68,6 +69,7 @@ GtkObject *breadth128_adj; GtkWidget *breadth128; GtkWidget *scrolledwindow1; + GtkWidget *alignment1; GtkWidget *DataList; GtkWidget *label12; GtkWidget *label5; @@ -219,6 +221,18 @@ gtk_container_add (GTK_CONTAINER (settings_menu), gps); gtk_tooltips_set_tip (tooltips, gps, "GPS Settings", NULL); + sound = gtk_menu_item_new_with_label (""); + tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (sound)->child), + "_Sound"); + gtk_widget_add_accelerator (sound, "activate_item", settings_menu_accels, + tmp_key, 0, 0); + gtk_widget_ref (sound); + gtk_object_set_data_full (GTK_OBJECT (AirSnortWindow), "sound", sound, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (sound); + gtk_container_add (GTK_CONTAINER (settings_menu), sound); + gtk_tooltips_set_tip (tooltips, sound, "Sound Settings", NULL); + help = gtk_menu_item_new_with_label (""); tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (help)->child), "_Help"); @@ -430,12 +444,19 @@ gtk_box_pack_start (GTK_BOX (vbox4), scrolledwindow1, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + alignment1 = gtk_alignment_new (0.5, 0.5, 1, 1); + gtk_widget_ref (alignment1); + gtk_object_set_data_full (GTK_OBJECT (AirSnortWindow), "alignment1", alignment1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (alignment1); + gtk_container_add (GTK_CONTAINER (scrolledwindow1), alignment1); + DataList = gtk_clist_new (12); gtk_widget_ref (DataList); gtk_object_set_data_full (GTK_OBJECT (AirSnortWindow), "DataList", DataList, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (DataList); - gtk_container_add (GTK_CONTAINER (scrolledwindow1), DataList); + gtk_container_add (GTK_CONTAINER (alignment1), DataList); gtk_container_set_border_width (GTK_CONTAINER (DataList), 1); gtk_clist_set_column_width (GTK_CLIST (DataList), 0, 15); gtk_clist_set_column_width (GTK_CLIST (DataList), 1, 125); @@ -585,6 +606,9 @@ gtk_signal_connect (GTK_OBJECT (gps), "activate", GTK_SIGNAL_FUNC (on_gps_activate), NULL); + gtk_signal_connect (GTK_OBJECT (sound), "activate", + GTK_SIGNAL_FUNC (on_sound_activate), + NULL); gtk_signal_connect (GTK_OBJECT (scan), "toggled", GTK_SIGNAL_FUNC (on_scan_toggled), NULL); @@ -862,11 +886,45 @@ { GtkWidget *ListPopup; GtkAccelGroup *ListPopup_accels; + GtkWidget *stats; + GtkWidget *delete; + GtkWidget *stop; ListPopup = gtk_menu_new (); gtk_object_set_data (GTK_OBJECT (ListPopup), "ListPopup", ListPopup); ListPopup_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (ListPopup)); + stats = gtk_menu_item_new_with_label ("Display Statistics"); + gtk_widget_ref (stats); + gtk_object_set_data_full (GTK_OBJECT (ListPopup), "stats", stats, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (stats); + gtk_container_add (GTK_CONTAINER (ListPopup), stats); + + delete = gtk_menu_item_new_with_label ("Delete"); + gtk_widget_ref (delete); + gtk_object_set_data_full (GTK_OBJECT (ListPopup), "delete", delete, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (delete); + gtk_container_add (GTK_CONTAINER (ListPopup), delete); + + stop = gtk_menu_item_new_with_label ("Stop"); + gtk_widget_ref (stop); + gtk_object_set_data_full (GTK_OBJECT (ListPopup), "stop", stop, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (stop); + gtk_container_add (GTK_CONTAINER (ListPopup), stop); + + gtk_signal_connect (GTK_OBJECT (stats), "activate", + GTK_SIGNAL_FUNC (on_stats_activate), + NULL); + gtk_signal_connect (GTK_OBJECT (delete), "activate", + GTK_SIGNAL_FUNC (on_delete_activate), + NULL); + gtk_signal_connect (GTK_OBJECT (stop), "activate", + GTK_SIGNAL_FUNC (on_stop_activate), + NULL); + return ListPopup; } @@ -1142,5 +1200,94 @@ GTK_OBJECT (PcapFile)); return PcapFile; +} + +GtkWidget* +create_SoundDialog (void) +{ + GtkWidget *SoundDialog; + GtkWidget *dialog_vbox6; + GtkWidget *table7; + GtkWidget *SoundText; + GtkWidget *SoundCommand; + GtkWidget *dialog_action_area6; + GtkWidget *SoundOk; + GtkWidget *SoundCancel; + + SoundDialog = gtk_dialog_new (); + gtk_object_set_data (GTK_OBJECT (SoundDialog), "SoundDialog", SoundDialog); + gtk_window_set_title (GTK_WINDOW (SoundDialog), "Sound Settings"); + GTK_WINDOW (SoundDialog)->type = GTK_WINDOW_DIALOG; + gtk_window_set_position (GTK_WINDOW (SoundDialog), GTK_WIN_POS_CENTER); + gtk_window_set_modal (GTK_WINDOW (SoundDialog), TRUE); + gtk_window_set_policy (GTK_WINDOW (SoundDialog), TRUE, TRUE, FALSE); + + dialog_vbox6 = GTK_DIALOG (SoundDialog)->vbox; + gtk_object_set_data (GTK_OBJECT (SoundDialog), "dialog_vbox6", dialog_vbox6); + gtk_widget_show (dialog_vbox6); + + table7 = gtk_table_new (1, 2, FALSE); + gtk_widget_ref (table7); + gtk_object_set_data_full (GTK_OBJECT (SoundDialog), "table7", table7, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (table7); + gtk_box_pack_start (GTK_BOX (dialog_vbox6), table7, TRUE, TRUE, 0); + + SoundText = gtk_label_new ("Execute command line"); + gtk_widget_ref (SoundText); + gtk_object_set_data_full (GTK_OBJECT (SoundDialog), "SoundText", SoundText, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (SoundText); + gtk_table_attach (GTK_TABLE (table7), SoundText, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (SoundText), 0, 0.5); + + SoundCommand = gtk_entry_new (); + gtk_widget_ref (SoundCommand); + gtk_object_set_data_full (GTK_OBJECT (SoundDialog), "SoundCommand", SoundCommand, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (SoundCommand); + gtk_table_attach (GTK_TABLE (table7), SoundCommand, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_entry_set_text (GTK_ENTRY (SoundCommand), "/usr/bin/play fichero.wav"); + + dialog_action_area6 = GTK_DIALOG (SoundDialog)->action_area; + gtk_object_set_data (GTK_OBJECT (SoundDialog), "dialog_action_area6", dialog_action_area6); + gtk_widget_show (dialog_action_area6); + gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area6), 10); + + SoundOk = gtk_button_new_with_label ("Okay"); + gtk_widget_ref (SoundOk); + gtk_object_set_data_full (GTK_OBJECT (SoundDialog), "SoundOk", SoundOk, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (SoundOk); + gtk_box_pack_start (GTK_BOX (dialog_action_area6), SoundOk, FALSE, FALSE, 0); + + SoundCancel = gtk_button_new_with_label ("Cancel"); + gtk_widget_ref (SoundCancel); + gtk_object_set_data_full (GTK_OBJECT (SoundDialog), "SoundCancel", SoundCancel, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (SoundCancel); + gtk_box_pack_start (GTK_BOX (dialog_action_area6), SoundCancel, FALSE, FALSE, 0); + + gtk_signal_connect (GTK_OBJECT (SoundCommand), "changed", + GTK_SIGNAL_FUNC (on_SoundCommand_changed), + NULL); + gtk_signal_connect (GTK_OBJECT (SoundCommand), "realize", + GTK_SIGNAL_FUNC (on_SoundCommand_realize), + NULL); + gtk_signal_connect (GTK_OBJECT (SoundOk), "clicked", + GTK_SIGNAL_FUNC (on_SoundOk_clicked), + NULL); + gtk_signal_connect_object (GTK_OBJECT (SoundOk), "clicked", + GTK_SIGNAL_FUNC (gtk_widget_destroy), + GTK_OBJECT (SoundDialog)); + gtk_signal_connect_object (GTK_OBJECT (SoundCancel), "clicked", + GTK_SIGNAL_FUNC (gtk_widget_destroy), + GTK_OBJECT (SoundDialog)); + + return SoundDialog; } diff -ruN Airsnort-0.2.1b/src/interface.h Airsnort-0.2.1b-patched/src/interface.h --- Airsnort-0.2.1b/src/interface.h Sun Aug 18 13:55:21 2002 +++ Airsnort-0.2.1b-patched/src/interface.h Fri Jan 17 15:49:52 2003 @@ -11,3 +11,4 @@ GtkWidget* create_GpsDialog (void); GtkWidget* create_LogFile (void); GtkWidget* create_PcapFile (void); +GtkWidget* create_SoundDialog (void); diff -ruN Airsnort-0.2.1b/src/support.c Airsnort-0.2.1b-patched/src/support.c --- Airsnort-0.2.1b/src/support.c Sun Aug 18 13:55:21 2002 +++ Airsnort-0.2.1b-patched/src/support.c Fri Jan 17 15:49:52 2003 @@ -139,7 +139,7 @@ } /* This is an internally used function to check if a pixmap file exists. */ -gchar* +static gchar* check_file_exists (const gchar *directory, const gchar *filename) {