mirror of
https://github.com/vanhauser-thc/thc-hydra.git
synced 2025-08-14 02:27:31 -07:00
it look like github wants to drive me mad
This commit is contained in:
parent
b911269c1a
commit
1658f4926f
4 changed files with 40 additions and 7 deletions
32
bfg.c
32
bfg.c
|
@ -52,6 +52,7 @@ static int32_t add_single_char(char ch, char flags, int32_t* crs_len) {
|
||||||
// note that we check for -x .:.:ab but not for -x .:.:ba
|
// note that we check for -x .:.:ab but not for -x .:.:ba
|
||||||
//
|
//
|
||||||
int32_t bf_init(char *arg) {
|
int32_t bf_init(char *arg) {
|
||||||
|
bf_options.rain = 0;
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
int32_t crs_len = 0;
|
int32_t crs_len = 0;
|
||||||
char flags = 0;
|
char flags = 0;
|
||||||
|
@ -189,8 +190,17 @@ uint64_t bf_get_pcount() {
|
||||||
return foo;
|
return foo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int accu(int value)
|
||||||
|
{
|
||||||
|
int sum = 0;
|
||||||
|
for(int i=1; i<=value; ++i)
|
||||||
|
{
|
||||||
|
sum+=i;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
char *bf_next() {
|
char *bf_next(_Bool rainy) {
|
||||||
int32_t i, pos = bf_options.current - 1;
|
int32_t i, pos = bf_options.current - 1;
|
||||||
|
|
||||||
if (bf_options.current > bf_options.to)
|
if (bf_options.current > bf_options.to)
|
||||||
|
@ -200,9 +210,25 @@ char *bf_next() {
|
||||||
fprintf(stderr, "Error: Can not allocate memory for -x data!\n");
|
fprintf(stderr, "Error: Can not allocate memory for -x data!\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(rainy)
|
||||||
|
{
|
||||||
|
for (i = 0; i < bf_options.current; i++){
|
||||||
|
bf_options.ptr[i] = bf_options.crs[(bf_options.state[i]+bf_options.rain)%bf_options.crs_len];
|
||||||
|
bf_options.rain += i+1;
|
||||||
|
}
|
||||||
|
if(bf_options.crs_len%10 == 0)
|
||||||
|
bf_options.rain-=accu(bf_options.current)-2;
|
||||||
|
else if(bf_options.crs_len%2 == 0)
|
||||||
|
bf_options.rain-=accu(bf_options.current)-4;
|
||||||
|
else if(bf_options.crs_len%2)
|
||||||
|
bf_options.rain-=accu(bf_options.current)-1;
|
||||||
|
|
||||||
for (i = 0; i < bf_options.current; i++)
|
}
|
||||||
bf_options.ptr[i] = bf_options.crs[bf_options.state[i]];
|
else
|
||||||
|
for (i = 0; i < bf_options.current; i++)
|
||||||
|
bf_options.ptr[i] = bf_options.crs[bf_options.state[i]];
|
||||||
|
|
||||||
bf_options.ptr[bf_options.current] = 0;
|
bf_options.ptr[bf_options.current] = 0;
|
||||||
|
|
||||||
if (debug) {
|
if (debug) {
|
||||||
|
|
3
bfg.h
3
bfg.h
|
@ -41,6 +41,7 @@ typedef struct {
|
||||||
char *crs; /* internal representation of charset */
|
char *crs; /* internal representation of charset */
|
||||||
char *ptr; /* ptr to the last generated password */
|
char *ptr; /* ptr to the last generated password */
|
||||||
uint32_t disable_symbols;
|
uint32_t disable_symbols;
|
||||||
|
unsigned long rain;
|
||||||
} bf_option;
|
} bf_option;
|
||||||
|
|
||||||
extern bf_option bf_options;
|
extern bf_option bf_options;
|
||||||
|
@ -48,7 +49,7 @@ extern bf_option bf_options;
|
||||||
#ifdef HAVE_MATH_H
|
#ifdef HAVE_MATH_H
|
||||||
extern uint64_t bf_get_pcount();
|
extern uint64_t bf_get_pcount();
|
||||||
extern int32_t bf_init(char *arg);
|
extern int32_t bf_init(char *arg);
|
||||||
extern char *bf_next();
|
extern char *bf_next(_Bool rainy);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
11
hydra.c
11
hydra.c
|
@ -337,6 +337,7 @@ char *sck = NULL;
|
||||||
int32_t prefer_ipv6 = 0, conwait = 0, loop_cnt = 0, fck = 0, options = 0, killed = 0;
|
int32_t prefer_ipv6 = 0, conwait = 0, loop_cnt = 0, fck = 0, options = 0, killed = 0;
|
||||||
int32_t child_head_no = -1, child_socket;
|
int32_t child_head_no = -1, child_socket;
|
||||||
int32_t total_redo_count = 0;
|
int32_t total_redo_count = 0;
|
||||||
|
bool rainy = false;
|
||||||
|
|
||||||
// moved for restore feature
|
// moved for restore feature
|
||||||
int32_t process_restore = 0, dont_unlink;
|
int32_t process_restore = 0, dont_unlink;
|
||||||
|
@ -482,6 +483,7 @@ void help(int32_t ext) {
|
||||||
"[service://server[:PORT][/OPT]]\n");
|
"[service://server[:PORT][/OPT]]\n");
|
||||||
PRINT_NORMAL(ext, "\nOptions:\n");
|
PRINT_NORMAL(ext, "\nOptions:\n");
|
||||||
PRINT_EXTEND(ext, " -R restore a previous aborted/crashed session\n"
|
PRINT_EXTEND(ext, " -R restore a previous aborted/crashed session\n"
|
||||||
|
" -r in conjonction with -x, use rain algorythm\n"
|
||||||
" -I ignore an existing restore file (don't wait 10 seconds)\n"
|
" -I ignore an existing restore file (don't wait 10 seconds)\n"
|
||||||
#ifdef LIBOPENSSL
|
#ifdef LIBOPENSSL
|
||||||
" -S perform an SSL connect\n"
|
" -S perform an SSL connect\n"
|
||||||
|
@ -1745,7 +1747,7 @@ int32_t hydra_send_next_pair(int32_t target_no, int32_t head_no) {
|
||||||
#ifndef HAVE_MATH_H
|
#ifndef HAVE_MATH_H
|
||||||
sleep(1);
|
sleep(1);
|
||||||
#else
|
#else
|
||||||
hydra_targets[target_no]->pass_ptr = bf_next();
|
hydra_targets[target_no]->pass_ptr = bf_next(hydra_options.rainy);
|
||||||
if (debug)
|
if (debug)
|
||||||
printf("[DEBUG] bfg new password for next child: %s\n", hydra_targets[target_no]->pass_ptr);
|
printf("[DEBUG] bfg new password for next child: %s\n", hydra_targets[target_no]->pass_ptr);
|
||||||
#endif
|
#endif
|
||||||
|
@ -2229,7 +2231,7 @@ int main(int argc, char *argv[]) {
|
||||||
help(1);
|
help(1);
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
help(0);
|
help(0);
|
||||||
while ((i = getopt(argc, argv, "hIq64Rde:vVl:fFg:L:p:OP:o:b:M:C:t:T:m:w:W:s:SUux:yc:K")) >= 0) {
|
while ((i = getopt(argc, argv, "hIq64Rrde:vVl:fFg:L:p:OP:o:b:M:C:t:T:m:w:W:s:SUux:yc:K")) >= 0) {
|
||||||
switch (i) {
|
switch (i) {
|
||||||
case 'h':
|
case 'h':
|
||||||
help(1);
|
help(1);
|
||||||
|
@ -2256,6 +2258,9 @@ int main(int argc, char *argv[]) {
|
||||||
hydra_options.restore = 1;
|
hydra_options.restore = 1;
|
||||||
hydra_restore_read();
|
hydra_restore_read();
|
||||||
break;
|
break;
|
||||||
|
case 'r':
|
||||||
|
hydra_options.rainy = true;
|
||||||
|
break;
|
||||||
case 'I':
|
case 'I':
|
||||||
ignore_restore = 1; // this is not to be saved in hydra_options!
|
ignore_restore = 1; // this is not to be saved in hydra_options!
|
||||||
break;
|
break;
|
||||||
|
@ -3267,7 +3272,7 @@ int main(int argc, char *argv[]) {
|
||||||
#ifdef HAVE_MATH_H
|
#ifdef HAVE_MATH_H
|
||||||
if (bf_init(bf_options.arg))
|
if (bf_init(bf_options.arg))
|
||||||
exit(-1); // error description is handled by bf_init
|
exit(-1); // error description is handled by bf_init
|
||||||
pass_ptr = bf_next();
|
pass_ptr = bf_next(hydra_options.rainy);
|
||||||
hydra_brains.countpass += bf_get_pcount();
|
hydra_brains.countpass += bf_get_pcount();
|
||||||
hydra_brains.sizepass += BF_BUFLEN;
|
hydra_brains.sizepass += BF_BUFLEN;
|
||||||
#else
|
#else
|
||||||
|
|
1
hydra.h
1
hydra.h
|
@ -221,6 +221,7 @@ typedef struct {
|
||||||
char *service;
|
char *service;
|
||||||
char bfg;
|
char bfg;
|
||||||
int32_t skip_redo;
|
int32_t skip_redo;
|
||||||
|
_Bool rainy;
|
||||||
} hydra_option;
|
} hydra_option;
|
||||||
|
|
||||||
#define _HYDRA_H
|
#define _HYDRA_H
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue