diff options
author | Larry Hajali <larryhaja[at]gmail[dot]com> | 2010-05-13 00:36:43 +0200 |
---|---|---|
committer | David Somero <xgizzmo@slackbuilds.org> | 2010-05-13 00:36:43 +0200 |
commit | acc73f29f6d4c728d67f20f37e72ab66537b74f8 (patch) | |
tree | 262dd30c07eee3ef645e866d87a3a1d49f5f4ce4 /network/hydra/patches | |
parent | 091531ddf4f532a5a7263f2982945e4141be7df7 (diff) |
network/hydra: Updated for version 5.4
Diffstat (limited to 'network/hydra/patches')
-rw-r--r-- | network/hydra/patches/hydra-5.4-Makefile_am.patch | 13 | ||||
-rw-r--r-- | network/hydra/patches/hydra-5.4-configure_fixups.patch | 127 | ||||
-rw-r--r-- | network/hydra/patches/hydra-5.4-libssh-0.4.patch | 187 | ||||
-rw-r--r-- | network/hydra/patches/hydra-http-form.patch | 18 |
4 files changed, 345 insertions, 0 deletions
diff --git a/network/hydra/patches/hydra-5.4-Makefile_am.patch b/network/hydra/patches/hydra-5.4-Makefile_am.patch new file mode 100644 index 0000000000000..3739d1fb20d03 --- /dev/null +++ b/network/hydra/patches/hydra-5.4-Makefile_am.patch @@ -0,0 +1,13 @@ +diff -Nur hydra-5.4-src.orig/Makefile.am hydra-5.4-src/Makefile.am +--- hydra-5.4-src.orig/Makefile.am 2006-05-05 09:10:44.000000000 -0500 ++++ hydra-5.4-src/Makefile.am 2009-07-05 11:23:02.983188212 -0500 +@@ -2,7 +2,8 @@ + # Makefile for Hydra - (c) 2001-2006 by van Hauser / THC <vh@thc.org> + # + +-OPTS=-I. -Wall -O2 ++EXTRA_CFLAGS= ++OPTS=-I. -Wall $(EXTRA_CFLAGS) + # -ggdb -pedantic + LIBS=-lm + DIR=/bin diff --git a/network/hydra/patches/hydra-5.4-configure_fixups.patch b/network/hydra/patches/hydra-5.4-configure_fixups.patch new file mode 100644 index 0000000000000..a622d7618b9a5 --- /dev/null +++ b/network/hydra/patches/hydra-5.4-configure_fixups.patch @@ -0,0 +1,127 @@ +diff -Nur hydra-5.4-src.orig/configure hydra-5.4-src/configure +--- hydra-5.4-src.orig/configure 2006-01-20 07:44:15.000000000 -0600 ++++ hydra-5.4-src/configure 2009-07-05 21:21:59.288865180 -0500 +@@ -35,11 +35,12 @@ + MANDIR="" + XHYDRA_SUPPORT="" + LIBDIRS=`cat /etc/ld.so.conf 2> /dev/null` ++EXTRA_LIBDIRS?= + STRIP="strip" + echo + + echo "Checking for openssl (libssl/ssl.h) ..." +-for i in $LIBDIRS /lib /usr/lib /usr/local/lib /opt/local/lib \ ++for i in $EXTRA_LIBDIRS $LIBDIRS /lib /usr/lib /usr/local/lib /opt/local/lib \ + /*ssl /usr/*ssl /opt/*ssl /usr/local/*ssl /opt/local/*ssl \ + /*ssl/lib /usr/*ssl/lib /opt/*ssl/lib /usr/local/*ssl/lib /opt/local/*ssl/lib . + do +@@ -97,7 +98,7 @@ + fi + + echo "Checking for Postgres (libpq) ..." +-for i in $LIBDIRS /lib /usr/lib /usr/local/lib /opt/local/lib . ++for i in $EXTRA_LIBDIRS $LIBDIRS /lib /usr/lib /usr/local/lib /opt/local/lib . + do + if [ "X" = "X$POSTGRES_PATH" ]; then + if [ -f "$i/libpq.so" -o -f "$i/libpq.dylib" ]; then +@@ -118,11 +119,11 @@ + echo " ... NOT found, module postgres disabled" + fi + +-echo "Checking for SVN (ibsvn_client-1 libapr-0.so libaprutil-0.so) ..." +-for i in $LIBDIRS /lib /usr/lib /usr/local/lib /opt/local/lib . ++echo "Checking for SVN (ibsvn_client-1 libapr-1.so libaprutil-1.so) ..." ++for i in $EXTRA_LIBDIRS $LIBDIRS /lib /usr/lib /usr/local/lib /opt/local/lib . + do + if [ "X" = "X$SVN_PATH" ]; then +- if [ -f "$i/libsvn_client-1.so" ]&&[ -f "$i/libapr-0.so" ]&&[ -f "$i/libaprutil-0.so" ]; then ++ if [ -f "$i/libsvn_client-1.so" ]&&[ -f "$i/libapr-1.so" ]&&[ -f "$i/libaprutil-1.so" ]; then + SVN_PATH="$i" + fi + fi +@@ -143,7 +144,7 @@ + fi + + echo "Checking for SAP/R3 (librfc/saprfc.h) ..." +-for i in $LIBDIRS /lib /usr/lib /usr/local/lib /opt/local/lib . ++for i in $EXTRA_LIBDIRS $LIBDIRS /lib /usr/lib /usr/local/lib /opt/local/lib . + do + if [ "X" = "X$SAPR3_PATH" ]; then + if [ -f "$i/librfc.a" -o -f "$i/librfc.dylib" -o "$i/librfc32.dll" ]; then +@@ -183,7 +184,7 @@ + fi + + echo "Checking for libssh (libssh/libssh.h) ..." +-for i in $LIBDIRS /lib /usr/lib /usr/local/lib /opt/local/lib . ++for i in $EXTRA_LIBDIRS $LIBDIRS /lib /usr/lib /usr/local/lib /opt/local/lib . + do + if [ "X" = "X$SSH_PATH" ]; then + if [ -f "$i/libssh.so" -o -f "$i/libssh.dylib" ]; then +@@ -202,8 +203,8 @@ + fi + fi + if [ "X" = "X$APR_IPATH" ]; then +- if [ -d "$i/apr-0" ]; then +- APR_IPATH="$i/apr-0" ++ if [ -d "$i/apr-1" ]; then ++ APR_IPATH="$i/apr-1" + fi + fi + done +@@ -220,8 +221,8 @@ + fi + fi + if [ "X" = "X$APR_IPATH" ]; then +- if [ -d "$i/apr-0" ]; then +- APR_IPATH="$i/apr-0" ++ if [ -d "$i/apr-1" ]; then ++ APR_IPATH="$i/apr-1" + fi + fi + done +@@ -243,11 +244,11 @@ + + if [ -n "$SSH_PATH" ]; then + echo " ... found" +- echo 'NOTE: ensure that you have libssh v0.11 installed!! Get it from http://0xbadc0de.be !' ++ echo 'NOTE: ensure that you have libssh v0.4 installed!! Get it from http://0xbadc0de.be !' + fi + if [ "X" = "X$SSH_PATH" ]; then + echo " ... NOT found, module ssh2 disabled" +- echo 'Get it from http://0xbadc0de.be/ - use v0.11!' ++ echo 'Get it from http://0xbadc0de.be/ - use v0.4 or later!' + fi + if [ "$SSH_IPATH" = "/usr/include" ]; then + SSH_IPATH="" +@@ -262,7 +263,7 @@ + SYS=`uname -s` + if [ "$SYS" = "SunOS" ]; then + echo "Checking for Solaris libraries ..." +- for i in /lib /usr/lib /usr/local/lib $LIBDIRS . ++ for i in /lib /usr/lib /usr/local/lib $EXTRA_LIBDIRS $LIBDIRS . + do + if [ "X" = "X$NSL_PATH" ]; then + if [ -f "$i/libnsl.so" ]; then +@@ -334,6 +335,9 @@ + if [ -n "$SSH_PATH" ]; then + XDEFINES="$XDEFINES -DLIBSSH" + fi ++ ++XDEFINES="$XDEFINES -D_GNU_SOURCE" ++ + OLDPATH="" + for i in $SSL_PATH $CRYPTO_PATH $SSH_PATH $NSL_PATH $SOCKET_PATH $RESOLV_PATH $SAPR3_PATH $POSTGRES_PATH $SVN_PATH; do + if [ "$OLDPATH" = "$i" ]; then +@@ -379,10 +383,10 @@ + XLIBS="$XLIBS -lpq" + fi + if [ -n "$SVN_PATH" ]; then +- XLIBS="$XLIBS -lsvn_client-1 -lapr-0 -laprutil-0" ++ XLIBS="$XLIBS -lsvn_client-1 -lapr-1 -laprutil-1" + fi + if [ -n "$SVN_PATH" ]; then +- XLIBS="$XLIBS -lsvn_client-1 -lapr-0 -laprutil-0" ++ XLIBS="$XLIBS -lsvn_client-1 -lapr-1 -laprutil-1" + fi + if [ -n "$SSH_PATH" ]; then + XLIBS="$XLIBS -lssh" diff --git a/network/hydra/patches/hydra-5.4-libssh-0.4.patch b/network/hydra/patches/hydra-5.4-libssh-0.4.patch new file mode 100644 index 0000000000000..d0933e47512fd --- /dev/null +++ b/network/hydra/patches/hydra-5.4-libssh-0.4.patch @@ -0,0 +1,187 @@ +diff -Naur hydra-5.4-src.orig/hydra-ssh2.c hydra-5.4-src/hydra-ssh2.c +--- hydra-5.4-src.orig/hydra-ssh2.c 2007-03-22 14:04:29.000000000 +0000 ++++ hydra-5.4-src/hydra-ssh2.c 2009-12-18 03:12:56.000000000 +0000 +@@ -7,12 +7,51 @@ + } + #else + +-#warning "If compilation of hydra-ssh2 fails, you are not using v0.11. Download from http://www.0xbadc0de.be/" ++#warning "If compilation of hydra-ssh2 fails, you are not using v0.4. Download from http://www.libssh.org/" + + #include <libssh/libssh.h> + + extern char *HYDRA_EXIT; + ++/* try to authenticate with one password */ ++static int ++try_password(ssh_session ssh_session, char *password){ ++ int auth_state; ++ int i; ++ /* printf("ssh-trying pass \"%s\"\n",password); */ ++ /* We try keyboard-interactive when it's supported. kbdint is ++ * what openssh tries first when logging somewhere. ++ */ ++ auth_state = ssh_userauth_kbdint(ssh_session, NULL, NULL); ++ if(auth_state == SSH_AUTH_INFO){ ++ i=0; ++ /* we feed 10 password responses at max. Keybint is challenge-response ++ * based so the server could ask unrelated questions ++ */ ++ while(auth_state == SSH_AUTH_INFO && i<10){ ++ ssh_userauth_kbdint_setanswer(ssh_session, i, password); ++ auth_state = ssh_userauth_kbdint(ssh_session, NULL, NULL); ++ i++; ++ } ++ /* Partial authentication is specific to SSH : the password is valid but ++ * an other authentication token is needed (generaly private key) ++ */ ++ if(auth_state == SSH_AUTH_PARTIAL) ++ auth_state = SSH_AUTH_SUCCESS; ++ if(auth_state == SSH_AUTH_INFO) ++ auth_state = SSH_AUTH_ERROR; ++ return auth_state; ++ } ++ if(auth_state == SSH_AUTH_ERROR) ++ return auth_state; ++ /* Keyboard-interactive is not supported so we run through the password ++ * method */ ++ auth_state = ssh_userauth_password(ssh_session, NULL, password); ++ if(auth_state == SSH_AUTH_PARTIAL) ++ auth_state = SSH_AUTH_SUCCESS; ++ return auth_state; ++} ++ + int + start_ssh2(int s, unsigned long int ip, int port, unsigned char options, char *miscptr, FILE * fp) + { +@@ -21,17 +60,17 @@ + char *buf; + char *rc; + struct sockaddr_in targetip; +- SSH_SESSION *ssh_session; +- SSH_OPTIONS *ssh_opt; ++ ssh_session ssh_session; ++ char buffer[64], firstlogin[128]; + int auth_state; +- int i = 0; ++ const int btrue = 1; + + if (strlen(login = hydra_get_next_login()) == 0) + login = empty; + if (strlen(pass = hydra_get_next_password()) == 0) + pass = empty; + +- ssh_opt=options_new(); ++ ssh_session=ssh_new(); + memset(&targetip, 0, sizeof(targetip)); + memcpy(&targetip.sin_addr.s_addr, &ip, 4); + targetip.sin_family = AF_INET; +@@ -41,16 +80,18 @@ + buf = malloc(20); + inet_ntop(AF_INET, &targetip.sin_addr, buf, 20); + #endif +- options_set_wanted_method(ssh_opt,KEX_COMP_C_S,"none"); +- options_set_wanted_method(ssh_opt,KEX_COMP_S_C,"none"); +- options_set_port(ssh_opt, port); +- options_set_host(ssh_opt, buf); +- options_set_username(ssh_opt, login); +- +- if ((ssh_session = ssh_connect(ssh_opt)) == NULL) { ++ snprintf(firstlogin,sizeof(firstlogin),"%s",login); ++ ssh_options_set(ssh_session, SSH_OPTIONS_SSH1, &btrue); ++ ssh_options_set(ssh_session, SSH_OPTIONS_PORT, &port); ++ ssh_options_set(ssh_session, SSH_OPTIONS_HOST, buf); ++ ssh_options_set(ssh_session, SSH_OPTIONS_USER, login); ++ /* printf("ssh-connecting with login \"%s\"\n",login); */ ++ if (ssh_connect(ssh_session) == SSH_ERROR) { + rc = ssh_get_error(ssh_session); + if ((rc != NULL) && (rc[0] != '\0')) { +- if (strncmp("connect:", ssh_get_error(ssh_session), strlen("connect:")) == 0) ++ snprintf(buffer,sizeof(buffer),"%s",rc); ++ ssh_disconnect(ssh_session); ++ if (strncmp("connect:", buffer, strlen("connect:")) == 0) + return 3; + else + return 4; +@@ -60,43 +101,54 @@ + free(buf); + buf = NULL; + #endif +- +- do { +- /* why this crap? */ +- auth_state = ssh_userauth_kbdint(ssh_session, login, NULL); +- while (i < 10 && auth_state == SSH_AUTH_INFO) { +- ssh_userauth_kbdint_setanswer(ssh_session, i, pass); +- auth_state = ssh_userauth_kbdint(ssh_session, login, NULL); +- i++; +- } +- +- if (auth_state == SSH_AUTH_SUCCESS || ssh_userauth_password(ssh_session, login, pass) == SSH_AUTH_SUCCESS) { +- ssh_disconnect(ssh_session); /* this automagically frees the ssh_opt buffer */ +- hydra_report_found_host(port, ip, "ssh2", fp); +- hydra_completed_pair_found(); +- if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0) +- return 2; +- /* free(ssh_opt); */ /* DOUBLE FREE ! */ ++ /* None method is important since it can flag passwordless servers */ ++ auth_state=ssh_userauth_none(ssh_session, login); ++ if(auth_state == SSH_AUTH_SUCCESS){ ++ /* passwordless server */ ++ hydra_report_found_host(port, ip, "ssh2", fp); ++ hydra_completed_pair_found(); ++ ssh_disconnect(ssh_session); ++ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0) ++ return 2; ++ else + return 1; +- } else { +- if (ssh_error_code(ssh_session) == 1) { +- hydra_completed_pair(); ++ } ++ ++ do { ++ auth_state=try_password(ssh_session, pass); ++ if (auth_state == SSH_AUTH_SUCCESS) { ++ ssh_disconnect(ssh_session); /* this automagically frees the ssh_opt buffer */ ++ hydra_report_found_host(port, ip, "ssh2", fp); ++ hydra_completed_pair_found(); + if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0) + return 2; ++ return 1; + } else { +- ssh_disconnect(ssh_session); /* this automagically frees the ssh_opt buffer */ +- hydra_completed_pair(); /* really? */ +- if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0) ++ if (auth_state == SSH_AUTH_DENIED) { ++ hydra_completed_pair(); ++ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0){ ++ ssh_disconnect(ssh_session); + return 2; +- /* free(ssh_opt); */ /* DOUBLE FREE ! */ ++ } ++ /* set a new password to try */ ++ login=hydra_get_next_login(); ++ if(strcmp(login,firstlogin) != 0){ ++ /* we can't try a new login without a new session. */ ++ ssh_disconnect(ssh_session); ++ //hydra_completed_pair_skip(); ++ return 1; ++ } ++ pass=hydra_get_next_password(); ++ /* try again using same session */ ++ } else { ++ ssh_disconnect(ssh_session); /* this automagically frees the ssh_opt buffer */ ++ /* there was an error. The password was not really tried.*/ ++ //hydra_completed_pair_skip(); + return 1; + } + } + } while(1); + +- /* not reached */ +- +- /* free(ssh_opt); */ /* risk of double free */ + return 1; + } + diff --git a/network/hydra/patches/hydra-http-form.patch b/network/hydra/patches/hydra-http-form.patch new file mode 100644 index 0000000000000..6dde09cdf1ed1 --- /dev/null +++ b/network/hydra/patches/hydra-http-form.patch @@ -0,0 +1,18 @@ +--- hydra-http-form.old 2008-02-06 09:42:49.000000000 +0000 ++++ hydra-http-form.c 2008-02-06 09:43:45.000000000 +0000 +@@ -149,7 +149,6 @@ + } + + if (hydra_send(s, buffer, strlen(buffer), 0) < 0) { +- free(updvariables); + free(upd2variables); + return 1; + } +@@ -183,7 +182,6 @@ + */ + + free(buf); +- free(updvariables); + free(upd2variables); + + if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0) |