net-analyzer/hydra: Fix -fno-common issues
authorJeroen Roovers <jer@gentoo.org>
Sun, 26 Jan 2020 16:42:16 +0000 (17:42 +0100)
committerJeroen Roovers <jer@gentoo.org>
Sun, 26 Jan 2020 16:43:48 +0000 (17:43 +0100)
Package-Manager: Portage-2.3.85, Repoman-2.3.20
Bug: https://bugs.gentoo.org/706416
Signed-off-by: Jeroen Roovers <jer@gentoo.org>
net-analyzer/hydra/files/hydra-9.0-fcommon-gtk.patch [new file with mode: 0644]
net-analyzer/hydra/files/hydra-9.0-fcommon-http.patch [new file with mode: 0644]
net-analyzer/hydra/files/hydra-9.0-fcommon-mod.patch [new file with mode: 0644]
net-analyzer/hydra/files/hydra-9.0-fcommon-mods.patch [new file with mode: 0644]
net-analyzer/hydra/files/hydra-9.0-unneeded-buf.patch [new file with mode: 0644]
net-analyzer/hydra/files/hydra-9.0-vnc.patch [new file with mode: 0644]
net-analyzer/hydra/files/hydra-9999999-fcommon-http.patch [new file with mode: 0644]
net-analyzer/hydra/hydra-9.0-r1.ebuild [new file with mode: 0644]
net-analyzer/hydra/hydra-9999999.ebuild

diff --git a/net-analyzer/hydra/files/hydra-9.0-fcommon-gtk.patch b/net-analyzer/hydra/files/hydra-9.0-fcommon-gtk.patch
new file mode 100644 (file)
index 0000000..02ebab6
--- /dev/null
@@ -0,0 +1,79 @@
+--- a/hydra-gtk/src/callbacks.c
++++ b/hydra-gtk/src/callbacks.c
+@@ -66,7 +66,7 @@ int hydra_get_options(char *options[]) {
+   gchar *tmp;
+   GString *a;
+-  options[0] = HYDRA_BIN;
++  options[0] = hydra_bin;
+   /* get the port */
+   widget = lookup_widget(GTK_WIDGET(wndMain), "spnPort");
+@@ -599,7 +599,7 @@ int *popen_re_unbuffered(char *command) {
+     (void) hydra_get_options(options);
+-    execv(HYDRA_BIN, options);
++    execv(hydra_bin, options);
+     g_warning("%s %i: popen_rw_unbuffered: execv() returned", __FILE__, __LINE__);
+--- a/hydra-gtk/src/main.c
++++ b/hydra-gtk/src/main.c
+@@ -17,12 +17,12 @@
+ char *hydra_path1 = "./hydra";
+ char *hydra_path2 = "/usr/local/bin/hydra";
+ char *hydra_path3 = "/usr/bin/hydra";
+-
++char *hydra_bin;
++GtkWidget *wndMain;
++guint message_id;
+ int main(int argc, char *argv[]) {
+-  extern GtkWidget *wndMain;
+   int i;
+-  extern guint message_id;
+   GtkWidget *output;
+   GtkTextBuffer *outputbuf;
+@@ -35,22 +35,22 @@ int main(int argc, char *argv[]) {
+   message_id = 0;
+   /* locate the hydra binary */
+-  HYDRA_BIN = NULL;
++  hydra_bin = NULL;
+   for (i = 0; i < argc - 1; i++) {
+     if (!strcmp(argv[i], "--hydra-path")) {
+-      HYDRA_BIN = argv[i + 1];
++      hydra_bin = argv[i + 1];
+       break;
+     }
+   }
+-  if ((HYDRA_BIN != NULL) && (g_file_test(HYDRA_BIN, G_FILE_TEST_IS_EXECUTABLE))) {
++  if ((hydra_bin != NULL) && (g_file_test(hydra_bin, G_FILE_TEST_IS_EXECUTABLE))) {
+     /* just for obfuscation *g* */
+   } else if (g_file_test(hydra_path1, G_FILE_TEST_IS_EXECUTABLE)) {
+-    HYDRA_BIN = hydra_path1;
++    hydra_bin = hydra_path1;
+   } else if (g_file_test(hydra_path2, G_FILE_TEST_IS_EXECUTABLE)) {
+-    HYDRA_BIN = hydra_path2;
++    hydra_bin = hydra_path2;
+   } else if (g_file_test(hydra_path3, G_FILE_TEST_IS_EXECUTABLE)) {
+-    HYDRA_BIN = hydra_path3;
++    hydra_bin = hydra_path3;
+   } else {
+     g_error("Please tell me where hydra is, use --hydra-path\n");
+     return -1;
+--- a/hydra-gtk/src/support.h
++++ b/hydra-gtk/src/support.h
+@@ -40,6 +40,6 @@ GdkPixbuf *create_pixbuf(const gchar * filename);
+ void glade_set_atk_action_description(AtkAction * action, const gchar * action_name, const gchar * description);
+-GtkWidget *wndMain;
+-char *HYDRA_BIN;
+-guint message_id;
++extern GtkWidget *wndMain;
++extern char *hydra_bin;
++extern guint message_id;
diff --git a/net-analyzer/hydra/files/hydra-9.0-fcommon-http.patch b/net-analyzer/hydra/files/hydra-9.0-fcommon-http.patch
new file mode 100644 (file)
index 0000000..35b45e0
--- /dev/null
@@ -0,0 +1,27 @@
+--- a/hydra-http.c
++++ b/hydra-http.c
+@@ -5,7 +5,7 @@
+ char *webtarget = NULL;
+ char *slash = "/";
+ char *http_buf = NULL;
+-int32_t webport, freemischttp = 0;
++int32_t freemischttp = 0;
+ int32_t http_auth_mechanism = AUTH_UNASSIGNED;
+ int32_t start_http(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp, char *type, ptr_header_node ptr_head) {
+@@ -22,6 +22,7 @@ int32_t start_http(int32_t s, char *ip, int32_t port, unsigned char options, cha
+   char *ptr, *fooptr;
+   int32_t complete_line = 0, buffer_size;
+   char tmpreplybuf[1024] = "", *tmpreplybufptr;
++  int32_t webport;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+@@ -291,6 +292,7 @@ void service_http(char *ip, int32_t sp, unsigned char options, char *miscptr, FI
+   int32_t myport = PORT_HTTP, mysslport = PORT_HTTP_SSL;
+   char *ptr, *ptr2;
+   ptr_header_node ptr_head = NULL;
++  int32_t webport;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
diff --git a/net-analyzer/hydra/files/hydra-9.0-fcommon-mod.patch b/net-analyzer/hydra/files/hydra-9.0-fcommon-mod.patch
new file mode 100644 (file)
index 0000000..e16a415
--- /dev/null
@@ -0,0 +1,63 @@
+--- a/hydra-mod.c
++++ b/hydra-mod.c
+@@ -48,6 +48,19 @@ char ipstring[64];
+ uint32_t colored_output = 1;
+ char quiet = 0;
+ int32_t old_ssl = 0;
++int32_t debug;
++char *proxy_authentication[MAX_PROXY_COUNT];
++int32_t proxy_count;
++char proxy_string_ip[MAX_PROXY_COUNT][36];
++char proxy_string_type[MAX_PROXY_COUNT][10];
++int32_t proxy_string_port[MAX_PROXY_COUNT];
++int32_t selected_proxy;
++int32_t verbose;
++int32_t waittime;
++int32_t use_proxy;
++int32_t port;
++char *cmdlinetarget;
++int32_t found;
+ #ifdef LIBOPENSSL
+ SSL *ssl = NULL;
+--- a/hydra-mod.h
++++ b/hydra-mod.h
+@@ -49,23 +49,23 @@ extern int32_t hydra_memsearch(char *haystack, int32_t hlen, char *needle, int32
+ extern char *hydra_strrep(char *string, char *oldpiece, char *newpiece);
+ #ifdef HAVE_PCRE
+-int32_t hydra_string_match(char *str, const char *regex);
++extern int32_t hydra_string_match(char *str, const char *regex);
+ #endif
+-char *hydra_string_replace(const char *string, const char *substr, const char *replacement);
++extern char *hydra_string_replace(const char *string, const char *substr, const char *replacement);
+-int32_t debug;
+-int32_t verbose;
+-int32_t waittime;
+-int32_t port;
+-int32_t found;
+-int32_t proxy_count;
+-int32_t use_proxy;
+-int32_t selected_proxy;
+-char proxy_string_ip[MAX_PROXY_COUNT][36];
+-int32_t proxy_string_port[MAX_PROXY_COUNT];
+-char proxy_string_type[MAX_PROXY_COUNT][10];
+-char *proxy_authentication[MAX_PROXY_COUNT];
+-char *cmdlinetarget;
++extern int32_t debug;
++extern int32_t verbose;
++extern int32_t waittime;
++extern int32_t port;
++extern int32_t found;
++extern int32_t proxy_count;
++extern int32_t use_proxy;
++extern int32_t selected_proxy;
++extern char proxy_string_ip[MAX_PROXY_COUNT][36];
++extern int32_t proxy_string_port[MAX_PROXY_COUNT];
++extern char proxy_string_type[MAX_PROXY_COUNT][10];
++extern char *proxy_authentication[MAX_PROXY_COUNT];
++extern char *cmdlinetarget;
+ typedef int32_t BOOL;
diff --git a/net-analyzer/hydra/files/hydra-9.0-fcommon-mods.patch b/net-analyzer/hydra/files/hydra-9.0-fcommon-mods.patch
new file mode 100644 (file)
index 0000000..9d63aa9
--- /dev/null
@@ -0,0 +1,496 @@
+--- a/hydra-asterisk.c
++++ b/hydra-asterisk.c
+@@ -9,11 +9,11 @@
+ extern char *HYDRA_EXIT;
+-char *buf;
+-
+ int32_t start_asterisk(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "\"\"";
+   char *login, *pass, buffer[1024];
++  char *buf;
++
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+@@ -65,6 +65,7 @@ int32_t start_asterisk(int32_t s, char *ip, int32_t port, unsigned char options,
+ void service_asterisk(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname) {
+   int32_t run = 1, next_run = 1, sock = -1;
+   int32_t myport = PORT_ASTERISK, mysslport = PORT_ASTERISK_SSL;
++  char *buf;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-cisco-enable.c
++++ b/hydra-cisco-enable.c
+@@ -1,11 +1,11 @@
+ #include "hydra-mod.h"
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t start_cisco_enable(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "";
+   char *pass, buffer[300];
++  char *buf;
+   if (strlen(pass = hydra_get_next_password()) == 0)
+     pass = empty;
+@@ -63,6 +63,7 @@ void service_cisco_enable(char *ip, int32_t sp, unsigned char options, char *mis
+   int32_t myport = PORT_TELNET, mysslport = PORT_TELNET_SSL;
+   char buffer[300];
+   char *login;
++  char *buf;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-cisco.c
++++ b/hydra-cisco.c
+@@ -5,11 +5,11 @@
+ #endif
+ extern char *HYDRA_EXIT;
+-char *buf = NULL;
+ int32_t start_cisco(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "";
+   char *pass, buffer[300];
++  char *buf = NULL;
+   if (strlen(pass = hydra_get_next_password()) == 0)
+     pass = empty;
+--- a/hydra-cvs.c
++++ b/hydra-cvs.c
+@@ -3,7 +3,6 @@
+ extern int32_t hydra_data_ready_timed(int32_t socket, long sec, long usec);
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t start_cvs(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "";
+@@ -37,6 +36,7 @@ int32_t start_cvs(int32_t s, char *ip, int32_t port, unsigned char options, char
+     0, 121, 117, 104, 101, 100, 69, 73, 99, 63, 94, 93, 39, 37, 61, 48,
+     58, 113, 32, 90, 44, 98, 60, 51, 33, 97, 62
+   };
++  char *buf;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+--- a/hydra-ftp.c
++++ b/hydra-ftp.c
+@@ -1,11 +1,11 @@
+ #include "hydra-mod.h"
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t start_ftp(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "\"\"";
+   char *login, *pass, buffer[510];
++  char *buf;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+@@ -77,6 +77,7 @@ int32_t start_ftp(int32_t s, char *ip, int32_t port, unsigned char options, char
+ void service_ftp_core(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname, int32_t tls) {
+   int32_t run = 1, next_run = 1, sock = -1;
+   int32_t myport = PORT_FTP, mysslport = PORT_FTP_SSL;
++  char *buf;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-http-form.c
++++ b/hydra-http-form.c
+@@ -53,7 +53,6 @@ Added fail or success condition, getting cookies, and allow 5 redirections by da
+ #include "sasl.h"
+ extern char *HYDRA_EXIT;
+-char *buf;
+ char *cond;
+ extern int32_t http_auth_mechanism;
+@@ -579,6 +578,7 @@ return -1 if no response from server
+ */
+ int32_t analyze_server_response(int32_t s) {
+   int32_t runs = 0;
++  char *buf;
+   redirected_flag = 0;
+   auth_flag = 0;
+--- a/hydra-http-proxy-urlenum.c
++++ b/hydra-http-proxy-urlenum.c
+@@ -2,7 +2,6 @@
+ #include "sasl.h"
+ extern char *HYDRA_EXIT;
+-char *buf;
+ static int32_t http_proxy_auth_mechanism = AUTH_ERROR;
+ int32_t start_http_proxy_urlenum(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp, char *hostname) {
+@@ -12,6 +11,7 @@ int32_t start_http_proxy_urlenum(int32_t s, char *ip, int32_t port, unsigned cha
+   char *header = "";            /* XXX TODO */
+   char *ptr;
+   int32_t auth = 0;
++  char *buf;
+   login = hydra_get_next_login();
+   if (login == NULL || strlen(login) == 0 || strstr(login, "://") == NULL) {
+--- a/hydra-imap.c
++++ b/hydra-imap.c
+@@ -2,7 +2,6 @@
+ #include "sasl.h"
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t counter;
+ int32_t imap_auth_mechanism = AUTH_CLEAR;
+@@ -42,6 +41,7 @@ char *imap_read_server_capacity(int32_t sock) {
+ int32_t start_imap(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "";
+   char *login, *pass, buffer[500], buffer2[500], *fooptr;
++  char *buf = NULL;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+@@ -357,6 +357,7 @@ void service_imap(char *ip, int32_t sp, unsigned char options, char *miscptr, FI
+   int32_t run = 1, next_run = 1, sock = -1;
+   int32_t myport = PORT_IMAP, mysslport = PORT_IMAP_SSL, disable_tls = 1;
+   char *buffer1 = "1 CAPABILITY\r\n";
++  char *buf = NULL;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-ldap.c
++++ b/hydra-ldap.c
+@@ -3,8 +3,6 @@
+ extern char *HYDRA_EXIT;
+-unsigned char *buf;
+-int32_t counter;
+ int32_t tls_required = 0;
+ int32_t start_ldap(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp, char *hostname, char version, int32_t auth_method) {
+@@ -13,6 +11,8 @@ int32_t start_ldap(int32_t s, char *ip, int32_t port, unsigned char options, cha
+   unsigned char buffer[512];
+   int32_t length = 0;
+   int32_t ldap_auth_mechanism = auth_method;
++  unsigned char *buf;
++  int32_t counter;
+   /*
+      The LDAP "simple" method has three modes of operation:
+@@ -354,6 +354,8 @@ int32_t start_ldap(int32_t s, char *ip, int32_t port, unsigned char options, cha
+ void service_ldap(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname, char version, int32_t auth_method) {
+   int32_t run = 1, next_run = 1, sock = -1;
+   int32_t myport = PORT_LDAP, mysslport = PORT_LDAP_SSL;
++  unsigned char *buf;
++  int32_t counter;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-mongodb.c
++++ b/hydra-mongodb.c
+@@ -17,7 +17,6 @@ void dummy_mongodb() {
+ extern int32_t hydra_data_ready_timed(int32_t socket, long sec, long usec);
+ extern char *HYDRA_EXIT;
+-char *buf;
+ #define DEFAULT_DB "admin"
+@@ -31,6 +30,7 @@ int is_error_msg(char *msg) {
+ }
+ int require_auth(int32_t sock) {
++  char *buf;
+   unsigned char m_hdr[] =
+     "\x3f\x00\x00\x00"  //messageLength (63)
+     "\x00\x00\x00\x41"  //requestID
+--- a/hydra-mssql.c
++++ b/hydra-mssql.c
+@@ -3,7 +3,6 @@
+ #define MSLEN 30
+ extern char *HYDRA_EXIT;
+-char *buf;
+ unsigned char p_hdr[] =
+   "\x02\x00\x02\x00\x00\x00\x02\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+@@ -52,6 +51,7 @@ int32_t start_mssql(int32_t s, char *ip, int32_t port, unsigned char options, ch
+   char ms_pass[MSLEN + 1];
+   unsigned char len_login, len_pass;
+   int32_t ret = -1;
++  char *buf;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+--- a/hydra-nntp.c
++++ b/hydra-nntp.c
+@@ -13,7 +13,6 @@ RFC 4643: Network News Transfer Protocol (NNTP) Extension for Authentication
+ int32_t nntp_auth_mechanism = AUTH_CLEAR;
+ extern char *HYDRA_EXIT;
+-char *buf;
+ char *nntp_read_server_capacity(int32_t sock) {
+   char *ptr = NULL;
+@@ -51,6 +50,7 @@ int32_t start_nntp(int32_t s, char *ip, int32_t port, unsigned char options, cha
+   char *empty = "\"\"";
+   char *login, *pass, buffer[500], buffer2[500], *fooptr;
+   int32_t i = 1;
++  char *buf;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+@@ -270,6 +270,7 @@ void service_nntp(char *ip, int32_t sp, unsigned char options, char *miscptr, FI
+   int32_t i = 0, run = 1, next_run = 1, sock = -1;
+   int32_t myport = PORT_NNTP, mysslport = PORT_NNTP_SSL, disable_tls = 0;
+   char *buffer1 = "CAPABILITIES\r\n";
++  char *buf;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-oracle-listener.c
++++ b/hydra-oracle-listener.c
+@@ -22,8 +22,6 @@ void dummy_oracle_listener() {
+ #define HASHSIZE 17
+ extern char *HYDRA_EXIT;
+-char *buf;
+-unsigned char *hash;
+ int32_t sid_mechanism = AUTH_PLAIN;
+ int32_t initial_permutation(unsigned char **result, char *p_str, int32_t *sz) {
+@@ -143,6 +141,7 @@ int32_t ora_hash_password(char *pass) {
+   unsigned char *desresult;
+   unsigned char *result;
+   char buff[strlen(pass) + 5];
++  unsigned char *hash;
+   memset(buff, 0, sizeof(buff));
+@@ -192,6 +191,8 @@ int32_t start_oracle_listener(int32_t s, char *ip, int32_t port, unsigned char o
+   char connect_string[200];
+   char buffer2[260];
+   int32_t siz = 0;
++  char *buf;
++  unsigned char *hash;
+   memset(connect_string, 0, sizeof(connect_string));
+   memset(buffer2, 0, sizeof(buffer2));
+--- a/hydra-oracle-sid.c
++++ b/hydra-oracle-sid.c
+@@ -19,7 +19,6 @@ void dummy_oracle_sid() {
+ #define HASHSIZE 16
+ extern char *HYDRA_EXIT;
+-char *buf;
+ unsigned char *hash;
+@@ -40,6 +39,7 @@ int32_t start_oracle_sid(int32_t s, char *ip, int32_t port, unsigned char option
+   char connect_string[200];
+   char buffer2[260];
+   int32_t siz = 0;
++  char *buf;
+   memset(connect_string, 0, sizeof(connect_string));
+   memset(buffer2, 0, sizeof(buffer2));
+--- a/hydra-pcnfs.c
++++ b/hydra-pcnfs.c
+@@ -3,7 +3,6 @@
+ /* pcnfs stuff copied from prout.c */
+ extern char *HYDRA_EXIT;
+-char *buf;
+ #define LEN_HDR_RPC   24
+ #define LEN_AUTH_UNIX   72+12
+@@ -37,6 +36,7 @@ int32_t start_pcnfs(int32_t s, char *ip, int32_t port, unsigned char options, ch
+   char *empty = "";
+   char *login, *pass, buffer[LEN_HDR_RPC + LEN_AUTH_UNIX + LEN_HDR_PCN_AUTH];
+   char *ptr, *pkt = buffer;
++  char *buf;
+   unsigned long *authp;
+   struct timeval tv;
+--- a/hydra-pop3.c
++++ b/hydra-pop3.c
+@@ -13,7 +13,6 @@ typedef struct pool_str {
+ } pool;
+ extern char *HYDRA_EXIT;
+-char *buf;
+ char apop_challenge[300] = "";
+ pool *plist = NULL, *p = NULL;
+@@ -120,6 +119,7 @@ STLS
+ int32_t start_pop3(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "\"\"";
+   char *login, *pass, buffer[500], buffer2[500], *fooptr;
++  char *buf;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+@@ -416,6 +416,7 @@ int32_t start_pop3(int32_t s, char *ip, int32_t port, unsigned char options, cha
+ void service_pop3(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname) {
+   int32_t run = 1, next_run = 1, sock = -1;
+   char *ptr = NULL;
++  char *buf;
+   //extract data from the pool, ip is the key
+   if (plist == NULL)
+@@ -520,6 +521,7 @@ int32_t service_pop3_init(char *ip, int32_t sp, unsigned char options, char *mis
+   char *capa_str = "CAPA\r\n";
+   char *quit_str = "QUIT\r\n";
+   pool p;
++  char *buf;
+   p.pop3_auth_mechanism = AUTH_CLEAR;
+   p.disable_tls = 1;
+--- a/hydra-redis.c
++++ b/hydra-redis.c
+@@ -1,11 +1,11 @@
+ #include "hydra-mod.h"
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t start_redis(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *pass, buffer[510];
+   char *empty = "";
++  char *buf;
+   if (strlen(pass = hydra_get_next_password()) == 0)
+     pass = empty;
+@@ -134,6 +134,7 @@ int32_t service_redis_init(char *ip, int32_t sp, unsigned char options, char *mi
+   int32_t sock = -1;
+   int32_t myport = PORT_REDIS, mysslport = PORT_REDIS_SSL;
+   char buffer[] = "*1\r\n$4\r\nping\r\n";
++  char *buf;
+   hydra_register_socket(sp);
+   if ((options & OPTION_SSL) == 0) {
+--- a/hydra-smtp-enum.c
++++ b/hydra-smtp-enum.c
+@@ -14,7 +14,6 @@ passwd will be used as the domain name
+ #include "hydra-mod.h"
+ extern char *HYDRA_EXIT;
+-char *buf;
+ char *err = NULL;
+ int32_t tosent = 0;
+@@ -27,6 +26,7 @@ int32_t smtp_enum_cmd = VRFY;
+ int32_t start_smtp_enum(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "";
+   char *login, *pass, buffer[500];
++  char *buf;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+@@ -154,6 +154,7 @@ void service_smtp_enum(char *ip, int32_t sp, unsigned char options, char *miscpt
+   int32_t run = 1, next_run = 1, sock = -1, i = 0;
+   int32_t myport = PORT_SMTP, mysslport = PORT_SMTP_SSL;
+   char *buffer = "HELO hydra\r\n";
++  char *buf;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-socks5.c
++++ b/hydra-socks5.c
+@@ -10,7 +10,6 @@ This module enable bruteforcing for socks5, only following types are supported:
+ */
+ extern char *HYDRA_EXIT;
+-unsigned char *buf;
+ int32_t fail_cnt;
+@@ -18,6 +17,7 @@ int32_t start_socks5(int32_t s, char *ip, int32_t port, unsigned char options, c
+   char *empty = "";
+   char *login, *pass, buffer[300];
+   int32_t pport, fud = 0;
++  unsigned char *buf;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+--- a/hydra-telnet.c
++++ b/hydra-telnet.c
+@@ -2,13 +2,13 @@
+ #include <arpa/telnet.h>
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t no_line_mode;
+ int32_t start_telnet(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "";
+   char *login, *pass, buffer[300];
+   int32_t i = 0;
++  char *buf;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+@@ -99,6 +99,7 @@ int32_t start_telnet(int32_t s, char *ip, int32_t port, unsigned char options, c
+ void service_telnet(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname) {
+   int32_t run = 1, next_run = 1, sock = -1, fck;
+   int32_t myport = PORT_TELNET, mysslport = PORT_TELNET_SSL;
++  char *buf;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-vmauthd.c
++++ b/hydra-vmauthd.c
+@@ -8,11 +8,11 @@
+ extern char *HYDRA_EXIT;
+-char *buf;
+-
+ int32_t start_vmauthd(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "\"\"";
+   char *login, *pass, buffer[300];
++  char *buf;
++
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+@@ -68,6 +68,7 @@ int32_t start_vmauthd(int32_t s, char *ip, int32_t port, unsigned char options,
+ void service_vmauthd(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname) {
+   int32_t run = 1, next_run = 1, sock = -1;
+   int32_t myport = PORT_VMAUTHD, mysslport = PORT_VMAUTHD_SSL;
++  char *buf;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-vnc.c
++++ b/hydra-vnc.c
+@@ -19,7 +19,6 @@ int32_t vnc_client_version = RFB33;
+ int32_t failed_auth = 0;
+ extern char *HYDRA_EXIT;
+-char *buf;
+ /*
+  * Encrypt CHALLENGESIZE bytes in memory using a password.
+@@ -48,6 +47,7 @@ int32_t start_vnc(int32_t s, char *ip, int32_t port, unsigned char options, char
+   char *empty = "";
+   char *pass;
+   unsigned char buf2[CHALLENGESIZE + 4];
++  char *buf;
+   if (strlen(pass = hydra_get_next_password()) == 0)
+     pass = empty;
+@@ -148,6 +148,7 @@ int32_t start_vnc(int32_t s, char *ip, int32_t port, unsigned char options, char
+ void service_vnc(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname) {
+   int32_t run = 1, next_run = 1, sock = -1;
+   int32_t myport = PORT_VNC, mysslport = PORT_VNC_SSL;
++  char *buf;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
diff --git a/net-analyzer/hydra/files/hydra-9.0-unneeded-buf.patch b/net-analyzer/hydra/files/hydra-9.0-unneeded-buf.patch
new file mode 100644 (file)
index 0000000..0055257
--- /dev/null
@@ -0,0 +1,60 @@
+--- a/hydra-irc.c
++++ b/hydra-irc.c
+@@ -7,7 +7,6 @@ RFC 1459: Internet Relay Chat Protocol
+ */
+ extern char *HYDRA_EXIT;
+-char *buf;
+ char buffer[300] = "";
+ int32_t myport = PORT_IRC, mysslport = PORT_IRC_SSL;
+--- a/hydra-rexec.c
++++ b/hydra-rexec.c
+@@ -5,7 +5,6 @@
+ #define COMMAND "/bin/ls /"
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t start_rexec(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "";
+--- a/hydra-rlogin.c
++++ b/hydra-rlogin.c
+@@ -12,7 +12,6 @@ no memleaks found on 110425
+ #define TERM "vt100/9600"
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t start_rlogin(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "";
+--- a/hydra-rsh.c
++++ b/hydra-rsh.c
+@@ -11,7 +11,6 @@ no memleaks found on 110425
+ */
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t start_rsh(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "";
+--- a/hydra-rtsp.c
++++ b/hydra-rtsp.c
+@@ -12,7 +12,6 @@
+ #include "sasl.h"
+ extern char *HYDRA_EXIT;
+-char *buf;
+ char packet[500];
+ char packet2[500];
+--- a/hydra-teamspeak.c
++++ b/hydra-teamspeak.c
+@@ -36,7 +36,6 @@ struct team_speak {
+ extern int32_t hydra_data_ready_timed(int32_t socket, long sec, long usec);
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t start_teamspeak(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+   char *empty = "";
diff --git a/net-analyzer/hydra/files/hydra-9.0-vnc.patch b/net-analyzer/hydra/files/hydra-9.0-vnc.patch
new file mode 100644 (file)
index 0000000..69c933e
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/hydra-vnc.c
++++ b/hydra-vnc.c
+@@ -75,7 +75,7 @@ int32_t start_vnc(int32_t s, char *ip, int32_t port, unsigned char options, char
+   //supported security type
+   switch (buf2[3]) {
+   case 0x0:
+-    hydra_report(stderr, "[ERROR] VNC server told us to quit %c\n", buf[3]);
++    hydra_report(stderr, "[ERROR] VNC server told us to quit %c\n", buf2[3]);
+     hydra_child_exit(0);
+     break;
+   case 0x1:
diff --git a/net-analyzer/hydra/files/hydra-9999999-fcommon-http.patch b/net-analyzer/hydra/files/hydra-9999999-fcommon-http.patch
new file mode 100644 (file)
index 0000000..eea0c3b
--- /dev/null
@@ -0,0 +1,27 @@
+--- a/hydra-http.c
++++ b/hydra-http.c
+@@ -12,7 +12,7 @@ char *http_buf = NULL;
+ static char end_condition[END_CONDITION_MAX_LEN];
+ int end_condition_type=-1;
+-int32_t webport, freemischttp = 0;
++int32_t freemischttp = 0;
+ int32_t http_auth_mechanism = AUTH_UNASSIGNED;
+ int32_t start_http(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp, char *type, ptr_header_node ptr_head) {
+@@ -22,6 +22,7 @@ int32_t start_http(int32_t s, char *ip, int32_t port, unsigned char options, cha
+   char *ptr, *fooptr;
+   int32_t complete_line = 0, buffer_size;
+   char tmpreplybuf[1024] = "", *tmpreplybufptr;
++  int32_t webport;
+   if (strlen(login = hydra_get_next_login()) == 0)
+     login = empty;
+@@ -291,6 +292,7 @@ void service_http(char *ip, int32_t sp, unsigned char options, char *miscptr, FI
+   int32_t myport = PORT_HTTP, mysslport = PORT_HTTP_SSL;
+   char *ptr, *ptr2;
+   ptr_header_node ptr_head = NULL;
++  int32_t webport;
+   hydra_register_socket(sp);
+   if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
diff --git a/net-analyzer/hydra/hydra-9.0-r1.ebuild b/net-analyzer/hydra/hydra-9.0-r1.ebuild
new file mode 100644 (file)
index 0000000..c7b1e8a
--- /dev/null
@@ -0,0 +1,131 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit toolchain-funcs
+
+DESCRIPTION="Parallelized network login hacker"
+HOMEPAGE="https://github.com/vanhauser-thc/thc-hydra"
+SRC_URI="https://github.com/vanhauser-thc/thc-hydra/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+IUSE="
+       debug firebird gcrypt gtk idn libressl memcached mongodb mysql ncp ncurses
+       oracle pcre postgres rdp libssh subversion zlib
+"
+
+RDEPEND="
+       gtk? (
+               dev-libs/atk
+               dev-libs/glib:2
+               x11-libs/gdk-pixbuf:2
+               x11-libs/gtk+:2
+       )
+       firebird? ( dev-db/firebird )
+       gcrypt? ( dev-libs/libgcrypt )
+       idn? ( net-dns/libidn:0= )
+       !libressl? ( dev-libs/openssl:0= )
+       libressl? ( dev-libs/libressl:0= )
+       memcached? ( dev-libs/libmemcached[sasl] )
+       mongodb? ( dev-libs/mongo-c-driver )
+       mysql? ( dev-db/mysql-connector-c:0= )
+       ncp? ( net-fs/ncpfs )
+       ncurses? ( sys-libs/ncurses:= )
+       oracle? ( dev-db/oracle-instantclient-basic )
+       pcre? ( dev-libs/libpcre )
+       postgres? ( dev-db/postgresql:* )
+       rdp? ( net-misc/freerdp )
+       libssh? ( >=net-libs/libssh-0.4.0 )
+       subversion? ( dev-vcs/subversion )
+       zlib? ( sys-libs/zlib )
+"
+DEPEND="
+       ${RDEPEND}
+       virtual/pkgconfig
+"
+PATCHES=(
+       "${FILESDIR}"/${PN}-9.0-fcommon-gtk.patch
+       "${FILESDIR}"/${PN}-9.0-fcommon-http.patch
+       "${FILESDIR}"/${PN}-9.0-fcommon-mod.patch
+       "${FILESDIR}"/${PN}-9.0-fcommon-mods.patch
+       "${FILESDIR}"/${PN}-9.0-unneeded-buf.patch
+       "${FILESDIR}"/${PN}-9.0-vnc.patch
+)
+S=${WORKDIR}/thc-${P}
+
+src_prepare() {
+       default
+
+       # None of the settings in Makefile.unix are useful to us
+       mv Makefile.unix{,.gentoo_unused} || die
+       touch Makefile.unix || die
+
+       sed -i \
+               -e 's:|| echo.*$::' \
+               -e '/\t-$(CC)/s:-::' \
+               -e '/^OPTS/{s|=|+=|;s| -O3||}' \
+               -e '/ -o /s:$(OPTS):& $(LDFLAGS):g' \
+               Makefile.am || die
+}
+
+src_configure() {
+       # Note: the top level configure script is not autoconf-based
+       tc-export CC PKG_CONFIG
+
+       export OPTS="${CFLAGS}"
+
+       hydra_sed() {
+               if use ${1}; then
+                       einfo "Enabling ${1}"
+                       if [[ -n "${3}" ]]; then
+                               sed -i 's#'"${2}"'#'"${3}"'#' configure || die
+                       fi
+               else
+                       einfo "Disabling ${1}"
+                       sed -i 's#'"${2}"'##; s#'"${4}"'##' configure || die
+               fi
+       }
+
+       hydra_sed firebird '-lfbclient' '' '-DLIBFIREBIRD'
+       hydra_sed gcrypt '-lgcrypt' '$( ${CTARGET:-${CHOST}}-libgcrypt-config --libs )' '-DHAVE_GCRYPT'
+       hydra_sed idn '-lidn' '$( "${PKG_CONFIG}" --libs libidn )' '-DLIBIDN -DHAVE_PR29_H'
+       hydra_sed libssh '-lssh' '$( "${PKG_CONFIG}" --libs libssh )' '-DLIBSSH'
+       hydra_sed memcached '-lmemcached' '$( "${PKG_CONFIG}" --libs libmemcached )' '-DLIBMCACHED'
+       hydra_sed mongodb '-lmongoc-1.0' '$( "${PKG_CONFIG}" --libs libmongoc-1.0 )' '-DLIBMONGODB\|-DLIBBSON'
+       hydra_sed mysql '-lmysqlclient' '$( ${CTARGET:-${CHOST}}-mysql_config --libs )' '-DLIBMYSQLCLIENT'
+       hydra_sed ncp '-lncp' '' '-DLIBNCP'
+       hydra_sed ncurses '-lcurses' '$( "${PKG_CONFIG}" --libs ncurses )' '-DLIBNCURSES'
+       hydra_sed pcre '-lpcre' '$( "${PKG_CONFIG}" --libs libpcre )' '-DHAVE_PCRE'
+       hydra_sed postgres '-lpq' '$( "${PKG_CONFIG}" --libs libpq )' '-DLIBPOSTGRES'
+       hydra_sed oracle '-locci -lclntsh' '' '-DLIBORACLE'
+       hydra_sed rdp '-lfreerdp2' '$( "${PKG_CONFIG}" --libs freerdp2 )' '-DLIBFREERDP2'
+       # TODO: https://bugs.gentoo.org/686148
+       #hydra_sed subversion '-lsvn_client-1 -lapr-1 -laprutil-1 -lsvn_subr-1' '$( "${PKG_CONFIG}" --libs libsvn_client )' '-DLIBSVN'
+       hydra_sed subversion '-lsvn_client-1 -lapr-1 -laprutil-1 -lsvn_subr-1' '' '-DLIBSVN'
+       hydra_sed zlib '-lz' '$( "${PKG_CONFIG}" --libs zlib )' '-DHAVE_ZLIB'
+
+       sh configure \
+               $(use gtk || echo --disable-xhydra) \
+               $(usex debug '--debug' '') \
+               --nostrip \
+               --prefix=/usr \
+               || die
+
+       if use gtk ; then
+               pushd hydra-gtk || die
+               econf
+       fi
+}
+
+src_compile() {
+       emake XLIBPATHS=''
+       use gtk && emake -C hydra-gtk
+}
+
+src_install() {
+       dobin hydra pw-inspector
+       use gtk && dobin hydra-gtk/src/xhydra
+       dodoc CHANGES README
+}
index 9ef6f73c7ec4f272d15baafd5e4d3585e259a4d3..6f65020dd57731046a87e726e980626b16f01161 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2020 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
@@ -45,6 +45,14 @@ DEPEND="
        ${RDEPEND}
        virtual/pkgconfig
 "
+PATCHES=(
+       "${FILESDIR}"/${PN}-9.0-fcommon-gtk.patch
+       "${FILESDIR}"/${PN}-9.0-fcommon-mod.patch
+       "${FILESDIR}"/${PN}-9.0-fcommon-mods.patch
+       "${FILESDIR}"/${PN}-9.0-unneeded-buf.patch
+       "${FILESDIR}"/${PN}-9.0-vnc.patch
+       "${FILESDIR}"/${PN}-9999999-fcommon-http.patch
+)
 
 src_prepare() {
        default
@@ -81,21 +89,21 @@ src_configure() {
 
        hydra_sed firebird '-lfbclient' '' '-DLIBFIREBIRD'
        hydra_sed gcrypt '-lgcrypt' '$( ${CTARGET:-${CHOST}}-libgcrypt-config --libs )' '-DHAVE_GCRYPT'
-       hydra_sed idn '-lidn' '$( "${PKG_CONFIG}"  --libs libidn )' '-DLIBIDN -DHAVE_PR29_H'
-       hydra_sed libssh '-lssh' '$( "${PKG_CONFIG}"  --libs libssh )' '-DLIBSSH'
-       hydra_sed memcached '-lmemcached' '$( "${PKG_CONFIG}"  --libs libmemcached )' '-DLIBMCACHED'
-       hydra_sed mongodb '-lmongoc-1.0' '$( "${PKG_CONFIG}"  --libs libmongoc-1.0 )' '-DLIBMONGODB\|-DLIBBSON'
+       hydra_sed idn '-lidn' '$( "${PKG_CONFIG}" --libs libidn )' '-DLIBIDN -DHAVE_PR29_H'
+       hydra_sed libssh '-lssh' '$( "${PKG_CONFIG}" --libs libssh )' '-DLIBSSH'
+       hydra_sed memcached '-lmemcached' '$( "${PKG_CONFIG}" --libs libmemcached )' '-DLIBMCACHED'
+       hydra_sed mongodb '-lmongoc-1.0' '$( "${PKG_CONFIG}" --libs libmongoc-1.0 )' '-DLIBMONGODB\|-DLIBBSON'
        hydra_sed mysql '-lmysqlclient' '$( ${CTARGET:-${CHOST}}-mysql_config --libs )' '-DLIBMYSQLCLIENT'
        hydra_sed ncp '-lncp' '' '-DLIBNCP'
-       hydra_sed ncurses '-lcurses' '$( "${PKG_CONFIG}"  --libs ncurses )' '-DLIBNCURSES'
-       hydra_sed pcre '-lpcre' '$( "${PKG_CONFIG}"  --libs libpcre )' '-DHAVE_PCRE'
-       hydra_sed postgres '-lpq' '$( "${PKG_CONFIG}"  --libs libpq )' '-DLIBPOSTGRES'
+       hydra_sed ncurses '-lcurses' '$( "${PKG_CONFIG}" --libs ncurses )' '-DLIBNCURSES'
+       hydra_sed pcre '-lpcre' '$( "${PKG_CONFIG}" --libs libpcre )' '-DHAVE_PCRE'
+       hydra_sed postgres '-lpq' '$( "${PKG_CONFIG}" --libs libpq )' '-DLIBPOSTGRES'
        hydra_sed oracle '-locci -lclntsh' '' '-DLIBORACLE'
-       hydra_sed rdp '-lfreerdp2' '$( "${PKG_CONFIG}"  --libs freerdp2 )' '-DLIBFREERDP2'
+       hydra_sed rdp '-lfreerdp2' '$( "${PKG_CONFIG}" --libs freerdp2 )' '-DLIBFREERDP2'
        # TODO: https://bugs.gentoo.org/686148
-       #hydra_sed subversion '-lsvn_client-1 -lapr-1 -laprutil-1 -lsvn_subr-1' '$( "${PKG_CONFIG}"  --libs libsvn_client )' '-DLIBSVN'
+       #hydra_sed subversion '-lsvn_client-1 -lapr-1 -laprutil-1 -lsvn_subr-1' '$( "${PKG_CONFIG}" --libs libsvn_client )' '-DLIBSVN'
        hydra_sed subversion '-lsvn_client-1 -lapr-1 -laprutil-1 -lsvn_subr-1' '' '-DLIBSVN'
-       hydra_sed zlib '-lz' '$( "${PKG_CONFIG}"  --libs zlib )' '-DHAVE_ZLIB'
+       hydra_sed zlib '-lz' '$( "${PKG_CONFIG}" --libs zlib )' '-DHAVE_ZLIB'
 
        sh configure \
                $(use gtk || echo --disable-xhydra) \