xhydra patch

This commit is contained in:
van Hauser 2014-12-09 23:24:15 +01:00
parent 0a2b1fa61b
commit d04ba5b349
5 changed files with 49 additions and 11 deletions

View file

@ -2,6 +2,7 @@ Changelog for hydra
------------------- -------------------
Release 8.2-pre Release 8.2-pre
* Added xhydra gtk patche by Petar Kaleychev to support modules that do not use usernames
* ... your patch? * ... your patch?

View file

@ -128,16 +128,21 @@ int hydra_get_options(char *options[]) {
options[i++] = (char *) gtk_entry_get_text((GtkEntry *) widget); options[i++] = (char *) gtk_entry_get_text((GtkEntry *) widget);
} else { } else {
/* get the username, or username list */ /* disable usernames */
widget = lookup_widget(GTK_WIDGET(wndMain), "radioUsername1"); widget = lookup_widget(GTK_WIDGET(wndMain), "chkDisUser");
if (gtk_toggle_button_get_active((GtkToggleButton *) widget)) { if (gtk_toggle_button_get_active((GtkToggleButton *) widget)) {
options[i++] = "-l";
widget = lookup_widget(GTK_WIDGET(wndMain), "entUsername");
options[i++] = (char *) gtk_entry_get_text((GtkEntry *) widget);
} else { } else {
options[i++] = "-L"; /* get the username, or username list */
widget = lookup_widget(GTK_WIDGET(wndMain), "entUsernameFile"); widget = lookup_widget(GTK_WIDGET(wndMain), "radioUsername1");
options[i++] = (char *) gtk_entry_get_text((GtkEntry *) widget); if (gtk_toggle_button_get_active((GtkToggleButton *) widget)) {
options[i++] = "-l";
widget = lookup_widget(GTK_WIDGET(wndMain), "entUsername");
options[i++] = (char *) gtk_entry_get_text((GtkEntry *) widget);
} else {
options[i++] = "-L";
widget = lookup_widget(GTK_WIDGET(wndMain), "entUsernameFile");
options[i++] = (char *) gtk_entry_get_text((GtkEntry *) widget);
}
} }
/* get the pass, pass list, or generate */ /* get the pass, pass list, or generate */
@ -716,6 +721,26 @@ void on_chkColon_toggled(GtkToggleButton * togglebutton, gpointer user_data) {
} }
} }
void on_chkDisUser_toggled(GtkToggleButton * togglebutton, gpointer user_data) {
GtkWidget *radioUsername1, *radioUsername2, *entUsername, *entUsernameFile;
radioUsername1 = lookup_widget(GTK_WIDGET(wndMain), "radioUsername1");;
radioUsername2 = lookup_widget(GTK_WIDGET(wndMain), "radioUsername2");
entUsername = lookup_widget(GTK_WIDGET(wndMain), "entUsername");
entUsernameFile = lookup_widget(GTK_WIDGET(wndMain), "entUsernameFile");
if (gtk_toggle_button_get_active(togglebutton)) {
gtk_widget_set_sensitive(radioUsername1, FALSE);
gtk_widget_set_sensitive(radioUsername2, FALSE);
gtk_widget_set_sensitive(entUsername, FALSE);
gtk_widget_set_sensitive(entUsernameFile, FALSE);
} else {
gtk_widget_set_sensitive(radioUsername1, TRUE);
gtk_widget_set_sensitive(radioUsername2, TRUE);
gtk_widget_set_sensitive(entUsername, TRUE);
gtk_widget_set_sensitive(entUsernameFile, TRUE);
}
}
void on_btnClear_clicked(GtkButton * button, gpointer user_data) { void on_btnClear_clicked(GtkButton * button, gpointer user_data) {
GtkWidget *output; GtkWidget *output;
GtkTextBuffer *outputbuf; GtkTextBuffer *outputbuf;

View file

@ -25,3 +25,5 @@ gboolean on_entColonFile_button_press_event(GtkWidget * widget, GdkEventButton *
void on_chkColon_toggled(GtkToggleButton * togglebutton, gpointer user_data); void on_chkColon_toggled(GtkToggleButton * togglebutton, gpointer user_data);
void on_btnClear_clicked(GtkButton * button, gpointer user_data); void on_btnClear_clicked(GtkButton * button, gpointer user_data);
void on_chkDisUser_toggled(GtkToggleButton * togglebutton, gpointer user_data);

View file

@ -68,6 +68,7 @@ GtkWidget *create_wndMain(void) {
GtkWidget *entUsernameFile; GtkWidget *entUsernameFile;
GtkWidget *entUsername; GtkWidget *entUsername;
GtkWidget *chkUsernameLoop; GtkWidget *chkUsernameLoop;
GtkWidget *chkDisUser;
GtkWidget *radioUsername1; GtkWidget *radioUsername1;
GSList *radioUsername1_group = NULL; GSList *radioUsername1_group = NULL;
GtkWidget *radioUsername2; GtkWidget *radioUsername2;
@ -263,6 +264,7 @@ GtkWidget *create_wndMain(void) {
cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "pcanywhere"); cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "pcanywhere");
cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "postgres"); cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "postgres");
cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "rdp"); cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "rdp");
cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "redis");
cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "rexec"); cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "rexec");
cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "rlogin"); cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "rlogin");
cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "rsh"); cmbProtocol_items = g_list_append(cmbProtocol_items, (gpointer) "rsh");
@ -454,9 +456,15 @@ GtkWidget *create_wndMain(void) {
chkUsernameLoop = gtk_check_button_new_with_mnemonic("Loop around users"); chkUsernameLoop = gtk_check_button_new_with_mnemonic("Loop around users");
gtk_widget_set_name(chkUsernameLoop, "chkUsernameLoop"); gtk_widget_set_name(chkUsernameLoop, "chkUsernameLoop");
gtk_widget_show(chkUsernameLoop); gtk_widget_show(chkUsernameLoop);
gtk_table_attach(GTK_TABLE(table2), chkUsernameLoop, 0, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK), (GtkAttachOptions) (GTK_EXPAND), 0, 0); gtk_table_attach(GTK_TABLE(table2), chkUsernameLoop, 0, 1, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK), (GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_tooltips_set_tip(tooltips, chkUsernameLoop, "Enable this option to loop around users not passwords", NULL); gtk_tooltips_set_tip(tooltips, chkUsernameLoop, "Enable this option to loop around users not passwords", NULL);
chkDisUser = gtk_check_button_new_with_mnemonic("Protocol does not require usernames");
gtk_widget_set_name(chkDisUser, "chkDisUser");
gtk_widget_show(chkDisUser);
gtk_table_attach(GTK_TABLE (table2), chkDisUser, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK), (GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_tooltips_set_tip(tooltips, chkDisUser, "Protocols like Cisco, Cisco enable, redis, Oracle listener, SNMP, S7-300, VNC etc. are not using usernames", NULL);
label8 = gtk_label_new("Username"); label8 = gtk_label_new("Username");
gtk_widget_set_name(label8, "label8"); gtk_widget_set_name(label8, "label8");
gtk_widget_show(label8); gtk_widget_show(label8);
@ -536,7 +544,7 @@ GtkWidget *create_wndMain(void) {
gtk_widget_set_name(chkColon, "chkColon"); gtk_widget_set_name(chkColon, "chkColon");
gtk_widget_show(chkColon); gtk_widget_show(chkColon);
gtk_table_attach(GTK_TABLE(table5), chkColon, 0, 1, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK), (GtkAttachOptions) (GTK_EXPAND), 0, 0); gtk_table_attach(GTK_TABLE(table5), chkColon, 0, 1, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK), (GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_tooltips_set_tip(tooltips, chkColon, "\"Enable this option to use a colon file for login/password attempts", NULL); gtk_tooltips_set_tip(tooltips, chkColon, "Enable this option to use a colon file for login/password attempts", NULL);
entColonFile = gtk_entry_new(); entColonFile = gtk_entry_new();
gtk_widget_set_name(entColonFile, "entColonFile"); gtk_widget_set_name(entColonFile, "entColonFile");
@ -1030,6 +1038,7 @@ GtkWidget *create_wndMain(void) {
g_signal_connect((gpointer) quit1, "button-press-event", G_CALLBACK(on_quit1_activate), NULL); g_signal_connect((gpointer) quit1, "button-press-event", G_CALLBACK(on_quit1_activate), NULL);
g_signal_connect((gpointer) entTargetFile, "button_press_event", G_CALLBACK(on_entTargetFile_button_press_event), NULL); g_signal_connect((gpointer) entTargetFile, "button_press_event", G_CALLBACK(on_entTargetFile_button_press_event), NULL);
g_signal_connect((gpointer) entUsernameFile, "button_press_event", G_CALLBACK(on_entUsernameFile_button_press_event), NULL); g_signal_connect((gpointer) entUsernameFile, "button_press_event", G_CALLBACK(on_entUsernameFile_button_press_event), NULL);
g_signal_connect((gpointer) chkDisUser, "toggled", G_CALLBACK (on_chkDisUser_toggled), NULL);
g_signal_connect((gpointer) entPassFile, "button_press_event", G_CALLBACK(on_entPassFile_button_press_event), NULL); g_signal_connect((gpointer) entPassFile, "button_press_event", G_CALLBACK(on_entPassFile_button_press_event), NULL);
g_signal_connect((gpointer) chkColon, "toggled", G_CALLBACK(on_chkColon_toggled), NULL); g_signal_connect((gpointer) chkColon, "toggled", G_CALLBACK(on_chkColon_toggled), NULL);
g_signal_connect((gpointer) entColonFile, "button_press_event", G_CALLBACK(on_entColonFile_button_press_event), NULL); g_signal_connect((gpointer) entColonFile, "button_press_event", G_CALLBACK(on_entColonFile_button_press_event), NULL);
@ -1076,6 +1085,7 @@ GtkWidget *create_wndMain(void) {
GLADE_HOOKUP_OBJECT(wndMain, radioUsername1, "radioUsername1"); GLADE_HOOKUP_OBJECT(wndMain, radioUsername1, "radioUsername1");
GLADE_HOOKUP_OBJECT(wndMain, chkUsernameLoop, "chkUsernameLoop"); GLADE_HOOKUP_OBJECT(wndMain, chkUsernameLoop, "chkUsernameLoop");
GLADE_HOOKUP_OBJECT(wndMain, radioUsername2, "radioUsername2"); GLADE_HOOKUP_OBJECT(wndMain, radioUsername2, "radioUsername2");
GLADE_HOOKUP_OBJECT (wndMain, chkDisUser, "chkDisUser");
GLADE_HOOKUP_OBJECT(wndMain, label8, "label8"); GLADE_HOOKUP_OBJECT(wndMain, label8, "label8");
GLADE_HOOKUP_OBJECT(wndMain, frmPass, "frmPass"); GLADE_HOOKUP_OBJECT(wndMain, frmPass, "frmPass");
GLADE_HOOKUP_OBJECT(wndMain, table3, "table3"); GLADE_HOOKUP_OBJECT(wndMain, table3, "table3");

View file

@ -158,7 +158,7 @@ char *SERVICES =
#define RESTOREFILE "./hydra.restore" #define RESTOREFILE "./hydra.restore"
#define PROGRAM "Hydra" #define PROGRAM "Hydra"
#define VERSION "v8.1" #define VERSION "v8.2-dev"
#define AUTHOR "van Hauser/THC" #define AUTHOR "van Hauser/THC"
#define EMAIL "<vh@thc.org>" #define EMAIL "<vh@thc.org>"
#define RESOURCE "http://www.thc.org/thc-hydra" #define RESOURCE "http://www.thc.org/thc-hydra"