mirror of
https://github.com/vanhauser-thc/thc-hydra.git
synced 2025-07-05 20:41:39 -07:00
rtsp
This commit is contained in:
parent
08fedd8583
commit
b6f3e73b65
5 changed files with 4231 additions and 4068 deletions
|
@ -16,7 +16,7 @@ SRC = hydra-vnc.c hydra-pcnfs.c hydra-rexec.c hydra-nntp.c hydra-socks5.c \
|
|||
hydra-oracle.c hydra-vmauthd.c hydra-asterisk.c hydra-firebird.c hydra-afp.c hydra-ncp.c \
|
||||
hydra-oracle-sid.c hydra-http-proxy.c hydra-http-form.c hydra-irc.c \
|
||||
hydra-rdp.c hydra-s7-300.c hydra-redis.c \
|
||||
crc32.c d3des.c bfg.c ntlm.c sasl.c hmacmd5.c hydra-mod.c
|
||||
crc32.c d3des.c bfg.c ntlm.c sasl.c hmacmd5.c hydra-mod.c hydra-rtsp.c
|
||||
OBJ = hydra-vnc.o hydra-pcnfs.o hydra-rexec.o hydra-nntp.o hydra-socks5.o \
|
||||
hydra-telnet.o hydra-cisco.o hydra-http.o hydra-ftp.o hydra-imap.o \
|
||||
hydra-pop3.o hydra-smb.o hydra-icq.o hydra-cisco-enable.o hydra-ldap.o \
|
||||
|
@ -27,7 +27,7 @@ OBJ = hydra-vnc.o hydra-pcnfs.o hydra-rexec.o hydra-nntp.o hydra-socks5.o \
|
|||
hydra-oracle-sid.o hydra-oracle.o hydra-vmauthd.o hydra-asterisk.o hydra-firebird.o hydra-afp.o hydra-ncp.o \
|
||||
hydra-http-proxy.o hydra-http-form.o hydra-irc.o hydra-redis.o \
|
||||
hydra-rdp.o hydra-s7-300.c \
|
||||
crc32.o d3des.o bfg.o ntlm.o sasl.o hmacmd5.o hydra-mod.o
|
||||
crc32.o d3des.o bfg.o ntlm.o sasl.o hmacmd5.o hydra-mod.o hydra-rtsp.o
|
||||
BINS = hydra pw-inspector
|
||||
|
||||
EXTRA_DIST = README README.arm README.palm CHANGES TODO INSTALL LICENSE \
|
||||
|
|
247
hydra-rtsp.c
Normal file
247
hydra-rtsp.c
Normal file
|
@ -0,0 +1,247 @@
|
|||
//
|
||||
// hydra-rtsp.c
|
||||
// hydra-rtsp
|
||||
//
|
||||
// Created by Javier Sánchez on 18/04/15.
|
||||
//
|
||||
//
|
||||
|
||||
#include <stdio.h>
|
||||
#include "hydra-mod.h"
|
||||
#include <string.h>
|
||||
#include "sasl.h"
|
||||
|
||||
extern char *HYDRA_EXIT;
|
||||
char *buf;
|
||||
char packet[500];
|
||||
char packet2[500];
|
||||
|
||||
int is_Unauthorized(char * s){
|
||||
|
||||
if (strstr(s,"401 Unauthorized")!= NULL){
|
||||
return 1;
|
||||
}else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int is_NotFound(char * s){
|
||||
|
||||
if (strstr(s,"404 Stream Not Found")!= NULL){
|
||||
return 1;
|
||||
}else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int is_Authorized(char * s){
|
||||
|
||||
if (strstr(s,"200 OK")!= NULL){
|
||||
return 1;
|
||||
}else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int use_Basic_Auth(char * s){
|
||||
|
||||
if(strstr(s,"WWW-Authenticate: Basic")!=NULL){
|
||||
return 1;
|
||||
}else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int use_Digest_Auth(char * s){
|
||||
|
||||
if(strstr(s,"WWW-Authenticate: Digest")!=NULL){
|
||||
return 1;
|
||||
}else{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void create_core_packet(int control,char* ip, int port){
|
||||
|
||||
char buffer[500];
|
||||
char * target=hydra_address2string(ip);
|
||||
if (control==0){
|
||||
if (strlen(packet) <= 0){
|
||||
sprintf(packet, "DESCRIBE rtsp://%s:%i RTSP/1.0\r\nCSeq: 2\r\n\r\n",target,port);
|
||||
|
||||
}
|
||||
}else{
|
||||
if (strlen(packet2) <= 0){
|
||||
sprintf(packet2, "DESCRIBE rtsp://%s:%i RTSP/1.0\r\nCSeq: 3\r\n",target,port);
|
||||
}
|
||||
}
|
||||
}
|
||||
int start_rtsp(int s, char *ip, int port, unsigned char options, char *miscptr, FILE * fp)
|
||||
{
|
||||
char *empty = "";
|
||||
char *login, *pass, buffer[500],buffer2[500];
|
||||
|
||||
char * lresp;
|
||||
|
||||
if (strlen(login = hydra_get_next_login()) == 0)
|
||||
login = empty;
|
||||
if (strlen(pass = hydra_get_next_password()) == 0)
|
||||
pass = empty;
|
||||
|
||||
|
||||
create_core_packet(0,ip,port);
|
||||
|
||||
if (hydra_send(s, packet, strlen(packet), 0) < 0) {
|
||||
return 1;
|
||||
}
|
||||
lresp = hydra_receive_line(s);
|
||||
|
||||
if (lresp == NULL){
|
||||
printf("null");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (is_NotFound(lresp)){
|
||||
printf("Server dont need credentials\r\n");
|
||||
hydra_completed_pair_found();
|
||||
if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0){
|
||||
return 3;
|
||||
}
|
||||
return 1;
|
||||
} else {
|
||||
|
||||
create_core_packet(1,ip, port);
|
||||
|
||||
if (use_Basic_Auth(lresp)==1) {
|
||||
|
||||
sprintf(buffer2,"%s:%s",login,pass);
|
||||
hydra_tobase64((unsigned char *) buffer2, strlen(buffer2), sizeof(buffer2));
|
||||
|
||||
sprintf(buffer, "%sAuthorization: : Basic %s\r\n\r\n",packet2,buffer2);
|
||||
|
||||
if (debug){
|
||||
hydra_report(stderr, "C:%s\n", buffer);
|
||||
}
|
||||
}
|
||||
|
||||
if(use_Digest_Auth(lresp)==1){
|
||||
|
||||
char dbuffer[500];
|
||||
char aux[500];
|
||||
|
||||
|
||||
char *pbuffer = hydra_strcasestr(lresp,"WWW-Authenticate: Digest ");
|
||||
strncpy(aux,pbuffer + strlen("WWW-Authenticate: Digest "), sizeof(buffer));
|
||||
aux[sizeof(aux)-1]='\0';
|
||||
|
||||
#ifdef LIBOPENSSL
|
||||
|
||||
sasl_digest_md5(&dbuffer, login, pass, aux, miscptr, "rtsp", hydra_address2string(ip), port, "");
|
||||
#endif
|
||||
|
||||
if (dbuffer==NULL) {
|
||||
printf("digest fail, dbuffer null\r\n");
|
||||
return 3;
|
||||
}
|
||||
sprintf(buffer, "%sAuthorization: Digest %s\r\n\r\n", packet2, dbuffer);
|
||||
|
||||
if (debug){
|
||||
hydra_report(stderr, "C:%s\n", buffer);
|
||||
}
|
||||
}
|
||||
|
||||
if (hydra_send(s, buffer, strlen(buffer), 0) < 0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
lresp = NULL;
|
||||
|
||||
lresp = hydra_receive_line(s);
|
||||
|
||||
if ((is_NotFound(lresp))){
|
||||
|
||||
hydra_completed_pair_found();
|
||||
|
||||
if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0){
|
||||
return 3;
|
||||
}
|
||||
return 1;
|
||||
|
||||
|
||||
}
|
||||
hydra_completed_pair();
|
||||
}
|
||||
|
||||
if(memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
|
||||
return 3;
|
||||
|
||||
//not rechead
|
||||
return 2;
|
||||
}
|
||||
|
||||
void service_rtsp(char *ip, int sp, unsigned char options, char *miscptr, FILE * fp, int port) {
|
||||
int run = 1, next_run = 1, sock = -1;
|
||||
int myport = PORT_RTSP, mysslport = PORT_RTSP_SSL;
|
||||
char *ptr, *ptr2;
|
||||
|
||||
hydra_register_socket(sp);
|
||||
|
||||
if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
|
||||
return;
|
||||
|
||||
while (1) {
|
||||
|
||||
switch (run) {
|
||||
case 1: /* connect and service init function */
|
||||
if (sock >= 0){
|
||||
sock = hydra_disconnect(sock);
|
||||
}
|
||||
if ((options & OPTION_SSL) == 0) {
|
||||
if (port != 0){
|
||||
myport = port;
|
||||
}
|
||||
sock = hydra_connect_tcp(ip, myport);
|
||||
port = myport;
|
||||
}
|
||||
if (sock < 0) {
|
||||
if (verbose || debug)
|
||||
hydra_report(stderr, "[ERROR] Child with pid %d terminating, can not connect\n", (int) getpid());
|
||||
hydra_child_exit(1);
|
||||
}
|
||||
|
||||
next_run=2;
|
||||
break;
|
||||
case 2: /* run the cracking function */
|
||||
next_run = start_rtsp(sock, ip, port, options, miscptr, fp);
|
||||
break;
|
||||
case 3: /* clean exit */
|
||||
if (sock >= 0) {
|
||||
sock = hydra_disconnect(sock);
|
||||
}
|
||||
hydra_child_exit(0);
|
||||
printf("end");
|
||||
return;
|
||||
break;
|
||||
default:
|
||||
hydra_report(stderr, "[ERROR] Caught unknown return code, exiting!\n");
|
||||
hydra_child_exit(0);
|
||||
}
|
||||
run = next_run;
|
||||
}
|
||||
}
|
||||
|
||||
int service_rtsp_init(char *ip, int sp, unsigned char options, char *miscptr, FILE * fp, int port) {
|
||||
// called before the childrens are forked off, so this is the function
|
||||
// which should be filled if initial connections and service setup has to be
|
||||
// performed once only.
|
||||
//
|
||||
// fill if needed.
|
||||
//
|
||||
// return codes:
|
||||
// 0 all OK
|
||||
// -1 error, hydra will exit, so print a good error message here
|
||||
return 0;
|
||||
}
|
||||
|
74
hydra.c
74
hydra.c
|
@ -51,6 +51,10 @@ extern void service_s7_300(char *ip, int sp, unsigned char options, char *miscpt
|
|||
|
||||
// ADD NEW SERVICES HERE
|
||||
|
||||
extern void service_rtsp(char *ip, int sp, unsigned char options, char *miscptr, FILE * fp, int port);
|
||||
|
||||
// ADD NEW SERVICES HERE
|
||||
|
||||
#ifdef HAVE_MATH_H
|
||||
extern void service_mysql(char *ip, int sp, unsigned char options, char *miscptr, FILE * fp, int port);
|
||||
extern int service_mysql_init(char *ip, int sp, unsigned char options, char *miscptr, FILE * fp, int port);
|
||||
|
@ -137,10 +141,11 @@ extern int service_s7_300_init(char *ip, int sp, unsigned char options, char *mi
|
|||
|
||||
// ADD NEW SERVICES HERE
|
||||
|
||||
extern int service_rtsp_init(char *ip, int sp, unsigned char options, char *miscptr, FILE * fp, int port);
|
||||
|
||||
// ADD NEW SERVICES HERE
|
||||
char *SERVICES =
|
||||
"asterisk afp cisco cisco-enable cvs firebird ftp ftps http[s]-{head|get} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] mssql mysql ncp nntp oracle oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres rdp redis rexec rlogin rsh s7-300 sapr3 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp";
|
||||
"asterisk afp cisco cisco-enable cvs firebird ftp ftps http[s]-{head|get} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] mssql mysql ncp nntp oracle oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres rdp redis rexec rlogin rsh s7-300 sapr3 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp rtsp";
|
||||
|
||||
#define MAXBUF 520
|
||||
#define MAXLINESIZE ( ( MAXBUF / 2 ) - 4 )
|
||||
|
@ -208,7 +213,7 @@ typedef struct {
|
|||
char *redo_login[MAXTASKS * 2 + 2];
|
||||
char *redo_pass[MAXTASKS * 2 + 2];
|
||||
char *skiplogin[SKIPLOGIN];
|
||||
// char *bfg_ptr[MAXTASKS];
|
||||
// char *bfg_ptr[MAXTASKS];
|
||||
} hydra_target;
|
||||
|
||||
typedef struct {
|
||||
|
@ -914,7 +919,7 @@ void hydra_restore_read() {
|
|||
if (hydra_heads[j]->redo) {
|
||||
if (out[0] != 0 && out[strlen(out) - 1] == '\n')
|
||||
out[strlen(out) - 1] = 0;
|
||||
if (debug) printf("[DEBUG] TEMP head %d: out[0] == %d, hydra_heads[j]->current_login_ptr[0] == %d\n", j, out[0], hydra_heads[j]->current_login_ptr[0]);
|
||||
if (debug) printf("[DEBUG] TEMP head %d: out[0] == %d, hydra_heads[j]->current_login_ptr[0] == %d\n", j, out[0], hydra_heads[j]->current_login_ptr[0]);
|
||||
if (out[0] != 0 || hydra_heads[j]->current_login_ptr[0] != 0) {
|
||||
hydra_heads[j]->current_pass_ptr = malloc(strlen(out) + 1);
|
||||
strcpy(hydra_heads[j]->current_pass_ptr, out);
|
||||
|
@ -1030,14 +1035,14 @@ void fill_mem(char *ptr, FILE * fp, int colonmode) {
|
|||
fprintf(stderr, "[ERROR] invalid line in colon file (-C), missing colon in line: %s\n", tmp);
|
||||
exit(-1);
|
||||
} else {
|
||||
// if (tmp[0] == ':') {
|
||||
// *ptr = 0;
|
||||
// ptr++;
|
||||
// }
|
||||
// if (tmp[len - 1] == ':' && len > 1) {
|
||||
// len++;
|
||||
// tmp[len - 1] = 0;
|
||||
// }
|
||||
// if (tmp[0] == ':') {
|
||||
// *ptr = 0;
|
||||
// ptr++;
|
||||
// }
|
||||
// if (tmp[len - 1] == ':' && len > 1) {
|
||||
// len++;
|
||||
// tmp[len - 1] = 0;
|
||||
// }
|
||||
*ptr2 = 0;
|
||||
}
|
||||
}
|
||||
|
@ -1180,7 +1185,10 @@ void hydra_service_init(int target_no) {
|
|||
x = service_xmpp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port);
|
||||
if (strcmp(hydra_options.service, "s7-300") == 0)
|
||||
x = service_s7_300_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port);
|
||||
// ADD NEW SERVICES HERE
|
||||
// ADD NEW SERVICES HERE
|
||||
|
||||
if (strcmp(hydra_options.service, "rtsp") == 0)
|
||||
x = service_rtsp_init(hydra_targets[target_no]->ip, -1, options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port);
|
||||
|
||||
if (x != 0 && x != 99) {
|
||||
if (x > 0 && x < 4)
|
||||
|
@ -1237,7 +1245,7 @@ int hydra_spawn_head(int head_no, int target_no) {
|
|||
free(pass_ptr);
|
||||
if (hydra_options.colonfile != NULL && hydra_options.colonfile != empty_login)
|
||||
free(csv_ptr);
|
||||
// we must keep servers_ptr for cmdlinetarget to work
|
||||
// we must keep servers_ptr for cmdlinetarget to work
|
||||
if (debug)
|
||||
printf("[DEBUG] head_no %d has pid %d\n", head_no, getpid());
|
||||
|
||||
|
@ -1246,8 +1254,11 @@ int hydra_spawn_head(int head_no, int target_no) {
|
|||
service_asterisk(hydra_targets[target_no]->ip, hydra_heads[head_no]->sp[1], options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port);
|
||||
if (strcmp(hydra_options.service, "telnet") == 0)
|
||||
service_telnet(hydra_targets[target_no]->ip, hydra_heads[head_no]->sp[1], options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port);
|
||||
if (strcmp(hydra_options.service, "ftp") == 0)
|
||||
if (strcmp(hydra_options.service, "ftp") == 0){
|
||||
|
||||
service_ftp(hydra_targets[target_no]->ip, hydra_heads[head_no]->sp[1], options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port);
|
||||
|
||||
}
|
||||
if (strcmp(hydra_options.service, "ftps") == 0)
|
||||
service_ftps(hydra_targets[target_no]->ip, hydra_heads[head_no]->sp[1], options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port);
|
||||
if (strcmp(hydra_options.service, "redis") == 0)
|
||||
|
@ -1375,8 +1386,12 @@ int hydra_spawn_head(int head_no, int target_no) {
|
|||
#endif
|
||||
if (strcmp(hydra_options.service, "s7-300") == 0)
|
||||
service_s7_300(hydra_targets[target_no]->ip, hydra_heads[head_no]->sp[1], options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port);
|
||||
// ADD NEW SERVICES HERE
|
||||
// ADD NEW SERVICES HERE
|
||||
|
||||
if (strcmp(hydra_options.service, "rtsp") == 0){
|
||||
|
||||
service_rtsp(hydra_targets[target_no]->ip, hydra_heads[head_no]->sp[1], options, hydra_options.miscptr, hydra_brains.ofp, hydra_targets[target_no]->port);
|
||||
}
|
||||
// just in case a module returns (which it shouldnt) we let it exit here
|
||||
exit(-1);
|
||||
} else {
|
||||
|
@ -1470,7 +1485,8 @@ int hydra_lookup_port(char *service) {
|
|||
{"rdp", PORT_RDP, PORT_RDP_SSL},
|
||||
{"asterisk", PORT_ASTERISK, PORT_ASTERISK_SSL},
|
||||
{"s7-300", PORT_S7_300, PORT_S7_300_SSL},
|
||||
// ADD NEW SERVICES HERE - add new port numbers to hydra.h
|
||||
// ADD NEW SERVICES HERE - add new port numbers to hydra.h
|
||||
{"rtsp", PORT_RTSP, PORT_RTSP_SSL},
|
||||
{"", PORT_NOPORT, PORT_NOPORT}
|
||||
};
|
||||
|
||||
|
@ -1527,8 +1543,8 @@ void hydra_kill_head(int head_no, int killit, int fail) {
|
|||
&& strlen(hydra_heads[head_no]->current_pass_ptr) > 0 && hydra_heads[head_no]->current_pass_ptr != hydra_heads[head_no]->current_login_ptr) {
|
||||
free(hydra_heads[head_no]->current_pass_ptr);
|
||||
hydra_heads[head_no]->current_pass_ptr = empty_login;
|
||||
// hydra_bfg_remove(head_no);
|
||||
// hydra_targets[hydra_heads[head_no]->target_no]->bfg_ptr[head_no] = NULL;
|
||||
// hydra_bfg_remove(head_no);
|
||||
// hydra_targets[hydra_heads[head_no]->target_no]->bfg_ptr[head_no] = NULL;
|
||||
}
|
||||
(void) wait3(NULL, WNOHANG, NULL);
|
||||
}
|
||||
|
@ -2267,7 +2283,7 @@ int main(int argc, char *argv[]) {
|
|||
break;
|
||||
case 'o':
|
||||
hydra_options.outfile_ptr = optarg;
|
||||
// colored_output = 0;
|
||||
// colored_output = 0;
|
||||
break;
|
||||
case 'M':
|
||||
hydra_options.infile_ptr = optarg;
|
||||
|
@ -2439,7 +2455,7 @@ int main(int argc, char *argv[]) {
|
|||
*--param_pos = '/';
|
||||
hydra_options.miscptr = param_pos;
|
||||
}
|
||||
//printf("target: %s service: %s port: %s opt: %s\n", target_pos, hydra_options.service, port_pos, param_pos);
|
||||
//printf("target: %s service: %s port: %s opt: %s\n", target_pos, hydra_options.service, port_pos, param_pos);
|
||||
if (debug)
|
||||
printf("[DEBUG] opt:%d argc:%d mod:%s tgt:%s port:%d misc:%s\n", optind, argc, hydra_options.service, hydra_options.server, hydra_options.port, hydra_options.miscptr);
|
||||
} else {
|
||||
|
@ -2796,7 +2812,9 @@ int main(int argc, char *argv[]) {
|
|||
if (hydra_options.miscptr == NULL)
|
||||
bail("-m option is required to specify the DN\n");
|
||||
}
|
||||
// ADD NEW SERVICES HERE
|
||||
// ADD NEW SERVICES HERE
|
||||
if (strcmp(hydra_options.service, "rtsp") == 0)
|
||||
i = 1;
|
||||
if (strcmp(hydra_options.service, "s7-300") == 0) {
|
||||
if (hydra_options.tasks > 8) {
|
||||
fprintf(stderr, "[INFO] Reduced number of tasks to 8 (the PLC does not like more connections)\n");
|
||||
|
@ -3132,8 +3150,8 @@ int main(int argc, char *argv[]) {
|
|||
bail("Could not allocate enough memory for colon file data");
|
||||
memset(csv_ptr, 0, hydra_brains.sizelogin + 2 * hydra_brains.countlogin + 8);
|
||||
fill_mem(csv_ptr, cfp, 1);
|
||||
//printf("count: %d, size: %d\n", hydra_brains.countlogin, hydra_brains.sizelogin);
|
||||
//hydra_dump_data(csv_ptr, hydra_brains.sizelogin + hydra_brains.countlogin + 8, "colon data");
|
||||
//printf("count: %d, size: %d\n", hydra_brains.countlogin, hydra_brains.sizelogin);
|
||||
//hydra_dump_data(csv_ptr, hydra_brains.sizelogin + hydra_brains.countlogin + 8, "colon data");
|
||||
hydra_brains.countpass = 1;
|
||||
pass_ptr = login_ptr = csv_ptr;
|
||||
while (*pass_ptr != 0)
|
||||
|
@ -3163,7 +3181,7 @@ int main(int argc, char *argv[]) {
|
|||
fprintf(stderr, "[ERROR] File for targets is empty: %s", hydra_options.infile_ptr);
|
||||
exit(-1);
|
||||
}
|
||||
// if (countinfile > 60) fprintf(stderr, "[WARNING] the -M option is not working correctly at the moment for target lists > 60!\n");
|
||||
// if (countinfile > 60) fprintf(stderr, "[WARNING] the -M option is not working correctly at the moment for target lists > 60!\n");
|
||||
hydra_targets = malloc(sizeof(hydra_targets) * (countservers + 2) + 8);
|
||||
if (hydra_targets == NULL)
|
||||
bail("Could not allocate enough memory for target data");
|
||||
|
@ -3408,9 +3426,9 @@ int main(int argc, char *argv[]) {
|
|||
hydra_options.tasks = MAXTASKS;
|
||||
}
|
||||
}
|
||||
// hydra_options.max_use = hydra_brains.targets * hydra_options.tasks;
|
||||
// if (hydra_options.max_use > MAXTASKS)
|
||||
// hydra_options.max_use = MAXTASKS;
|
||||
// hydra_options.max_use = hydra_brains.targets * hydra_options.tasks;
|
||||
// if (hydra_options.max_use > MAXTASKS)
|
||||
// hydra_options.max_use = MAXTASKS;
|
||||
math2 = (hydra_brains.todo / hydra_options.tasks);
|
||||
if (hydra_brains.todo % hydra_options.tasks)
|
||||
math2++;
|
||||
|
@ -3550,7 +3568,7 @@ int main(int argc, char *argv[]) {
|
|||
// here we call the init function of the relevant service module
|
||||
// should we do the init centrally or should each child do that?
|
||||
// that depends largely on the number of targets and maximum tasks
|
||||
// if (hydra_brains.targets == 1 || (hydra_brains.targets < 4 && hydra_options.tasks / hydra_brains.targets > 4 && hydra_brains.todo > 15))
|
||||
// if (hydra_brains.targets == 1 || (hydra_brains.targets < 4 && hydra_options.tasks / hydra_brains.targets > 4 && hydra_brains.todo > 15))
|
||||
for (i = 0; i < hydra_brains.targets; i++)
|
||||
hydra_service_init(i);
|
||||
|
||||
|
|
2
hydra.h
2
hydra.h
|
@ -118,6 +118,8 @@
|
|||
#define PORT_S7_300_SSL 102
|
||||
#define PORT_REDIS 6379
|
||||
#define PORT_REDIS_SSL 6379
|
||||
#define PORT_RTSP 554
|
||||
#define PORT_RTSP_SSL 554
|
||||
|
||||
#define False 0
|
||||
#define True 1
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue