1 #ifndef _HYDRA_H 2 3 #include <stdio.h> 4 #ifdef __sun 5 #include <sys/int_types.h> 6 #elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX) || defined(__APPLE__) 7 #include <inttypes.h> 8 #else 9 #include <stdint.h> 10 #endif 11 12 #if defined(_INTTYPES_H) || defined(__CLANG_INTTYPES_H) 13 #define hPRIu64 PRIu64 14 #else 15 #define hPRIu64 "lu" 16 #endif 17 18 #include <arpa/inet.h> 19 #include <ctype.h> 20 #include <errno.h> 21 #include <fcntl.h> 22 #include <netdb.h> 23 #include <netinet/in.h> 24 #include <signal.h> 25 #include <stdarg.h> 26 #include <stdlib.h> 27 #include <string.h> 28 #include <strings.h> 29 #include <sys/resource.h> 30 #include <sys/socket.h> 31 #include <sys/stat.h> 32 #include <sys/time.h> 33 #include <sys/types.h> 34 #include <sys/wait.h> 35 #include <time.h> 36 #include <unistd.h> 37 38 #ifdef HAVE_OPENSSL 39 #define HYDRA_SSL 40 #endif 41 #ifdef HAVE_SSL 42 #ifndef HYDRA_SSL 43 #define HYDRA_SSL 44 #endif 45 #endif 46 47 #ifdef HAVE_ZLIB 48 #include <zlib.h> 49 #endif 50 51 #define OPTION_SSL 1 52 53 #ifdef LIBOPENSSL 54 #ifndef NO_RSA_LEGACY 55 #if OPENSSL_VERSION_NUMBER >= 0x10100000L 56 #define NO_RSA_LEGACY 57 #endif 58 #endif 59 #endif 60 61 #define PORT_NOPORT -1 62 #define PORT_FTP 21 63 #define PORT_FTP_SSL 990 64 #define PORT_TELNET 23 65 #define PORT_TELNET_SSL 992 66 #define PORT_HTTP 80 67 #define PORT_HTTP_SSL 443 68 #define PORT_HTTP_PROXY 3128 69 #define PORT_HTTP_PROXY_SSL 3128 70 #define PORT_POP3 110 71 #define PORT_POP3_SSL 995 72 #define PORT_NNTP 119 73 #define PORT_NNTP_SSL 563 74 #define PORT_SMB 139 75 #define PORT_SMB_SSL 139 76 #define PORT_SMBNT 445 77 #define PORT_SMBNT_SSL 445 78 #define PORT_IMAP 143 79 #define PORT_IMAP_SSL 993 80 #define PORT_LDAP 389 81 #define PORT_LDAP_SSL 636 82 #define PORT_REXEC 512 83 #define PORT_REXEC_SSL 512 84 #define PORT_RLOGIN 513 85 #define PORT_RLOGIN_SSL 513 86 #define PORT_RSH 514 87 #define PORT_RSH_SSL 514 88 #define PORT_SOCKS5 1080 89 #define PORT_SOCKS5_SSL 1080 90 #define PORT_ICQ 4000 91 #define PORT_ICQ_SSL -1 92 #define PORT_VNC 5900 93 #define PORT_VNC_SSL 5901 94 #define PORT_PCNFS 0 95 #define PORT_PCNFS_SSL -1 96 #define PORT_MYSQL 3306 97 #define PORT_MYSQL_SSL 3306 98 #define PORT_MSSQL 1433 99 #define PORT_MSSQL_SSL 1433 100 #define PORT_POSTGRES 5432 101 #define PORT_POSTGRES_SSL 5432 102 #define PORT_ORACLE 1521 103 #define PORT_ORACLE_SSL 1521 104 #define PORT_PCANYWHERE 5631 105 #define PORT_PCANYWHERE_SSL 5631 106 #define PORT_ADAM6500 502 107 #define PORT_ADAM6500_SSL 502 108 #define PORT_SAPR3 -1 109 #define PORT_SAPR3_SSL -1 110 #define PORT_SSH 22 111 #define PORT_SSH_SSL 22 112 #define PORT_SNMP 161 113 #define PORT_SNMP_SSL 1993 114 #define PORT_CVS 2401 115 #define PORT_CVS_SSL 2401 116 #define PORT_FIREBIRD 3050 117 #define PORT_FIREBIRD_SSL 3050 118 #define PORT_AFP 548 119 #define PORT_AFP_SSL 548 120 #define PORT_NCP 524 121 #define PORT_NCP_SSL 524 122 #define PORT_SVN 3690 123 #define PORT_SVN_SSL 3690 124 #define PORT_SMTP 25 125 #define PORT_SMTP_SSL 465 126 #define PORT_TEAMSPEAK 8767 127 #define PORT_TEAMSPEAK_SSL 8767 128 #define PORT_SIP 5060 129 #define PORT_SIP_SSL 5061 130 #define PORT_VMAUTHD 902 131 #define PORT_VMAUTHD_SSL 902 132 #define PORT_XMPP 5222 133 #define PORT_XMPP_SSL 5223 134 #define PORT_IRC 6667 135 #define PORT_IRC_SSL 6697 136 #define PORT_RDP 3389 137 #define PORT_RDP_SSL 3389 138 #define PORT_ASTERISK 5038 139 #define PORT_ASTERISK_SSL 5038 140 #define PORT_S7_300 102 141 #define PORT_S7_300_SSL 102 142 #define PORT_REDIS 6379 143 #define PORT_REDIS_SSL 6379 144 #define PORT_RTSP 554 145 #define PORT_RTSP_SSL 554 146 #define PORT_RPCAP 2002 147 #define PORT_RPCAP_SSL 2002 148 #define PORT_RADMIN2 4899 149 #define PORT_MCACHED 11211 150 #define PORT_MCACHED_SSL 11211 151 #define PORT_MONGODB 27017 152 153 #define False 0 154 #define True 1 155 156 #ifndef INET_ADDRSTRLEN 157 #define INET_ADDRSTRLEN 16 158 #endif 159 160 #define MAX_PROXY_COUNT 64 161 162 #ifndef _WIN32 163 int32_t sleepn(time_t seconds); 164 int32_t usleepn(uint64_t useconds); 165 #else 166 int32_t sleepn(uint32_t seconds); 167 int32_t usleepn(uint32_t useconds); 168 #endif 169 170 typedef enum { MODE_PASSWORD_LIST = 1, MODE_LOGIN_LIST = 2, MODE_PASSWORD_BRUTE = 4, MODE_PASSWORD_REVERSE = 8, MODE_PASSWORD_NULL = 16, MODE_PASSWORD_SAME = 32, MODE_COLON_FILE = 64 } hydra_mode_t; 171 172 typedef enum { FORMAT_PLAIN_TEXT, FORMAT_JSONV1, FORMAT_JSONV2, FORMAT_XMLV1 } output_format_t; 173 174 typedef struct { 175 hydra_mode_t mode; 176 int32_t loop_mode; // valid modes: 0 = password, 1 = user 177 int32_t ssl; 178 int32_t restore; 179 int32_t debug; // is external - for restore 180 int32_t verbose; // is external - for restore 181 int32_t showAttempt; 182 int32_t tasks; 183 int32_t try_null_password; 184 int32_t try_password_same_as_login; 185 int32_t try_password_reverse_login; 186 int32_t exit_found; 187 int32_t max_use; 188 int32_t cidr; 189 int32_t time_next_attempt; 190 output_format_t outfile_format; 191 char *login; 192 char *loginfile; 193 char *pass; 194 char *passfile; 195 char *outfile_ptr; 196 char *infile_ptr; 197 char *colonfile; 198 int32_t waittime; // is external - for restore 199 int32_t conwait; // is external - for restore 200 uint32_t port; // is external - for restore 201 char *miscptr; 202 char *server; 203 char *service; 204 char bfg; 205 int32_t skip_redo; 206 } hydra_option; 207 208 #define _HYDRA_H 209 #endif 210