mirror of
https://github.com/vanhauser-thc/thc-hydra.git
synced 2025-07-16 10:03:09 -07:00
xhydra patch
This commit is contained in:
parent
0a2b1fa61b
commit
d04ba5b349
5 changed files with 49 additions and 11 deletions
1
CHANGES
1
CHANGES
|
@ -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?
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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");
|
||||||
|
|
2
hydra.c
2
hydra.c
|
@ -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"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue