diff options
author | Peter Volkov <pva@gentoo.org> | 2009-05-25 21:04:29 +0000 |
---|---|---|
committer | Peter Volkov <pva@gentoo.org> | 2009-05-25 21:04:29 +0000 |
commit | 8cb8951a58b8269e44310c559cb494e76ca2c715 (patch) | |
tree | 6d5c1b7a0e76f56eb7c19e0770ab627324d18c2d /net-analyzer | |
parent | Updated libssh dependency, (libssh version was changed from 0.11 to 0.1.1). (diff) | |
download | gentoo-2-8cb8951a58b8269e44310c559cb494e76ca2c715.tar.gz gentoo-2-8cb8951a58b8269e44310c559cb494e76ca2c715.tar.bz2 gentoo-2-8cb8951a58b8269e44310c559cb494e76ca2c715.zip |
Updated libssh dependencies. Added patch to make hydra buildable with >=libssh-0.2, bug #245612, thank Aris Adamantiadis for report.
(Portage version: 2.2_rc33/cvs/Linux i686)
Diffstat (limited to 'net-analyzer')
-rw-r--r-- | net-analyzer/hydra/ChangeLog | 10 | ||||
-rw-r--r-- | net-analyzer/hydra/files/hydra-5.4-libssh-0.2.patch | 213 | ||||
-rw-r--r-- | net-analyzer/hydra/hydra-5.4-r1.ebuild | 4 | ||||
-rw-r--r-- | net-analyzer/hydra/hydra-5.4-r2.ebuild | 68 | ||||
-rw-r--r-- | net-analyzer/hydra/hydra-5.4.ebuild | 6 |
5 files changed, 295 insertions, 6 deletions
diff --git a/net-analyzer/hydra/ChangeLog b/net-analyzer/hydra/ChangeLog index 5b12ff25d7f6..1a4d537562b6 100644 --- a/net-analyzer/hydra/ChangeLog +++ b/net-analyzer/hydra/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for net-analyzer/hydra # Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-analyzer/hydra/ChangeLog,v 1.27 2009/05/24 23:18:32 pva Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-analyzer/hydra/ChangeLog,v 1.28 2009/05/25 21:04:29 pva Exp $ + +*hydra-5.4-r2 (25 May 2009) + + 25 May 2009; Peter Volkov <pva@gentoo.org> hydra-5.4.ebuild, + hydra-5.4-r1.ebuild, +hydra-5.4-r2.ebuild, + +files/hydra-5.4-libssh-0.2.patch: + Updated libssh dependencies. Added patch to make hydra buildable with + >=libssh-0.2, bug #245612, thank Aris Adamantiadis for report. *hydra-5.4-r1 (24 May 2009) diff --git a/net-analyzer/hydra/files/hydra-5.4-libssh-0.2.patch b/net-analyzer/hydra/files/hydra-5.4-libssh-0.2.patch new file mode 100644 index 000000000000..b15f6ec1354c --- /dev/null +++ b/net-analyzer/hydra/files/hydra-5.4-libssh-0.2.patch @@ -0,0 +1,213 @@ +Les sous-répertoires hydra-5.4-src/arm et hydra-5.4-src-libssh0.2/arm sont identiques. +diff -u hydra-5.4-src/configure hydra-5.4-src-libssh0.2/configure +--- hydra-5.4-src/configure 2006-01-20 14:44:15.000000000 +0100 ++++ hydra-5.4-src-libssh0.2/configure 2008-10-31 22:32:47.000000000 +0100 +@@ -243,11 +243,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.2 or later 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.2 or later' + fi + if [ "$SSH_IPATH" = "/usr/include" ]; then + SSH_IPATH="" +Seulement dans hydra-5.4-src-libssh0.2/: .hydra-ftp.c.swp +Les sous-répertoires hydra-5.4-src/hydra-gtk et hydra-5.4-src-libssh0.2/hydra-gtk sont identiques. +Seulement dans hydra-5.4-src-libssh0.2/: .hydra-mod.c.swp +diff -u hydra-5.4-src/hydra-ssh2.c hydra-5.4-src-libssh0.2/hydra-ssh2.c +--- hydra-5.4-src/hydra-ssh2.c 2007-03-22 15:04:29.000000000 +0100 ++++ hydra-5.4-src-libssh0.2/hydra-ssh2.c 2008-11-01 21:21:08.000000000 +0100 +@@ -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.2 or 0.2.1. Download from http://www.0xbadc0de.be/" + + #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) + { +@@ -20,18 +59,19 @@ + char *login, *pass; + char *buf; + char *rc; ++ char buffer[64]; + struct sockaddr_in targetip; + SSH_SESSION *ssh_session; + SSH_OPTIONS *ssh_opt; + int auth_state; +- int i = 0; ++ char firstlogin[128]; + + if (strlen(login = hydra_get_next_login()) == 0) + login = empty; + if (strlen(pass = hydra_get_next_password()) == 0) + pass = empty; +- +- ssh_opt=options_new(); ++ snprintf(firstlogin,sizeof(firstlogin),"%s",login); ++ ssh_opt=ssh_options_new(); + memset(&targetip, 0, sizeof(targetip)); + memcpy(&targetip.sin_addr.s_addr, &ip, 4); + targetip.sin_family = AF_INET; +@@ -41,16 +81,21 @@ + 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) { ++ ssh_options_allow_ssh1(ssh_opt,1); ++// ssh_options_set_wanted_algos (ssh_opt,KEX_COMP_C_S,"none"); ++// ssh_options_set_wanted_algos (ssh_opt,KEX_COMP_S_C,"none"); ++ ssh_options_set_port(ssh_opt, port); ++ ssh_options_set_host(ssh_opt, buf); ++ ssh_options_set_username(ssh_opt, login); ++ ssh_session=ssh_new(); ++ ssh_set_options(ssh_session,ssh_opt); ++ /* 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 +105,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; + } + +Les sous-répertoires hydra-5.4-src/palm et hydra-5.4-src-libssh0.2/palm sont identiques. diff --git a/net-analyzer/hydra/hydra-5.4-r1.ebuild b/net-analyzer/hydra/hydra-5.4-r1.ebuild index 6283a2368b90..00230baf0e00 100644 --- a/net-analyzer/hydra/hydra-5.4-r1.ebuild +++ b/net-analyzer/hydra/hydra-5.4-r1.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-analyzer/hydra/hydra-5.4-r1.ebuild,v 1.1 2009/05/24 23:18:32 pva Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-analyzer/hydra/hydra-5.4-r1.ebuild,v 1.2 2009/05/25 21:04:29 pva Exp $ inherit eutils @@ -16,7 +16,7 @@ IUSE="gtk ssl" DEPEND="gtk? ( >=x11-libs/gtk+-1.2 ) ssl? ( dev-libs/openssl - =net-libs/libssh-0.11 + <net-libs/libssh-0.2 )" S=${WORKDIR}/${P}-src diff --git a/net-analyzer/hydra/hydra-5.4-r2.ebuild b/net-analyzer/hydra/hydra-5.4-r2.ebuild new file mode 100644 index 000000000000..9ed916edeef3 --- /dev/null +++ b/net-analyzer/hydra/hydra-5.4-r2.ebuild @@ -0,0 +1,68 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-analyzer/hydra/hydra-5.4-r2.ebuild,v 1.1 2009/05/25 21:04:29 pva Exp $ + +inherit eutils + +DESCRIPTION="Advanced parallized login hacker" +HOMEPAGE="http://www.thc.org/thc-hydra/" +SRC_URI="http://www.thc.org/releases/${P}-src.tar.gz" + +LICENSE="HYDRA GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="gtk ssl" + +DEPEND="gtk? ( >=x11-libs/gtk+-1.2 ) + ssl? ( + dev-libs/openssl + >=net-libs/libssh-0.2 + )" + +S=${WORKDIR}/${P}-src + +src_unpack() { + unpack ${A} + cd "${S}" + sed -i "s:-O2:${CFLAGS}:" Makefile.am || die "sed failed" + epatch "${FILESDIR}/${P}-_FORTIFY_SOURCE.patch" + epatch "${FILESDIR}/${P}-free-without-malloc.patch" + epatch "${FILESDIR}/${P}-libssh-0.2.patch" +} + +src_compile() { + if use gtk ; then + ./configure --prefix=/usr || die "configure failed" + else + ./configure --prefix=/usr --disable-xhydra || die "configure failed" + fi + + sed -i \ + -e '/^XDEFINES=/s:=.*:=:' \ + -e '/^XLIBS=/s:=.*:=:' \ + -e '/^XLIBPATHS/s:=.*:=:' \ + -e '/^XIPATHS=/s:=.*:=:' \ + Makefile || die "pruning vars" + + if use ssl ; then + sed -i \ + -e '/^XDEFINES=/s:=:=-DLIBOPENSSL -DLIBSSH:' \ + -e '/^XLIBS=/s:=:=-lcrypto -lssl -lssh:' \ + Makefile || die "adding ssl" + fi + emake || die "make failed" + + if use gtk ; then + cd hydra-gtk + econf + emake || die "emake hydra-gtk failed" + fi +} + +src_install() { + dobin hydra pw-inspector || die "dobin failed" + if use gtk ; then + dobin hydra-gtk/src/xhydra || die "gtk" + fi + dodoc CHANGES README TODO +} diff --git a/net-analyzer/hydra/hydra-5.4.ebuild b/net-analyzer/hydra/hydra-5.4.ebuild index 5be973f86256..9aa03f15bb59 100644 --- a/net-analyzer/hydra/hydra-5.4.ebuild +++ b/net-analyzer/hydra/hydra-5.4.ebuild @@ -1,6 +1,6 @@ -# Copyright 1999-2007 Gentoo Foundation +# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-analyzer/hydra/hydra-5.4.ebuild,v 1.3 2007/08/13 21:22:10 dertobi123 Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-analyzer/hydra/hydra-5.4.ebuild,v 1.4 2009/05/25 21:04:29 pva Exp $ DESCRIPTION="Advanced parallized login hacker" HOMEPAGE="http://www.thc.org/thc-hydra/" @@ -14,7 +14,7 @@ IUSE="gtk ssl" DEPEND="gtk? ( >=x11-libs/gtk+-1.2 ) ssl? ( dev-libs/openssl - =net-libs/libssh-0.11 + <net-libs/libssh-0.2 )" S="${WORKDIR}/${P}-src" |