diff --git a/bfg.c b/bfg.c index 0d670dd..c3a8d0e 100644 --- a/bfg.c +++ b/bfg.c @@ -174,8 +174,6 @@ int32_t bf_init(char *arg) { bf_options.crs_len = crs_len; bf_options.current = bf_options.from; - bf_options.rain = 0; - bf_options.gcounter = 0; memset((char *) bf_options.state, 0, sizeof(bf_options.state)); @@ -202,7 +200,7 @@ uint64_t bf_get_pcount() { return foo; } -char *bf_next(_Bool rainy) { +char *bf_next() { int32_t i, pos = bf_options.current - 1; if (bf_options.current > bf_options.to) @@ -212,19 +210,8 @@ char *bf_next(_Bool rainy) { fprintf(stderr, "Error: Can not allocate memory for -x data!\n"); return NULL; } - - if(rainy) - { - bf_options.rain = bf_options.gcounter; - bf_options.ptr[0] = bf_options.crs[bf_options.state[0]]; - for(i=1; i= bf_options.crs_len) { - bf_options.state[pos] = 0; - pos++; - } - } - else while (pos >= 0 && (++bf_options.state[pos]) >= bf_options.crs_len) { bf_options.state[pos] = 0; pos--; @@ -252,7 +230,6 @@ char *bf_next(_Bool rainy) { if (pos < 0 || pos >= bf_options.current) { bf_options.current++; - bf_options.rain = 0; memset((char *)bf_options.state, 0, sizeof(bf_options.state)); } diff --git a/bfg.h b/bfg.h index 602cee6..6d11aee 100644 --- a/bfg.h +++ b/bfg.h @@ -43,8 +43,6 @@ typedef struct { char *crs; /* internal representation of charset */ char *ptr; /* ptr to the last generated password */ uint32_t disable_symbols; - uint64_t rain; - uint64_t gcounter; } bf_option; extern bf_option bf_options; @@ -52,7 +50,7 @@ extern bf_option bf_options; #ifdef HAVE_MATH_H extern uint64_t bf_get_pcount(); extern int32_t bf_init(char *arg); -extern char *bf_next(_Bool rainy); +extern char *bf_next(); #endif #endif diff --git a/configure b/configure index 139c9bf..ae81322 100755 --- a/configure +++ b/configure @@ -17,12 +17,10 @@ if [ "$1" = "-h" -o "$1" = "--help" ]; then echo " --help this here" echo echo If the CC environment variable is set, this is used as the compiler for the configure tests. The default is \"gcc\" otherwise. - echo You can also set PKG_CONFIG if necessary. exit 0 fi test -z "$CC" && CC=gcc -test -z "$PKG_CONFIG" && PKG_CONFIG=pkg-config FHS="" SIXFOUR="" @@ -1307,9 +1305,9 @@ echo "Checking for smbclient (libsmbclient/libsmbclient.h) ..." if [ "X" = "X$XHYDRA_SUPPORT" ]; then echo "Checking for GUI req's (pkg-config/gtk+-2.0) ..." - XHYDRA_SUPPORT=`$PKG_CONFIG --help > /dev/null 2>&1 || echo disabled` + XHYDRA_SUPPORT=`pkg-config --help > /dev/null 2>&1 || echo disabled` if [ "X" = "X$XHYDRA_SUPPORT" ]; then - XHYDRA_SUPPORT=`$PKG_CONFIG --modversion gtk+-2.0 2> /dev/null` + XHYDRA_SUPPORT=`pkg-config --modversion gtk+-2.0 2> /dev/null` else XHYDRA_SUPPORT="" fi diff --git a/hydra.c b/hydra.c index 89fab49..e6cc1e3 100644 --- a/hydra.c +++ b/hydra.c @@ -503,8 +503,11 @@ void help(int32_t ext) { "[-C FILE]] [-e nsr]" " [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W " "TIME] [-f] [-s PORT]" -#ifdef HAVE_MATH_H - " [-x MIN:MAX:CHARSET]" +#ifndef HAVE_MATH_H + " [-x +LINES]" +#else + " [ [-x MIN:MAX:CHARSET] | [-x +LINES] ]" + #endif " [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] " //"[server service [OPT]]|" @@ -522,11 +525,14 @@ void help(int32_t ext) { " -p PASS or -P FILE try password PASS, or load several " "passwords from FILE\n"); PRINT_EXTEND(ext, -#ifdef HAVE_MATH_H - " -x MIN:MAX:CHARSET password bruteforce generation, type " +#ifndef HAVE_MATH_H + " -x +LINES read from stdin\n" + "\"-x -h\" to get help\n" +#else + " -x +LINES read from stdin\n" + " -x MIN:MAX:CHARSET password bruteforce generation, type\n" "\"-x -h\" to get help\n" " -y disable use of symbols in bruteforce, see above\n" - " -r use a non-random shuffling method for option -x\n" #endif " -e nsr try \"n\" null password, \"s\" login as pass " "and/or \"r\" reversed login\n" @@ -612,9 +618,10 @@ void help_bfg() { " 'A' for uppercase letters, '1' for numbers, and for all " "others,\n" " just add their real representation.\n" - " -y disable the use of the above letters as placeholders\n" - " -r use a shuffling method called 'rain' to try to break\n" - " the linearity of the bruteforce\n" + " -y disable the use of the above letters as placeholders\n\n" + " -x +LINES\n\n" + " LINES is the numer of lines read from standard input,\n" + " you must not set it above what stdin is going to produce.\n" "Examples:\n" " -x 3:5:a generate passwords from length 3 to 5 with all " "lowercase letters\n" @@ -626,6 +633,7 @@ void help_bfg() { "only of /%%,.-\n" " -x 3:5:aA1 -y generate passwords from length 3 to 5 with a, A and " "1 only\n" + " -x +250 test with the first 250 lines of standard input\n" "\nThe bruteforce mode was made by Jan Dlabal, " "http://houbysoft.com/bfg/\n"); exit(-1); @@ -2476,11 +2484,11 @@ int main(int argc, char *argv[]) { modusage = 1; break; case 'x': - if(optarg[0] == '-') { + if(optarg[0] == '+') { hydra_options.read_stdin = 1; hydra_options.stdin_lines = atoi(&optarg[1]); if(hydra_options.stdin_lines < 1) { - fprintf(stderr, "Using stdin, you must give the numbers of lines to treat: -x -250"); + fprintf(stderr, "Using stdin, you must give the numbers of lines to treat: -x +250\n"); exit(-1); } } diff --git a/hydra.h b/hydra.h index f0a0253..31018dd 100644 --- a/hydra.h +++ b/hydra.h @@ -206,7 +206,8 @@ typedef struct { char *server; char *service; char bfg; - int8_t rainy; + int32_t read_stdin; + int32_t stdin_lines; int32_t skip_redo; } hydra_option;